diff --git a/.gitattributes b/.gitattributes index 40c94c481be..3fa55c78f89 100644 --- a/.gitattributes +++ b/.gitattributes @@ -15018,6 +15018,19 @@ src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java -text src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java -text src/main/java/forge/gui/toolbox/itemmanager/SItemManagerIO.java -text src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardCMCFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardPowerFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/TextFieldFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java -text +src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java -text src/main/java/forge/gui/toolbox/itemmanager/package-info.java -text src/main/java/forge/gui/toolbox/itemmanager/table/AlwaysShowToolTip.java -text src/main/java/forge/gui/toolbox/itemmanager/table/IntegerRenderer.java -text diff --git a/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java b/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java index ab78b56ea98..867a7c26865 100644 --- a/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java +++ b/src/main/java/forge/gui/deckeditor/controllers/CCardCatalog.java @@ -385,7 +385,7 @@ public enum CCardCatalog implements ICDoc { // TODO: is there really no way to make this type safe? ACEditorBase editor = CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController(); if (null != editor) { - ((ACEditorBase)editor).getCatalogManager().setFilter(cardFilter); + ((ACEditorBase)editor).getCatalogManager().setFilterPredicate(cardFilter); } } diff --git a/src/main/java/forge/gui/deckeditor/views/VCardCatalog.java b/src/main/java/forge/gui/deckeditor/views/VCardCatalog.java index 72903990625..a8c17e7f16f 100644 --- a/src/main/java/forge/gui/deckeditor/views/VCardCatalog.java +++ b/src/main/java/forge/gui/deckeditor/views/VCardCatalog.java @@ -226,9 +226,9 @@ public enum VCardCatalog implements IVDoc { public FLabel getLblType() { return lblType; } public FLabel getLblText() { return lblText; } - public FLabel getBtnAddRestriction() { return btnAddRestriction; } - public JComboBox getCbSearchMode() { return cbSearchMode; } - public JTextField getTxfSearch() { return txfSearch; } + public FLabel getBtnAddRestriction() { return btnAddRestriction; } + public JComboBox getCbSearchMode() { return cbSearchMode; } + public JTextField getTxfSearch() { return txfSearch; } public Map getStatLabels() { return statLabels; diff --git a/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java b/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java index 9c8f48f43ec..42fd0a148d6 100644 --- a/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java +++ b/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java @@ -18,6 +18,7 @@ package forge.gui.toolbox.itemmanager; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -25,6 +26,7 @@ import java.util.Map.Entry; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; + import com.google.common.base.Predicate; @@ -34,6 +36,7 @@ import com.google.common.collect.Iterables; import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FTextField; import forge.gui.toolbox.ToolTipListener; +import forge.gui.toolbox.itemmanager.filters.ItemFilter; import forge.gui.toolbox.itemmanager.table.ItemTable; import forge.gui.toolbox.itemmanager.table.ItemTableModel; import forge.item.InventoryItem; @@ -52,7 +55,9 @@ public final class ItemManager extends JPanel { private static final long serialVersionUID = 3164349984277267922L; private ItemPool pool; private final ItemManagerModel model; - private Predicate filter = null; + private Predicate filterPredicate = null; + private final Map> filters = + new HashMap>(); private boolean wantUnique = false; private boolean alwaysNonUnique = false; private final Class genericType; @@ -100,9 +105,9 @@ public final class ItemManager extends JPanel { int height = this.getHeight(); //position toolbar components //TODO: Uncomment - //int toolbarHeight = FTextField.HEIGHT + 3; - //this.txtSearch.setBounds(x, y, width / 2, FTextField.HEIGHT); - //y += toolbarHeight; + /*int toolbarHeight = FTextField.HEIGHT + 3; + this.txtSearch.setBounds(x, y, width / 2, FTextField.HEIGHT); + y += toolbarHeight;*/ //position current item view this.tableScroller.setBounds(x, y, width, height - y); @@ -332,13 +337,24 @@ public final class ItemManager extends JPanel { return this.statLabels.get(s); } - /** - * - * getFilter. - * - */ - public Predicate getFilter() { - return this.filter; + public void addFilter(ItemFilter filter) { + this.filters.put(filter.getType(), filter); + this.add(filter); + this.revalidate(); + } + + public void removeFilter(ItemFilter filter) { + this.filters.remove(filter.getType()); + this.remove(filter); + this.revalidate(); + } + + public void buildFilterPredicate() { + /* + this.filterPredicate = ?; + if (this.pool != null) { + this.updateView(true); + }*/ } /** @@ -347,17 +363,17 @@ public final class ItemManager extends JPanel { * */ private boolean isUnfiltered() { - return this.filter == null; + return this.filterPredicate == null; } /** * - * setFilter. + * setFilterPredicate. * * @param filterToSet */ - public void setFilter(final Predicate filterToSet) { - this.filter = filterToSet; + public void setFilterPredicate(final Predicate filterPredicate0) { + this.filterPredicate = filterPredicate0; if (this.pool != null) { this.updateView(true); } @@ -370,18 +386,18 @@ public final class ItemManager extends JPanel { * @param bForceFilter */ public void updateView(final boolean bForceFilter) { - final boolean useFilter = (bForceFilter && (this.filter != null)) || !isUnfiltered(); + final boolean useFilter = (bForceFilter && (this.filterPredicate != null)) || !isUnfiltered(); if (useFilter || this.wantUnique || bForceFilter) { this.model.clear(); } if (useFilter && this.wantUnique) { - Predicate> filterForPool = Predicates.compose(this.filter, this.pool.FN_GET_KEY); + Predicate> filterForPool = Predicates.compose(this.filterPredicate, this.pool.FN_GET_KEY); Iterable> items = Aggregates.uniqueByLast(Iterables.filter(this.pool, filterForPool), this.pool.FN_GET_NAME); this.model.addItems(items); } else if (useFilter) { - Predicate> pred = Predicates.compose(this.filter, this.pool.FN_GET_KEY); + Predicate> pred = Predicates.compose(this.filterPredicate, this.pool.FN_GET_KEY); this.model.addItems(Iterables.filter(this.pool, pred)); } else if (this.wantUnique) { Iterable> items = Aggregates.uniqueByLast(this.pool, this.pool.FN_GET_NAME); diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardCMCFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardCMCFilter.java new file mode 100644 index 00000000000..5bb7f9efcd9 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardCMCFilter.java @@ -0,0 +1,31 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardCMCFilter extends ValueRangeFilter { + + public CardCMCFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardCMC; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java new file mode 100644 index 00000000000..d774846c44c --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardColorFilter extends ToggleButtonsFilter { + public CardColorFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardColor; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java new file mode 100644 index 00000000000..ced3cb035c8 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardFormatFilter extends ListLabelFilter { + public CardFormatFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardFormat; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardPowerFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardPowerFilter.java new file mode 100644 index 00000000000..5e1d6734a06 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardPowerFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardPowerFilter extends ValueRangeFilter { + public CardPowerFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardPower; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java new file mode 100644 index 00000000000..440712fc696 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardQuestWorldFilter extends ListLabelFilter { + public CardQuestWorldFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardQuestWorld; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java new file mode 100644 index 00000000000..a63303b49e0 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardSetFilter extends ListLabelFilter { + public CardSetFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardSet; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java new file mode 100644 index 00000000000..1847f707b53 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardToughnessFilter extends ValueRangeFilter { + public CardToughnessFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardToughness; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java new file mode 100644 index 00000000000..717c7d3a340 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java @@ -0,0 +1,30 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.PaperCard; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public class CardTypeFilter extends ToggleButtonsFilter { + public CardTypeFilter(ItemManager itemManager0) { + super(itemManager0); + } + + @Override + public FilterTypes getType() { + return FilterTypes.CardType; + } + + @Override + protected void addComponents() { + + } + + @Override + protected void onRemoved() { + + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java new file mode 100644 index 00000000000..17db43ec326 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java @@ -0,0 +1,50 @@ +package forge.gui.toolbox.itemmanager.filters; + +import javax.swing.JPanel; + +import forge.Command; +import forge.gui.toolbox.FLabel; +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.InventoryItem; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public abstract class ItemFilter extends JPanel { + private final ItemManager itemManager; + + public enum FilterTypes { + CardCMC, + CardColor, + CardFormat, + CardPower, + CardQuestWorld, + CardSet, + CardToughness, + CardType + } + + protected ItemFilter(ItemManager itemManager0) { + this.itemManager = itemManager0; + this.setOpaque(false); + this.addComponents(); + this.add(new FLabel.Builder().text("X").fontSize(10).hoverable(true) + .tooltip("Remove filter").cmdClick(new Command() { + @Override + public void run() { + itemManager.removeFilter(ItemFilter.this); + ItemFilter.this.onRemoved(); + } + }).build(), "top"); + } + + protected void applyChange() { + itemManager.buildFilterPredicate(); + } + + public abstract FilterTypes getType(); + protected abstract void addComponents(); + protected abstract void onRemoved(); +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java new file mode 100644 index 00000000000..fa43ccb5f19 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java @@ -0,0 +1,16 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.InventoryItem; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public abstract class ListLabelFilter extends ItemFilter { + + protected ListLabelFilter(ItemManager itemManager0) { + super(itemManager0); + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/TextFieldFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/TextFieldFilter.java new file mode 100644 index 00000000000..4d7611eadac --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/TextFieldFilter.java @@ -0,0 +1,16 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.InventoryItem; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public abstract class TextFieldFilter extends ItemFilter { + + protected TextFieldFilter(ItemManager itemManager0) { + super(itemManager0); + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java new file mode 100644 index 00000000000..2f8f0c47571 --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java @@ -0,0 +1,16 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.InventoryItem; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public abstract class ToggleButtonsFilter extends ItemFilter { + + protected ToggleButtonsFilter(ItemManager itemManager0) { + super(itemManager0); + } +} diff --git a/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java b/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java new file mode 100644 index 00000000000..646727d939d --- /dev/null +++ b/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java @@ -0,0 +1,16 @@ +package forge.gui.toolbox.itemmanager.filters; + +import forge.gui.toolbox.itemmanager.ItemManager; +import forge.item.InventoryItem; + +/** + * TODO: Write javadoc for this type. + * + */ +@SuppressWarnings("serial") +public abstract class ValueRangeFilter extends ItemFilter { + + protected ValueRangeFilter(ItemManager itemManager0) { + super(itemManager0); + } +}