From d65c83bee4a883a6438b53583e64db9dfd57237a Mon Sep 17 00:00:00 2001 From: drdev Date: Tue, 22 Jul 2014 04:40:21 +0000 Subject: [PATCH] Simplify filters for ItemManager --- .../src/forge/deck/FDeckEditor.java | 12 +- .../src/forge/deck/FVanguardChooser.java | 1 - .../src/forge/itemmanager/CardManager.java | 7 +- .../src/forge/itemmanager/DeckManager.java | 4 +- .../src/forge/itemmanager/ItemManager.java | 184 ++++-------------- .../forge/itemmanager/SpellShopManager.java | 4 +- .../itemmanager/filters/CardSearchFilter.java | 84 +------- .../itemmanager/filters/DeckColorFilter.java | 16 -- .../filters/DeckStatTypeFilter.java | 21 -- .../forge/itemmanager/filters/ItemFilter.java | 2 - .../itemmanager/filters/StatTypeFilter.java | 24 --- .../itemmanager/filters/TextSearchFilter.java | 42 +++- .../forge/itemmanager/views/ImageView.java | 2 +- .../forge/itemmanager/views/ItemListView.java | 59 ------ 14 files changed, 85 insertions(+), 377 deletions(-) diff --git a/forge-gui-mobile/src/forge/deck/FDeckEditor.java b/forge-gui-mobile/src/forge/deck/FDeckEditor.java index 24c41bb275a..ac7c93c6a58 100644 --- a/forge-gui-mobile/src/forge/deck/FDeckEditor.java +++ b/forge-gui-mobile/src/forge/deck/FDeckEditor.java @@ -681,11 +681,6 @@ public class FDeckEditor extends TabPageScreen { } protected CatalogPage(ItemManagerConfig config, String caption0, FImage icon0) { super(config, caption0, icon0); - - if (config == ItemManagerConfig.PLANAR_POOL || config == ItemManagerConfig.SCHEME_POOL) { - //prevent showing image view options for planar and scheme pools by default - cardManager.setHideViewOptions(1, true); - } } @Override @@ -834,25 +829,21 @@ public class FDeckEditor extends TabPageScreen { captionPrefix = "Commander"; cardManager.setCaption("Commander"); icon = FSkinImage.PLANESWALKER; - cardManager.setHideViewOptions(1, true); //image view options not needed break; case Avatar: captionPrefix = "Avatar"; cardManager.setCaption("Avatar"); icon = new FTextureRegionImage(FSkin.getAvatars().get(0)); - cardManager.setHideViewOptions(1, true); //image view options not needed break; case Planes: captionPrefix = "Planes"; cardManager.setCaption("Planes"); icon = FSkinImage.CHAOS; - cardManager.setHideViewOptions(1, true); //image view options not needed break; case Schemes: captionPrefix = "Schemes"; cardManager.setCaption("Schemes"); icon = FSkinImage.POISON; - cardManager.setHideViewOptions(1, true); //image view options not needed break; } } @@ -905,6 +896,7 @@ public class FDeckEditor extends TabPageScreen { @Override protected void buildMenu(final FDropDownMenu menu, final PaperCard card) { switch (deckSection) { + default: case Main: addItem(menu, "Add", null, FSkinImage.PLUS, true, false, new Callback() { @Override @@ -1057,8 +1049,6 @@ public class FDeckEditor extends TabPageScreen { protected DraftPackPage() { super(ItemManagerConfig.DRAFT_PACK, "Pack 1", FSkinImage.PACK); - //hide filters and options panel so more of pack is visible by default - cardManager.setHideViewOptions(1, true); cardManager.setAlwaysNonUnique(true); } diff --git a/forge-gui-mobile/src/forge/deck/FVanguardChooser.java b/forge-gui-mobile/src/forge/deck/FVanguardChooser.java index bc6e08c30a5..e81baee89b1 100644 --- a/forge-gui-mobile/src/forge/deck/FVanguardChooser.java +++ b/forge-gui-mobile/src/forge/deck/FVanguardChooser.java @@ -58,7 +58,6 @@ public class FVanguardChooser extends FScreen { } }); lstVanguards.setup(ItemManagerConfig.VANGUARDS); - lstVanguards.setHideViewOptions(1, true); lstVanguards.setPool(isAi ? allAiAvatars : allHumanAvatars, true); lstVanguards.setSelectionChangedHandler(selectionChangedHandler); selectRandom(); diff --git a/forge-gui-mobile/src/forge/itemmanager/CardManager.java b/forge-gui-mobile/src/forge/itemmanager/CardManager.java index 1d787680831..31bf5440ff2 100644 --- a/forge-gui-mobile/src/forge/itemmanager/CardManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/CardManager.java @@ -18,7 +18,7 @@ import forge.itemmanager.filters.CardSearchFilter; import forge.itemmanager.filters.CardSetFilter; import forge.itemmanager.filters.CardToughnessFilter; import forge.itemmanager.filters.CardTypeFilter; -import forge.itemmanager.filters.ItemFilter; +import forge.itemmanager.filters.TextSearchFilter; import forge.menu.FMenuItem; import forge.menu.FPopupMenu; import forge.menu.FSubMenu; @@ -41,7 +41,7 @@ public class CardManager extends ItemManager { } @Override - protected ItemFilter createSearchFilter() { + protected TextSearchFilter createSearchFilter() { return createSearchFilter(this); } @@ -55,10 +55,9 @@ public class CardManager extends ItemManager { public static void addDefaultFilters(final ItemManager itemManager) { itemManager.addFilter(new CardColorFilter(itemManager)); itemManager.addFilter(new CardTypeFilter(itemManager)); - itemManager.addFilter(new CardCMCFilter(itemManager)); } - public static ItemFilter createSearchFilter(final ItemManager itemManager) { + public static TextSearchFilter createSearchFilter(final ItemManager itemManager) { return new CardSearchFilter(itemManager); } diff --git a/forge-gui-mobile/src/forge/itemmanager/DeckManager.java b/forge-gui-mobile/src/forge/itemmanager/DeckManager.java index cd256756e32..a0fe04d4d88 100644 --- a/forge-gui-mobile/src/forge/itemmanager/DeckManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/DeckManager.java @@ -17,7 +17,7 @@ import forge.itemmanager.filters.DeckFolderFilter; import forge.itemmanager.filters.DeckFormatFilter; import forge.itemmanager.filters.DeckSearchFilter; import forge.itemmanager.filters.DeckSetFilter; -import forge.itemmanager.filters.ItemFilter; +import forge.itemmanager.filters.TextSearchFilter; import forge.menu.FMenuItem; import forge.menu.FPopupMenu; import forge.menu.FSubMenu; @@ -94,7 +94,7 @@ public final class DeckManager extends ItemManager { } @Override - protected ItemFilter createSearchFilter() { + protected TextSearchFilter createSearchFilter() { return new DeckSearchFilter(this); } diff --git a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java index 08ccd3c46d4..b2aed781825 100644 --- a/forge-gui-mobile/src/forge/itemmanager/ItemManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/ItemManager.java @@ -30,13 +30,12 @@ import forge.assets.FSkinFont; import forge.assets.FSkinImage; import forge.item.InventoryItem; import forge.itemmanager.filters.ItemFilter; +import forge.itemmanager.filters.TextSearchFilter; import forge.itemmanager.views.ImageView; import forge.itemmanager.views.ItemListView; import forge.itemmanager.views.ItemView; import forge.menu.FDropDownMenu; -import forge.menu.FMenuItem; import forge.menu.FPopupMenu; -import forge.menu.FSubMenu; import forge.model.FModel; import forge.screens.FScreen; import forge.toolbox.FContainer; @@ -69,23 +68,12 @@ public abstract class ItemManager extends FContainer im private ContextMenu contextMenu; private final Class genericType; private ItemManagerConfig config; - private String caption = "Items"; - private String ratio = "(0 / 0)"; private boolean hasNewColumn; - private final ItemFilter mainSearchFilter; - - private final FLabel btnFilters = new FLabel.ButtonBuilder() - .text("Filters") - .build(); - - private final FLabel lblCaption = new FLabel.Builder() - .align(HAlignment.LEFT) - .font(FSkinFont.get(12)) - .build(); + private final TextSearchFilter mainSearchFilter; private static final FSkinImage VIEW_OPTIONS_ICON = FSkinImage.SETTINGS; - private final FLabel btnViewOptions = new FLabel.Builder() + private final FLabel btnAdvancedSearchOptions = new FLabel.Builder() .selectable(true).align(HAlignment.CENTER) .icon(VIEW_OPTIONS_ICON).iconScaleFactor(0.9f) .build(); @@ -125,81 +113,19 @@ public abstract class ItemManager extends FContainer im //build display add(mainSearchFilter.getPanel()); - add(btnFilters); - add(lblCaption); for (ItemView view : views) { add(view.getButton()); view.getButton().setSelected(view == currentView); } - add(btnViewOptions); - btnViewOptions.setSelected(currentView.getPnlOptions().isVisible()); + add(btnAdvancedSearchOptions); + btnAdvancedSearchOptions.setSelected(!hideFilters); add(currentView.getPnlOptions()); add(currentView.getScroller()); - final FEventHandler cmdAddCurrentSearch = new FEventHandler() { + btnAdvancedSearchOptions.setCommand(new FEventHandler() { @Override public void handleEvent(FEvent e) { - ItemFilter searchFilter = mainSearchFilter.createCopy(); - if (searchFilter != null) { - lockFiltering = true; //prevent updating filtering from this change - addFilter(searchFilter); - mainSearchFilter.reset(); - lockFiltering = false; - } - } - }; - final FEventHandler cmdResetFilters = new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - resetFilters(); - } - }; - final FEventHandler cmdHideFilters = new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - setHideFilters(!getHideFilters()); - } - }; - final FSubMenu addMenu = new FSubMenu("Add", new FPopupMenu() { - @Override - protected void buildMenu() { - FMenuItem currentTextSearch = new FMenuItem("Current text search", cmdAddCurrentSearch); - currentTextSearch.setEnabled(!mainSearchFilter.isEmpty()); - addItem(currentTextSearch); - - if (config != ItemManagerConfig.STRING_ONLY) { - buildAddFilterMenu(this); - } - } - }); - - //setup command for btnFilters - btnFilters.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - FPopupMenu menu = new FPopupMenu() { - @Override - protected void buildMenu() { - if (hideFilters) { - addItem(new FMenuItem("Show Filters", cmdHideFilters)); - } - else { - addItem(addMenu); - addItem(new FMenuItem("Reset Filters", cmdResetFilters)); - addItem(new FMenuItem("Hide Filters", cmdHideFilters)); - } - } - }; - - menu.show(btnFilters, 0, btnFilters.getHeight()); - } - }); - - btnViewOptions.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - currentView.getPnlOptions().setVisible(!currentView.getPnlOptions().isVisible()); - revalidate(); + setHideFilters(!hideFilters); } }); @@ -272,7 +198,6 @@ public abstract class ItemManager extends FContainer im currentView = view; - btnViewOptions.setSelected(view.getPnlOptions().isVisible()); view.getButton().setSelected(true); view.refresh(itemsToSelect, backupIndexToSelect, 0); @@ -281,40 +206,31 @@ public abstract class ItemManager extends FContainer im revalidate(); } - public void setHideViewOptions(int viewIndex, boolean hideViewOptions) { - if (viewIndex < 0 || viewIndex >= views.size()) { return; } - ItemView view = views.get(viewIndex); - view.getPnlOptions().setVisible(!hideViewOptions); - if (currentView == view) { - btnViewOptions.setSelected(!hideViewOptions); - } - } - @Override public void doLayout(float width, float height) { LayoutHelper helper = new LayoutHelper(this, ItemFilter.PADDING, 0); + float fieldHeight = mainSearchFilter.getMainComponent().getHeight(); + float viewButtonWidth = fieldHeight; + float viewButtonCount = views.size() + 1; + helper.fillLine(mainSearchFilter.getPanel(), ItemFilter.PANEL_HEIGHT, (viewButtonWidth + helper.getGapX()) * viewButtonCount); //leave room for view buttons + helper.offset(0, ItemFilter.PANEL_HEIGHT - fieldHeight); + for (ItemView view : views) { + helper.include(view.getButton(), viewButtonWidth, fieldHeight); + } + helper.include(btnAdvancedSearchOptions, viewButtonWidth, fieldHeight); if (!hideFilters) { for (ItemFilter filter : orderedFilters) { helper.fillLine(filter.getPanel(), ItemFilter.PANEL_HEIGHT); helper.newLine(); } - helper.fillLine(mainSearchFilter.getPanel(), ItemFilter.PANEL_HEIGHT); + if (currentView.getPnlOptions().getChildCount() > 0) { + helper.fillLine(currentView.getPnlOptions(), ItemFilter.PANEL_HEIGHT); + } + else { + helper.offset(0, -ItemFilter.PANEL_HEIGHT); //prevent showing whitespace for empty view options panel + } } helper.newLine(ItemFilter.PADDING); - float fieldHeight = mainSearchFilter.getMainComponent().getHeight(); - helper.include(btnFilters, btnFilters.getAutoSizeBounds().width * 1.2f, fieldHeight); - float viewButtonWidth = fieldHeight; - float viewButtonCount = views.size() + 1; - helper.fillLine(lblCaption, fieldHeight, (viewButtonWidth + helper.getGapX()) * viewButtonCount); //leave room for view buttons - for (ItemView view : views) { - helper.include(view.getButton(), viewButtonWidth, fieldHeight); - } - helper.include(btnViewOptions, viewButtonWidth, fieldHeight); - helper.newLine(Utils.scaleY(2)); - if (currentView.getPnlOptions().isVisible()) { - helper.fillLine(currentView.getPnlOptions(), fieldHeight + Utils.scaleY(4)); - helper.newLine(Utils.scaleY(3)); - } helper.fill(currentView.getScroller()); } @@ -335,7 +251,7 @@ public abstract class ItemManager extends FContainer im * @return caption to display before ratio */ public String getCaption() { - return caption; + return mainSearchFilter.getCaption(); } /** @@ -345,12 +261,7 @@ public abstract class ItemManager extends FContainer im * @param caption - caption to display before ratio */ public void setCaption(String caption0) { - caption = caption0; - updateCaptionLabel(); - } - - private void updateCaptionLabel() { - lblCaption.setText(caption + " " + ratio); + mainSearchFilter.setCaption(caption0); } /** @@ -704,7 +615,7 @@ public abstract class ItemManager extends FContainer im } protected abstract void addDefaultFilters(); - protected abstract ItemFilter createSearchFilter(); + protected abstract TextSearchFilter createSearchFilter(); protected abstract void buildAddFilterMenu(FPopupMenu menu); protected > F getFilter(Class filterClass) { @@ -745,14 +656,8 @@ public abstract class ItemManager extends FContainer im //apply filters and focus existing filter's main component if filtering not locked private void applyNewOrModifiedFilter(final ItemFilter filter) { - if (lockFiltering) { - filter.afterFiltersApplied(); //ensure this called even if filters currently locked - return; - } - - if (!applyFilters()) { - filter.afterFiltersApplied(); //ensure this called even if filters didn't need to be updated - } + if (lockFiltering) { return; } + applyFilters(); } public void restoreDefaultFilters() { @@ -839,17 +744,14 @@ public abstract class ItemManager extends FContainer im for (ItemFilter filter : orderedFilters) { filter.getPanel().setVisible(visible); } - mainSearchFilter.getPanel().setVisible(visible); + for (ItemView view : views) { + view.getPnlOptions().setVisible(visible); + } if (initialized) { + btnAdvancedSearchOptions.setSelected(visible); + revalidate(); - - if (hideFilters0) { - resetFilters(); //reset filters when they're hidden - } - else { - applyFilters(); - } if (config != null) { config.setHideFilters(hideFilters0); @@ -857,21 +759,6 @@ public abstract class ItemManager extends FContainer im } } - /** - * - * resetFilters. - * - */ - public void resetFilters() { - lockFiltering = true; //prevent updating filtering from this change until all filters reset - for (ItemFilter filter : orderedFilters) { - filter.reset(); - } - mainSearchFilter.reset(); - lockFiltering = false; - applyFilters(); - } - /** * Refresh displayed items */ @@ -911,10 +798,6 @@ public abstract class ItemManager extends FContainer im currentView.refresh(itemsToSelect, getSelectedIndex(), forceFilter ? 0 : currentView.getScrollValue()); - for (ItemFilter filter : orderedFilters) { - filter.afterFiltersApplied(); - } - //update ratio of # in filtered pool / # in total pool int total; if (!useFilter) { @@ -930,8 +813,7 @@ public abstract class ItemManager extends FContainer im else { total = pool.countAll(); } - ratio = "(" + getFilteredItems().countAll() + " / " + total + ")"; - updateCaptionLabel(); + mainSearchFilter.setRatio("(" + getFilteredItems().countAll() + " / " + total + ")"); } /** diff --git a/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java b/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java index 75394b946cc..bfb0180e743 100644 --- a/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java +++ b/forge-gui-mobile/src/forge/itemmanager/SpellShopManager.java @@ -15,7 +15,7 @@ import forge.card.CardRenderer; import forge.card.CardZoom; import forge.item.InventoryItem; import forge.item.PaperCard; -import forge.itemmanager.filters.ItemFilter; +import forge.itemmanager.filters.TextSearchFilter; import forge.menu.FPopupMenu; import forge.quest.QuestSpellShop; import forge.toolbox.FList; @@ -39,7 +39,7 @@ public final class SpellShopManager extends ItemManager { } @Override - protected ItemFilter createSearchFilter() { + protected TextSearchFilter createSearchFilter() { return CardManager.createSearchFilter(this); } diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java index 9de5e6b0834..c1435494c1d 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/CardSearchFilter.java @@ -1,23 +1,14 @@ package forge.itemmanager.filters; -import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; import com.google.common.base.Predicate; import forge.item.InventoryItem; import forge.item.PaperCard; import forge.itemmanager.ItemManager; import forge.itemmanager.SFilterUtil; -import forge.toolbox.FComboBox; -import forge.toolbox.FEvent; -import forge.toolbox.FEvent.FEventHandler; -import forge.toolbox.FLabel; -import forge.util.LayoutHelper; public class CardSearchFilter extends TextSearchFilter { - private FComboBox cbSearchMode; - private FLabel btnName, btnType, btnText; - public CardSearchFilter(ItemManager itemManager0) { super(itemManager0); } @@ -27,88 +18,23 @@ public class CardSearchFilter extends TextSearchFilter { CardSearchFilter copy = new CardSearchFilter(itemManager); copy.getWidget(); //initialize widget copy.txtSearch.setText(txtSearch.getText()); - copy.cbSearchMode.setSelectedIndex(cbSearchMode.getSelectedIndex()); - copy.btnName.setSelected(btnName.isSelected()); - copy.btnType.setSelected(btnType.isSelected()); - copy.btnText.setSelected(btnText.isSelected()); return copy; } - @Override - public void reset() { - super.reset(); - cbSearchMode.setSelectedIndex(0); - btnName.setSelected(true); - btnType.setSelected(true); - btnText.setSelected(true); - } - - @Override - protected final void buildWidget(Widget widget) { - super.buildWidget(widget); - - cbSearchMode = new FComboBox(); - cbSearchMode.setFont(txtSearch.getFont()); - cbSearchMode.addItem("in"); - cbSearchMode.addItem("not in"); - cbSearchMode.setChangedHandler(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - if (!txtSearch.isEmpty()) { - applyChange(); - } - } - }); - widget.add(cbSearchMode); - - btnName = addButton(widget, "Name"); - btnType = addButton(widget, "Type"); - btnText = addButton(widget, "Text"); - } - - @Override - protected void doWidgetLayout(LayoutHelper helper) { - final float buttonWidth = Math.max(Math.max(btnName.getAutoSizeBounds().width, btnType.getAutoSizeBounds().width), btnText.getAutoSizeBounds().width); - final float height = helper.getParentHeight(); - - helper.fillLine(txtSearch, height, (buttonWidth + helper.getGapX()) * 4); //leave space for combo box and buttons - helper.include(cbSearchMode, buttonWidth, height); //use button width for combo box too - helper.include(btnName, buttonWidth, height); - helper.include(btnType, buttonWidth, height); - helper.include(btnText, buttonWidth, height); - } - - private FLabel addButton(Widget widget, String text) { - FLabel button = new FLabel.Builder().text(text).font(txtSearch.getFont()).align(HAlignment.CENTER) - .selectable().selected().command(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - applyChange(); - } - }) - .build(); - widget.add(button); - return button; - } - @Override protected Predicate buildPredicate() { return SFilterUtil.buildTextFilter( txtSearch.getText(), - cbSearchMode.getSelectedIndex() != 0, - btnName.isSelected(), - btnType.isSelected(), - btnText.isSelected(), + false, + true, + true, + true, false); //TODO: Support enabling searching in cost } @Override protected boolean showUnsupportedItem(U item) { //fallback to regular item text filter if item not PaperCard - boolean result = btnName.isSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item); - if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed - result = !result; - } - return result; + return SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item); } } diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java index f2585b4a4de..4f8ba45c266 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/DeckColorFilter.java @@ -6,7 +6,6 @@ import forge.deck.DeckProxy; import forge.itemmanager.ItemManager; import forge.itemmanager.SFilterUtil; import forge.itemmanager.SItemManagerUtil.StatTypes; -import forge.util.ItemPool; public class DeckColorFilter extends StatTypeFilter { @@ -34,19 +33,4 @@ public class DeckColorFilter extends StatTypeFilter { protected final Predicate buildPredicate() { return SFilterUtil.buildDeckColorFilter(buttonMap); } - - @Override - public void afterFiltersApplied() { - final ItemPool items = itemManager.getFilteredItems(); - - buttonMap.get(StatTypes.DECK_WHITE).setText(String.valueOf(items.countAll(DeckProxy.IS_WHITE, DeckProxy.class))); - buttonMap.get(StatTypes.DECK_BLUE).setText(String.valueOf(items.countAll(DeckProxy.IS_BLUE, DeckProxy.class))); - buttonMap.get(StatTypes.DECK_BLACK).setText(String.valueOf(items.countAll(DeckProxy.IS_BLACK, DeckProxy.class))); - buttonMap.get(StatTypes.DECK_RED).setText(String.valueOf(items.countAll(DeckProxy.IS_RED, DeckProxy.class))); - buttonMap.get(StatTypes.DECK_GREEN).setText(String.valueOf(items.countAll(DeckProxy.IS_GREEN, DeckProxy.class))); - buttonMap.get(StatTypes.DECK_COLORLESS).setText(String.valueOf(items.countAll(DeckProxy.IS_COLORLESS, DeckProxy.class))); - buttonMap.get(StatTypes.DECK_MULTICOLOR).setText(String.valueOf(items.countAll(DeckProxy.IS_MULTICOLOR, DeckProxy.class))); - - getWidget().revalidate(); - } } diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java index b9502af232b..c785aa7fe35 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/DeckStatTypeFilter.java @@ -1,16 +1,8 @@ package forge.itemmanager.filters; -import com.google.common.base.Predicates; - import forge.deck.DeckProxy; import forge.item.InventoryItem; -import forge.item.PaperCard; import forge.itemmanager.ItemManager; -import forge.itemmanager.SItemManagerUtil; -import forge.toolbox.FLabel; -import forge.util.ItemPool; - -import java.util.Map; public abstract class DeckStatTypeFilter extends StatTypeFilter { public DeckStatTypeFilter(ItemManager itemManager0) { @@ -21,17 +13,4 @@ public abstract class DeckStatTypeFilter extends StatTypeFilter { protected boolean showUnsupportedItem(U item) { return false; } - - @Override - public void afterFiltersApplied() { - final ItemPool items = itemManager.getFilteredItems(); - - for (Map.Entry btn : buttonMap.entrySet()) { - if (btn.getKey().predicate != null) { - int count = items.countAll(DeckProxy.createPredicate(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES)), DeckProxy.class); - btn.getValue().setText(String.valueOf(count)); - } - } - getWidget().revalidate(); - } } diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java index 1e86b89669e..2d9eecb1587 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/ItemFilter.java @@ -78,8 +78,6 @@ public abstract class ItemFilter { public abstract ItemFilter createCopy(); public abstract boolean isEmpty(); public abstract void reset(); - public void afterFiltersApplied() { - } /** * Merge the given filter with this filter if possible diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/StatTypeFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/StatTypeFilter.java index 629f9116d55..3325a36b470 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/StatTypeFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/StatTypeFilter.java @@ -1,11 +1,8 @@ package forge.itemmanager.filters; -import com.google.common.base.Predicates; - import forge.assets.FSkin; import forge.item.InventoryItem; import forge.item.ItemPredicate; -import forge.item.PaperCard; import forge.itemmanager.ItemManager; import forge.itemmanager.SFilterUtil; import forge.itemmanager.SItemManagerUtil; @@ -13,8 +10,6 @@ import forge.itemmanager.SItemManagerUtil.StatTypes; import forge.toolbox.FEvent; import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FLabel; -import forge.util.ItemPool; - import java.util.HashMap; import java.util.Map; @@ -50,23 +45,4 @@ public abstract class StatTypeFilter extends ToggleButt } return false; } - - @Override - public void afterFiltersApplied() { - final ItemPool items = itemManager.getFilteredItems(); - - FLabel btnPackOrDeck = buttonMap.get(StatTypes.PACK_OR_DECK); - if (btnPackOrDeck != null) { //support special pack/deck case - int count = items.countAll(ItemPredicate.Presets.IS_PACK_OR_DECK, InventoryItem.class); - btnPackOrDeck.setText(String.valueOf(count)); - } - - for (Map.Entry btn : buttonMap.entrySet()) { - if (btn.getKey().predicate != null) { - int count = items.countAll(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES), PaperCard.class); - btn.getValue().setText(String.valueOf(count)); - } - } - getWidget().revalidate(); - } } diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/TextSearchFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/TextSearchFilter.java index 1f061f12d75..c7149dad4ed 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/TextSearchFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/TextSearchFilter.java @@ -1,8 +1,10 @@ package forge.itemmanager.filters; +import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; import com.google.common.base.Predicate; import com.google.common.base.Predicates; +import forge.Graphics; import forge.assets.FSkinFont; import forge.item.InventoryItem; import forge.itemmanager.ItemManager; @@ -16,7 +18,7 @@ import forge.util.LayoutHelper; public class TextSearchFilter extends ItemFilter { private static final FSkinFont FONT = FSkinFont.get(12); - protected FTextField txtSearch; + protected SearchField txtSearch; public TextSearchFilter(ItemManager itemManager0) { super(itemManager0); @@ -57,9 +59,7 @@ public class TextSearchFilter extends ItemFilter { @Override protected void buildWidget(Widget widget) { - txtSearch = new FTextField(); - txtSearch.setFont(FONT); - txtSearch.setGhostText("Search"); + txtSearch = new SearchField(); widget.add(txtSearch); txtSearch.setChangedHandler(new FEventHandler() { @@ -83,4 +83,38 @@ public class TextSearchFilter extends ItemFilter { } return SFilterUtil.buildItemTextFilter(text); } + + public void setRatio(String ratio0) { + txtSearch.ratio = ratio0; + txtSearch.ratioWidth = txtSearch.getFont().getBounds(ratio0).width; + } + + public String getCaption() { + return txtSearch.getGhostText().substring("Search ".length()); + } + public void setCaption(String caption0) { + txtSearch.setGhostText("Search " + caption0); + } + + protected class SearchField extends FTextField { + private String ratio = "(0 / 0)"; + private float ratioWidth; + + private SearchField() { + setFont(FONT); + setGhostText("Search"); + setHeight(getDefaultHeight(DEFAULT_FONT)); //set height based on default filter font + } + + @Override + protected float getRightPadding() { + return ratioWidth + 2 * PADDING; + } + + @Override + public void draw(Graphics g) { + super.draw(g); + g.drawText(ratio, renderedFont, GHOST_TEXT_COLOR, 0, 0, getWidth() - PADDING, getHeight(), false, HAlignment.RIGHT, true); + } + } } diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 17cc16b9811..01812552570 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -385,7 +385,7 @@ public class ImageView extends ItemView { float padding = ItemFilter.PADDING; float x = 0; float h = FTextField.getDefaultHeight(ItemFilter.DEFAULT_FONT); - float y = (height - h) / 2; + float y = padding; btnExpandCollapseAll.setBounds(x, y, h, h); x += h + padding; lblGroupBy.setBounds(x, y, lblGroupBy.getAutoSizeBounds().width, h); diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java b/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java index 51453a980c8..67a7d72c268 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ItemListView.java @@ -32,12 +32,8 @@ import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.ItemManagerModel; import forge.toolbox.FCheckBox; import forge.toolbox.FDisplayObject; -import forge.toolbox.FEvent; -import forge.toolbox.FEvent.FEventHandler; import forge.toolbox.FList; -import org.apache.commons.lang3.StringUtils; - import com.badlogic.gdx.math.Rectangle; import com.badlogic.gdx.math.Vector2; @@ -90,67 +86,12 @@ public final class ItemListView extends ItemView { } }); - getPnlOptions().clear(); - - if (config.getShowUniqueCardsOption()) { - final FCheckBox chkBox = new FCheckBox("Unique Cards Only", itemManager.getWantUnique()); - chkBox.setFont(list.getFont()); - chkBox.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - boolean wantUnique = chkBox.isSelected(); - if (itemManager.getWantUnique() == wantUnique) { return; } - itemManager.setWantUnique(wantUnique); - itemManager.refresh(); - - if (itemManager.getConfig() != null) { - itemManager.setWantUnique(wantUnique); - } - } - }); - getPnlOptions().add(chkBox); - } - list.cols.clear(); int modelIndex = 0; for (final ItemColumn col : cols) { col.setIndex(modelIndex++); if (col.isVisible()) { list.cols.add(col); } - - final FCheckBox chkBox = new FCheckBox(StringUtils.isEmpty(col.getShortName()) ? - col.getLongName() : col.getShortName(), col.isVisible()); - chkBox.setFont(list.getFont()); - chkBox.setCommand(new FEventHandler() { - @Override - public void handleEvent(FEvent e) { - boolean visible = chkBox.isSelected(); - if (col.isVisible() == visible) { return; } - col.setVisible(visible); - - if (col.isVisible()) { - list.cols.add(col); - - //move col into proper position - int oldIndex = list.getCellCount() - 1; - int newIndex = col.getIndex(); - for (int i = 0; i < col.getIndex(); i++) { - if (!cols.get(i).isVisible()) { - newIndex--; - } - } - if (newIndex < oldIndex) { - list.cols.remove(oldIndex); - list.cols.add(newIndex, col); - } - } - else { - list.cols.remove(col); - } - ItemManagerConfig.save(); - } - }); - getPnlOptions().add(chkBox); } listModel.setup();