diff --git a/.gitattributes b/.gitattributes
index b988ddaa669..a0625b99b84 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -68,6 +68,7 @@ forge-core/src/main/java/forge/deck/io/OldDeckFileFormatException.java -text
forge-core/src/main/java/forge/deck/io/package-info.java -text
forge-core/src/main/java/forge/deck/package-info.java -text
forge-core/src/main/java/forge/item/BoosterPack.java -text
+forge-core/src/main/java/forge/item/DeckBox.java -text
forge-core/src/main/java/forge/item/FatPack.java -text
forge-core/src/main/java/forge/item/IPaperCard.java -text
forge-core/src/main/java/forge/item/InventoryItem.java -text
@@ -15473,6 +15474,7 @@ forge-gui/src/main/java/forge/gui/toolbox/imaging/FImagePanel.java -text
forge-gui/src/main/java/forge/gui/toolbox/imaging/FImageUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/imaging/ImageUtil.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/CardManager.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/DeckManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManager.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerContainer.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java -text
@@ -15490,6 +15492,13 @@ forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.j
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFormatFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckQuestWorldFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSearchFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSetFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckStatTypeFilter.java -text
+forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/FormatFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java -text
forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java -text
diff --git a/forge-core/src/main/java/forge/card/CardDb.java b/forge-core/src/main/java/forge/card/CardDb.java
index 01152284db9..ed47905402b 100644
--- a/forge-core/src/main/java/forge/card/CardDb.java
+++ b/forge-core/src/main/java/forge/card/CardDb.java
@@ -105,7 +105,7 @@ public final class CardDb implements ICardDatabase {
}
private void addCard(PaperCard paperCard) {
- allCardsByName.put(paperCard.name, paperCard);
+ allCardsByName.put(paperCard.getName(), paperCard);
}
private void reIndex() {
diff --git a/forge-core/src/main/java/forge/deck/DeckGroup.java b/forge-core/src/main/java/forge/deck/DeckGroup.java
index 13147718fb3..de212d774c9 100644
--- a/forge-core/src/main/java/forge/deck/DeckGroup.java
+++ b/forge-core/src/main/java/forge/deck/DeckGroup.java
@@ -134,5 +134,4 @@ public class DeckGroup extends DeckBase {
return arg1.getName();
}
};
-
}
diff --git a/forge-core/src/main/java/forge/item/DeckBox.java b/forge-core/src/main/java/forge/item/DeckBox.java
new file mode 100644
index 00000000000..6b912747a9b
--- /dev/null
+++ b/forge-core/src/main/java/forge/item/DeckBox.java
@@ -0,0 +1,73 @@
+/*
+ * Forge: Play Magic: the Gathering.
+ * Copyright (C) 2011 Nate
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package forge.item;
+
+import java.util.Map.Entry;
+
+import com.google.common.base.Predicate;
+
+import forge.deck.CardPool;
+import forge.deck.Deck;
+import forge.deck.DeckSection;
+
+/**
+ * A deck box containing a deck
+ *
+ */
+public class DeckBox implements InventoryItem {
+ private final Deck deck;
+
+ @Override
+ public String getName() {
+ return this.deck.getName();
+ }
+
+ @Override
+ public String getItemType() {
+ return "Deck";
+ }
+
+ public DeckBox(final Deck deck0) {
+ this.deck = deck0;
+ }
+
+ //create predicate that applys a card predicate to all cards in deck
+ public static final Predicate createPredicate(final Predicate cardPredicate) {
+ return new Predicate() {
+ @Override
+ public boolean apply(DeckBox input) {
+ for (Entry deckEntry : input.deck) {
+ switch (deckEntry.getKey()) {
+ case Main:
+ case Sideboard:
+ case Commander:
+ for (Entry poolEntry : deckEntry.getValue()) {
+ if (!cardPredicate.apply(poolEntry.getKey())) {
+ return false; //all cards in deck must pass card predicate to pass deck predicate
+ }
+ }
+ break;
+ default:
+ break; //ignore other sections
+ }
+ }
+ return true;
+ }
+ };
+ }
+}
diff --git a/forge-core/src/main/java/forge/item/PaperCard.java b/forge-core/src/main/java/forge/item/PaperCard.java
index 3a3cda7bae3..50faeb151aa 100644
--- a/forge-core/src/main/java/forge/item/PaperCard.java
+++ b/forge-core/src/main/java/forge/item/PaperCard.java
@@ -35,10 +35,10 @@ public final class PaperCard implements Comparable, InventoryItemFro
private final transient CardRules rules;
// These fields are kinda PK for PrintedCard
- public final String name;
- public final String edition;
- public final int artIndex;
- public final boolean foil;
+ private final String name;
+ private final String edition;
+ private final int artIndex;
+ private final boolean foil;
// Calculated fields are below:
private final transient CardRarity rarity; // rarity is given in ctor when set is assigned
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/DeckManager.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/DeckManager.java
new file mode 100644
index 00000000000..440c85b7cd7
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/DeckManager.java
@@ -0,0 +1,111 @@
+package forge.gui.toolbox.itemmanager;
+
+import java.util.List;
+
+import javax.swing.JMenu;
+
+import forge.Singletons;
+import forge.game.GameFormat;
+import forge.gui.GuiUtils;
+import forge.gui.home.quest.DialogChooseSets;
+import forge.gui.toolbox.itemmanager.filters.DeckColorFilter;
+import forge.gui.toolbox.itemmanager.filters.DeckFormatFilter;
+import forge.gui.toolbox.itemmanager.filters.DeckQuestWorldFilter;
+import forge.gui.toolbox.itemmanager.filters.DeckSearchFilter;
+import forge.gui.toolbox.itemmanager.filters.DeckSetFilter;
+import forge.gui.toolbox.itemmanager.filters.ItemFilter;
+import forge.item.DeckBox;
+import forge.quest.QuestWorld;
+
+/**
+ * ItemManager for cards
+ *
+ */
+@SuppressWarnings("serial")
+public final class DeckManager extends ItemManager {
+ public DeckManager(boolean wantUnique0) {
+ super(DeckBox.class, wantUnique0);
+ }
+
+ @Override
+ protected void addDefaultFilters() {
+ addDefaultFilters(this);
+ }
+
+ @Override
+ protected ItemFilter createSearchFilter() {
+ return createSearchFilter(this);
+ }
+
+ @Override
+ protected void buildAddFilterMenu(JMenu menu) {
+ buildAddFilterMenu(menu, this);
+ }
+
+ /* Static overrides shared with SpellShopManager*/
+
+ public static void addDefaultFilters(final ItemManager super DeckBox> itemManager) {
+ itemManager.addFilter(new DeckColorFilter(itemManager));
+ }
+
+ public static ItemFilter createSearchFilter(final ItemManager super DeckBox> itemManager) {
+ return new DeckSearchFilter(itemManager);
+ }
+
+ public static void buildAddFilterMenu(JMenu menu, final ItemManager super DeckBox> itemManager) {
+ GuiUtils.addSeparator(menu); //separate from current search item
+
+ JMenu fmt = GuiUtils.createMenu("Format");
+ for (final GameFormat f : Singletons.getModel().getFormats()) {
+ GuiUtils.addMenuItem(fmt, f.getName(), null, new Runnable() {
+ @Override
+ public void run() {
+ itemManager.addFilter(new DeckFormatFilter(itemManager, f));
+ }
+ }, DeckFormatFilter.canAddFormat(f, itemManager.getFilter(DeckFormatFilter.class)));
+ }
+ menu.add(fmt);
+
+ GuiUtils.addMenuItem(menu, "Sets...", null, new Runnable() {
+ @Override
+ public void run() {
+ DeckSetFilter existingFilter = itemManager.getFilter(DeckSetFilter.class);
+ if (existingFilter != null) {
+ existingFilter.edit();
+ }
+ else {
+ final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
+ dialog.setOkCallback(new Runnable() {
+ @Override
+ public void run() {
+ List sets = dialog.getSelectedSets();
+ if (!sets.isEmpty()) {
+ itemManager.addFilter(new DeckSetFilter(itemManager, sets, dialog.getWantReprints()));
+ }
+ }
+ });
+ }
+ }
+ });
+
+ JMenu world = GuiUtils.createMenu("Quest world");
+ for (final QuestWorld w : Singletons.getModel().getWorlds()) {
+ GuiUtils.addMenuItem(world, w.getName(), null, new Runnable() {
+ @Override
+ public void run() {
+ itemManager.addFilter(new DeckQuestWorldFilter(itemManager, w));
+ }
+ }, DeckQuestWorldFilter.canAddQuestWorld(w, itemManager.getFilter(DeckQuestWorldFilter.class)));
+ }
+ menu.add(world);
+
+ GuiUtils.addSeparator(menu);
+
+ GuiUtils.addMenuItem(menu, "Colors", null, new Runnable() {
+ @Override
+ public void run() {
+ itemManager.addFilter(new DeckColorFilter(itemManager));
+ }
+ }, itemManager.getFilter(DeckColorFilter.class) == null);
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java
index af712b0d517..eb3010a0c62 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java
@@ -2,11 +2,19 @@ package forge.gui.toolbox.itemmanager;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import forge.card.CardRules;
import forge.card.CardRulesPredicates;
+import forge.card.MagicColor;
+import forge.card.CardRulesPredicates.Presets;
+import forge.game.GameFormat;
+import forge.gui.toolbox.FLabel;
+import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.item.InventoryItem;
import forge.item.PaperCard;
import forge.util.PredicateString.StringOp;
@@ -69,6 +77,74 @@ public class SFilterUtil {
return false;
}
};
+
+ public static Predicate buildColorFilter(Map buttonMap) {
+ byte colors = 0;
+
+ if (buttonMap.get(StatTypes.WHITE).getSelected()) {
+ colors |= MagicColor.WHITE;
+ }
+ if (buttonMap.get(StatTypes.BLUE).getSelected()) {
+ colors |= MagicColor.BLUE;
+ }
+ if (buttonMap.get(StatTypes.BLACK).getSelected()) {
+ colors |= MagicColor.BLACK;
+ }
+ if (buttonMap.get(StatTypes.RED).getSelected()) {
+ colors |= MagicColor.RED;
+ }
+ if (buttonMap.get(StatTypes.GREEN).getSelected()) {
+ colors |= MagicColor.GREEN;
+ }
+
+ boolean wantColorless = buttonMap.get(StatTypes.COLORLESS).getSelected();
+ boolean wantMulticolor = buttonMap.get(StatTypes.MULTICOLOR).getSelected();
+
+ Predicate preFinal = null;
+ if (wantMulticolor) {
+ if (colors == 0) { //handle showing all multi-color cards if all 5 colors are filtered
+ preFinal = Presets.IS_MULTICOLOR;
+ if (wantColorless) {
+ preFinal = Predicates.or(preFinal, Presets.IS_COLORLESS);
+ }
+ }
+ else if (colors != MagicColor.ALL_COLORS) {
+ preFinal = CardRulesPredicates.canCastWithAvailable(colors);
+ }
+ }
+ else {
+ preFinal = Predicates.not(Presets.IS_MULTICOLOR);
+ if (colors != MagicColor.ALL_COLORS) {
+ preFinal = Predicates.and(CardRulesPredicates.canCastWithAvailable(colors), preFinal);
+ }
+ }
+ if (!wantColorless) {
+ if (colors != 0 && colors != MagicColor.ALL_COLORS) {
+ //if colorless filtered out ensure phyrexian cards don't appear
+ //unless at least one of their colors is selected
+ preFinal = Predicates.and(preFinal, CardRulesPredicates.isColor(colors));
+ }
+ preFinal = SFilterUtil.optimizedAnd(preFinal, Predicates.not(Presets.IS_COLORLESS));
+ }
+
+ if (preFinal == null) {
+ return new Predicate() { //use custom return true delegate to validate the item is a card
+ @Override
+ public boolean apply(PaperCard card) {
+ return true;
+ }
+ };
+ }
+ return Predicates.compose(preFinal, PaperCard.FN_GET_RULES);
+ }
+
+ public static Predicate buildFormatFilter(Set formats, boolean allowReprints) {
+ List> predicates = new ArrayList>();
+ for (GameFormat f : formats) {
+ predicates.add(allowReprints ? f.getFilterRules() : f.getFilterPrinted());
+ }
+ return Predicates.or(predicates);
+ }
public static Predicate optimizedAnd(Predicate p1, Predicate p2) {
return p1 == null ? p2 : (p2 == null ? p1 : Predicates.and(p1, p2));
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java
index 2cd0cc6bb7a..f1772f9be6f 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java
@@ -3,12 +3,6 @@ package forge.gui.toolbox.itemmanager.filters;
import javax.swing.JPanel;
import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
-import forge.card.CardRules;
-import forge.card.CardRulesPredicates;
-import forge.card.MagicColor;
-import forge.card.CardRulesPredicates.Presets;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SFilterUtil;
import forge.gui.toolbox.itemmanager.SpellShopManager;
@@ -34,73 +28,11 @@ public class CardColorFilter extends StatTypeFilter {
if (itemManager instanceof SpellShopManager) {
addToggleButton(widget, StatTypes.PACK_OR_DECK);
}
- addToggleButton(widget, StatTypes.WHITE);
- addToggleButton(widget, StatTypes.BLUE);
- addToggleButton(widget, StatTypes.BLACK);
- addToggleButton(widget, StatTypes.RED);
- addToggleButton(widget, StatTypes.GREEN);
- addToggleButton(widget, StatTypes.COLORLESS);
- addToggleButton(widget, StatTypes.MULTICOLOR);
+ addColorButtons(widget);
}
@Override
protected final Predicate buildPredicate() {
- byte colors = 0;
-
- if (buttonMap.get(StatTypes.WHITE).getSelected()) {
- colors |= MagicColor.WHITE;
- }
- if (buttonMap.get(StatTypes.BLUE).getSelected()) {
- colors |= MagicColor.BLUE;
- }
- if (buttonMap.get(StatTypes.BLACK).getSelected()) {
- colors |= MagicColor.BLACK;
- }
- if (buttonMap.get(StatTypes.RED).getSelected()) {
- colors |= MagicColor.RED;
- }
- if (buttonMap.get(StatTypes.GREEN).getSelected()) {
- colors |= MagicColor.GREEN;
- }
-
- boolean wantColorless = buttonMap.get(StatTypes.COLORLESS).getSelected();
- boolean wantMulticolor = buttonMap.get(StatTypes.MULTICOLOR).getSelected();
-
- Predicate preFinal = null;
- if (wantMulticolor) {
- if (colors == 0) { //handle showing all multi-color cards if all 5 colors are filtered
- preFinal = Presets.IS_MULTICOLOR;
- if (wantColorless) {
- preFinal = Predicates.or(preFinal, Presets.IS_COLORLESS);
- }
- }
- else if (colors != MagicColor.ALL_COLORS) {
- preFinal = CardRulesPredicates.canCastWithAvailable(colors);
- }
- }
- else {
- preFinal = Predicates.not(Presets.IS_MULTICOLOR);
- if (colors != MagicColor.ALL_COLORS) {
- preFinal = Predicates.and(CardRulesPredicates.canCastWithAvailable(colors), preFinal);
- }
- }
- if (!wantColorless) {
- if (colors != 0 && colors != MagicColor.ALL_COLORS) {
- //if colorless filtered out ensure phyrexian cards don't appear
- //unless at least one of their colors is selected
- preFinal = Predicates.and(preFinal, CardRulesPredicates.isColor(colors));
- }
- preFinal = SFilterUtil.optimizedAnd(preFinal, Predicates.not(Presets.IS_COLORLESS));
- }
-
- if (preFinal == null) {
- return new Predicate() { //use custom return true delegate to validate the item is a card
- @Override
- public boolean apply(PaperCard card) {
- return true;
- }
- };
- }
- return Predicates.compose(preFinal, PaperCard.FN_GET_RULES);
+ return SFilterUtil.buildColorFilter(buttonMap);
}
}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java
index 2b3fdcb7d7f..3b785c28635 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java
@@ -1,110 +1,21 @@
package forge.gui.toolbox.itemmanager.filters;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
import com.google.common.base.Predicate;
-import com.google.common.base.Predicates;
-
-import forge.Singletons;
-import forge.card.CardEdition;
import forge.game.GameFormat;
import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.gui.toolbox.itemmanager.SFilterUtil;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
-public class CardFormatFilter extends ListLabelFilter {
- protected boolean allowReprints = true;
- protected final Set formats = new HashSet();
-
+public class CardFormatFilter extends FormatFilter {
public CardFormatFilter(ItemManager super PaperCard> itemManager0) {
super(itemManager0);
}
public CardFormatFilter(ItemManager super PaperCard> itemManager0, GameFormat format0) {
- super(itemManager0);
- this.formats.add(format0);
- }
-
- @Override
- protected String getTooltip() {
- Set sets = new HashSet();
- Set bannedCards = new HashSet();
-
- for (GameFormat format : this.formats) {
- List formatSets = format.getAllowedSetCodes();
- if (formatSets != null) {
- sets.addAll(formatSets);
- }
- List formatBannedCards = format.getBannedCardNames();
- if (formatBannedCards != null) {
- bannedCards.addAll(formatBannedCards);
- }
- }
-
- //use HTML tooltips so we can insert line breaks
- int lastLen = 0;
- int lineLen = 0;
- StringBuilder tooltip = new StringBuilder("Sets:");
- if (sets.isEmpty()) {
- tooltip.append(" All");
- }
- else {
- CardEdition.Collection editions = Singletons.getMagicDb().getEditions();
-
- for (String code : sets) {
- // don't let a single line get too long
- if (50 < lineLen) {
- tooltip.append("
");
- lastLen += lineLen;
- lineLen = 0;
- }
-
- CardEdition edition = editions.get(code);
- tooltip.append(" ").append(edition.getName()).append(" (").append(code).append("),");
- lineLen = tooltip.length() - lastLen;
- }
-
- // chop off last comma
- tooltip.delete(tooltip.length() - 1, tooltip.length());
-
- if (this.allowReprints) {
- tooltip.append("
Allowing identical cards from other sets");
- }
- }
-
- if (!bannedCards.isEmpty()) {
- tooltip.append("
Banned:");
- lastLen += lineLen;
- lineLen = 0;
-
- for (String cardName : bannedCards) {
- // don't let a single line get too long
- if (50 < lineLen) {
- tooltip.append("
");
- lastLen += lineLen;
- lineLen = 0;
- }
-
- tooltip.append(" ").append(cardName).append(";");
- lineLen = tooltip.length() - lastLen;
- }
-
- // chop off last semicolon
- tooltip.delete(tooltip.length() - 1, tooltip.length());
- }
- tooltip.append("");
- return tooltip.toString();
- }
-
- @Override
- public void reset() {
- this.formats.clear();
- this.updateLabel();
+ super(itemManager0, format0);
}
@Override
@@ -114,49 +25,8 @@ public class CardFormatFilter extends ListLabelFilter {
return copy;
}
- public static boolean canAddFormat(GameFormat format, ItemFilter existingFilter) {
- return existingFilter == null || !((CardFormatFilter)existingFilter).formats.contains(format);
- }
-
- /**
- * Merge the given filter with this filter if possible
- * @param filter
- * @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
- */
- @Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
- CardFormatFilter cardFormatFilter = (CardFormatFilter)filter;
- this.formats.addAll(cardFormatFilter.formats);
- this.allowReprints = cardFormatFilter.allowReprints;
- return true;
- }
-
- @Override
- protected String getCaption() {
- return "Format";
- }
-
- @Override
- protected int getCount() {
- return this.formats.size();
- }
-
- @Override
- protected Iterable getList() {
- Set strings = new HashSet();
- for (GameFormat f : this.formats) {
- strings.add(f.getName());
- }
- return strings;
- }
-
@Override
protected final Predicate buildPredicate() {
- List> predicates = new ArrayList>();
- for (GameFormat f : this.formats) {
- predicates.add(allowReprints ? f.getFilterRules() : f.getFilterPrinted());
- }
- return Predicates.or(predicates);
+ return SFilterUtil.buildFormatFilter(this.formats, this.allowReprints);
}
}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java
index 2cb9460f57d..af22a850a8e 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java
@@ -54,8 +54,7 @@ public class CardQuestWorldFilter extends CardFormatFilter {
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
*/
@Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
+ public boolean merge(ItemFilter> filter) {
CardQuestWorldFilter cardQuestWorldFilter = (CardQuestWorldFilter)filter;
this.questWorlds.addAll(cardQuestWorldFilter.questWorlds);
for (QuestWorld w : cardQuestWorldFilter.questWorlds) {
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java
index 9baa8f384c1..f68e25e75b9 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java
@@ -50,17 +50,6 @@ public class CardSearchFilter extends TextSearchFilter {
this.btnText.setSelected(true);
}
- /**
- * Merge the given filter with this filter if possible
- * @param filter
- * @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
- */
- @Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
- return false;
- }
-
@Override
protected final void buildWidget(JPanel widget) {
super.buildWidget(widget);
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java
index ef6f3e372a7..af24e36f538 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java
@@ -40,8 +40,7 @@ public class CardSetFilter extends CardFormatFilter {
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
*/
@Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
+ public boolean merge(ItemFilter> filter) {
CardSetFilter cardSetFilter = (CardSetFilter)filter;
this.sets.addAll(cardSetFilter.sets);
this.allowReprints = cardSetFilter.allowReprints;
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java
new file mode 100644
index 00000000000..e33f5d258a7
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckColorFilter.java
@@ -0,0 +1,55 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import java.util.Map;
+
+import javax.swing.JPanel;
+
+import com.google.common.base.Predicate;
+import com.google.common.base.Predicates;
+
+import forge.gui.toolbox.FLabel;
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.gui.toolbox.itemmanager.SFilterUtil;
+import forge.gui.toolbox.itemmanager.SItemManagerUtil;
+import forge.item.DeckBox;
+import forge.item.PaperCard;
+import forge.util.ItemPoolView;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public class DeckColorFilter extends StatTypeFilter {
+ public DeckColorFilter(ItemManager super DeckBox> itemManager0) {
+ super(itemManager0);
+ }
+
+ @Override
+ public ItemFilter createCopy() {
+ return new DeckColorFilter(itemManager);
+ }
+
+ @Override
+ protected void buildWidget(JPanel widget) {
+ addColorButtons(widget);
+ }
+
+ @Override
+ protected final Predicate buildPredicate() {
+ return DeckBox.createPredicate(SFilterUtil.buildColorFilter(buttonMap));
+ }
+
+ @Override
+ public void afterFiltersApplied() {
+ final ItemPoolView super DeckBox> items = itemManager.getFilteredItems();
+
+ for (Map.Entry btn : buttonMap.entrySet()) {
+ if (btn.getKey().predicate != null) {
+ int count = items.countAll(DeckBox.createPredicate(Predicates.compose(btn.getKey().predicate,
+ PaperCard.FN_GET_RULES)), DeckBox.class);
+ btn.getValue().setText(String.valueOf(count));
+ }
+ }
+ getWidget().revalidate();
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFormatFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFormatFilter.java
new file mode 100644
index 00000000000..b0a8920bdbe
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckFormatFilter.java
@@ -0,0 +1,32 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import com.google.common.base.Predicate;
+import forge.game.GameFormat;
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.gui.toolbox.itemmanager.SFilterUtil;
+import forge.item.DeckBox;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public class DeckFormatFilter extends FormatFilter {
+ public DeckFormatFilter(ItemManager super DeckBox> itemManager0) {
+ super(itemManager0);
+ }
+ public DeckFormatFilter(ItemManager super DeckBox> itemManager0, GameFormat format0) {
+ super(itemManager0, format0);
+ }
+
+ @Override
+ public ItemFilter createCopy() {
+ DeckFormatFilter copy = new DeckFormatFilter(itemManager);
+ copy.formats.addAll(this.formats);
+ return copy;
+ }
+
+ @Override
+ protected final Predicate buildPredicate() {
+ return DeckBox.createPredicate(SFilterUtil.buildFormatFilter(this.formats, this.allowReprints));
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckQuestWorldFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckQuestWorldFilter.java
new file mode 100644
index 00000000000..4fa12917329
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckQuestWorldFilter.java
@@ -0,0 +1,93 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import forge.Singletons;
+import forge.game.GameFormat;
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.item.DeckBox;
+import forge.quest.QuestWorld;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public class DeckQuestWorldFilter extends DeckFormatFilter {
+ private final Set questWorlds = new HashSet();
+
+ public DeckQuestWorldFilter(ItemManager super DeckBox> itemManager0) {
+ super(itemManager0);
+ }
+ public DeckQuestWorldFilter(ItemManager super DeckBox> itemManager0, QuestWorld questWorld0) {
+ super(itemManager0);
+ this.questWorlds.add(questWorld0);
+ this.formats.add(getQuestWorldFormat(questWorld0));
+ }
+
+ @Override
+ public ItemFilter createCopy() {
+ DeckQuestWorldFilter copy = new DeckQuestWorldFilter(itemManager);
+ copy.questWorlds.addAll(this.questWorlds);
+ for (QuestWorld w : this.questWorlds) {
+ copy.formats.add(getQuestWorldFormat(w));
+ }
+ return copy;
+ }
+
+ @Override
+ public void reset() {
+ this.questWorlds.clear();
+ super.reset();
+ }
+
+ public static boolean canAddQuestWorld(QuestWorld questWorld, ItemFilter existingFilter) {
+ if (questWorld.getFormat() == null && Singletons.getModel().getQuest().getMainFormat() == null) {
+ return false; //must have format
+ }
+ return existingFilter == null || !((DeckQuestWorldFilter)existingFilter).questWorlds.contains(questWorld);
+ }
+
+ /**
+ * Merge the given filter with this filter if possible
+ * @param filter
+ * @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
+ */
+ @Override
+ public boolean merge(ItemFilter> filter) {
+ DeckQuestWorldFilter cardQuestWorldFilter = (DeckQuestWorldFilter)filter;
+ this.questWorlds.addAll(cardQuestWorldFilter.questWorlds);
+ for (QuestWorld w : cardQuestWorldFilter.questWorlds) {
+ this.formats.add(getQuestWorldFormat(w));
+ }
+ return true;
+ }
+
+ @Override
+ protected String getCaption() {
+ return "Quest World";
+ }
+
+ @Override
+ protected int getCount() {
+ return this.questWorlds.size();
+ }
+
+ @Override
+ protected Iterable getList() {
+ Set strings = new HashSet();
+ for (QuestWorld w : this.questWorlds) {
+ strings.add(w.getName());
+ }
+ return strings;
+ }
+
+ private GameFormat getQuestWorldFormat(QuestWorld w) {
+ GameFormat format = w.getFormat();
+ if (format == null) {
+ //assumes that no world other than the main world will have a null format
+ format = Singletons.getModel().getQuest().getMainFormat();
+ }
+ return format;
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSearchFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSearchFilter.java
new file mode 100644
index 00000000000..a485e315ac6
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSearchFilter.java
@@ -0,0 +1,22 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.item.DeckBox;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public class DeckSearchFilter extends TextSearchFilter {
+ public DeckSearchFilter(ItemManager super DeckBox> itemManager0) {
+ super(itemManager0);
+ }
+
+ @Override
+ public ItemFilter createCopy() {
+ DeckSearchFilter copy = new DeckSearchFilter(itemManager);
+ copy.getWidget(); //initialize widget
+ copy.txtSearch.setText(this.txtSearch.getText());
+ return copy;
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSetFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSetFilter.java
new file mode 100644
index 00000000000..ebdee772c14
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckSetFilter.java
@@ -0,0 +1,80 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+import forge.game.GameFormat;
+import forge.gui.home.quest.DialogChooseSets;
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.item.DeckBox;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public class DeckSetFilter extends DeckFormatFilter {
+ private final Set sets = new HashSet();
+
+ public DeckSetFilter(ItemManager super DeckBox> itemManager0, Collection sets0, boolean allowReprints0) {
+ super(itemManager0);
+ this.sets.addAll(sets0);
+ this.formats.add(new GameFormat(null, this.sets, null));
+ this.allowReprints = allowReprints0;
+ }
+
+ @Override
+ public ItemFilter createCopy() {
+ return new DeckSetFilter(itemManager, this.sets, this.allowReprints);
+ }
+
+ @Override
+ public void reset() {
+ this.sets.clear();
+ super.reset();
+ }
+
+ /**
+ * Merge the given filter with this filter if possible
+ * @param filter
+ * @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
+ */
+ @Override
+ public boolean merge(ItemFilter> filter) {
+ DeckSetFilter cardSetFilter = (DeckSetFilter)filter;
+ this.sets.addAll(cardSetFilter.sets);
+ this.allowReprints = cardSetFilter.allowReprints;
+ this.formats.clear();
+ this.formats.add(new GameFormat(null, this.sets, null));
+ return true;
+ }
+
+ public void edit() {
+ final DialogChooseSets dialog = new DialogChooseSets(this.sets, null, true);
+ dialog.setOkCallback(new Runnable() {
+ @Override
+ public void run() {
+ sets.clear();
+ sets.addAll(dialog.getSelectedSets());
+ allowReprints = dialog.getWantReprints();
+ formats.clear();
+ formats.add(new GameFormat(null, sets, null));
+ }
+ });
+ }
+
+ @Override
+ protected String getCaption() {
+ return "Set";
+ }
+
+ @Override
+ protected int getCount() {
+ return this.sets.size();
+ }
+
+ @Override
+ protected Iterable getList() {
+ return this.sets;
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckStatTypeFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckStatTypeFilter.java
new file mode 100644
index 00000000000..6545ceffea1
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/DeckStatTypeFilter.java
@@ -0,0 +1,37 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import java.util.Map;
+
+import com.google.common.base.Predicates;
+
+import forge.gui.toolbox.FLabel;
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.gui.toolbox.itemmanager.SItemManagerUtil;
+import forge.item.DeckBox;
+import forge.item.InventoryItem;
+import forge.item.PaperCard;
+import forge.util.ItemPoolView;
+
+public abstract class DeckStatTypeFilter extends StatTypeFilter {
+ public DeckStatTypeFilter(ItemManager super DeckBox> itemManager0) {
+ super(itemManager0);
+ }
+
+ @Override
+ protected boolean showUnsupportedItem(U item) {
+ return false;
+ }
+
+ @Override
+ public void afterFiltersApplied() {
+ final ItemPoolView super DeckBox> items = itemManager.getFilteredItems();
+
+ for (Map.Entry btn : buttonMap.entrySet()) {
+ if (btn.getKey().predicate != null) {
+ int count = items.countAll(DeckBox.createPredicate(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES)), DeckBox.class);
+ btn.getValue().setText(String.valueOf(count));
+ }
+ }
+ getWidget().revalidate();
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/FormatFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/FormatFilter.java
new file mode 100644
index 00000000000..e4d1fc6f2b1
--- /dev/null
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/FormatFilter.java
@@ -0,0 +1,142 @@
+package forge.gui.toolbox.itemmanager.filters;
+
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import forge.Singletons;
+import forge.card.CardEdition;
+import forge.game.GameFormat;
+import forge.gui.toolbox.itemmanager.ItemManager;
+import forge.item.InventoryItem;
+
+/**
+ * TODO: Write javadoc for this type.
+ *
+ */
+public abstract class FormatFilter extends ListLabelFilter {
+ protected boolean allowReprints = true;
+ protected final Set formats = new HashSet();
+
+ public FormatFilter(ItemManager super T> itemManager0) {
+ super(itemManager0);
+ }
+ public FormatFilter(ItemManager super T> itemManager0, GameFormat format0) {
+ super(itemManager0);
+ this.formats.add(format0);
+ }
+
+ @Override
+ protected String getTooltip() {
+ Set sets = new HashSet();
+ Set bannedCards = new HashSet();
+
+ for (GameFormat format : this.formats) {
+ List formatSets = format.getAllowedSetCodes();
+ if (formatSets != null) {
+ sets.addAll(formatSets);
+ }
+ List formatBannedCards = format.getBannedCardNames();
+ if (formatBannedCards != null) {
+ bannedCards.addAll(formatBannedCards);
+ }
+ }
+
+ //use HTML tooltips so we can insert line breaks
+ int lastLen = 0;
+ int lineLen = 0;
+ StringBuilder tooltip = new StringBuilder("Sets:");
+ if (sets.isEmpty()) {
+ tooltip.append(" All");
+ }
+ else {
+ CardEdition.Collection editions = Singletons.getMagicDb().getEditions();
+
+ for (String code : sets) {
+ // don't let a single line get too long
+ if (50 < lineLen) {
+ tooltip.append("
");
+ lastLen += lineLen;
+ lineLen = 0;
+ }
+
+ CardEdition edition = editions.get(code);
+ tooltip.append(" ").append(edition.getName()).append(" (").append(code).append("),");
+ lineLen = tooltip.length() - lastLen;
+ }
+
+ // chop off last comma
+ tooltip.delete(tooltip.length() - 1, tooltip.length());
+
+ if (this.allowReprints) {
+ tooltip.append("
Allowing identical cards from other sets");
+ }
+ }
+
+ if (!bannedCards.isEmpty()) {
+ tooltip.append("
Banned:");
+ lastLen += lineLen;
+ lineLen = 0;
+
+ for (String cardName : bannedCards) {
+ // don't let a single line get too long
+ if (50 < lineLen) {
+ tooltip.append("
");
+ lastLen += lineLen;
+ lineLen = 0;
+ }
+
+ tooltip.append(" ").append(cardName).append(";");
+ lineLen = tooltip.length() - lastLen;
+ }
+
+ // chop off last semicolon
+ tooltip.delete(tooltip.length() - 1, tooltip.length());
+ }
+ tooltip.append("");
+ return tooltip.toString();
+ }
+
+ @Override
+ public void reset() {
+ this.formats.clear();
+ this.updateLabel();
+ }
+
+ public static boolean canAddFormat(GameFormat format, FormatFilter existingFilter) {
+ return existingFilter == null || !existingFilter.formats.contains(format);
+ }
+
+ /**
+ * Merge the given filter with this filter if possible
+ * @param filter
+ * @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
+ */
+ @SuppressWarnings("unchecked")
+ @Override
+ public boolean merge(ItemFilter> filter) {
+ FormatFilter formatFilter = (FormatFilter)filter;
+ this.formats.addAll(formatFilter.formats);
+ this.allowReprints = formatFilter.allowReprints;
+ return true;
+ }
+
+ @Override
+ protected String getCaption() {
+ return "Format";
+ }
+
+ @Override
+ protected int getCount() {
+ return this.formats.size();
+ }
+
+ @Override
+ protected Iterable getList() {
+ Set strings = new HashSet();
+ for (GameFormat f : this.formats) {
+ strings.add(f.getName());
+ }
+ return strings;
+ }
+}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java
index 525d835f06e..b7ff939b43b 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java
@@ -153,8 +153,7 @@ public abstract class ItemFilter {
* @param filter
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
*/
- @SuppressWarnings("rawtypes")
- public abstract boolean merge(ItemFilter filter);
+ public abstract boolean merge(ItemFilter> filter);
protected abstract void buildWidget(JPanel widget);
protected abstract void doWidgetLayout(LayoutHelper helper);
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java
index 3e3d5f24fe5..cc496815c32 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/StatTypeFilter.java
@@ -25,6 +25,16 @@ public abstract class StatTypeFilter extends ToggleButt
buttonMap = new HashMap();
}
+ protected void addColorButtons(JPanel widget) {
+ addToggleButton(widget, StatTypes.WHITE);
+ addToggleButton(widget, StatTypes.BLUE);
+ addToggleButton(widget, StatTypes.BLACK);
+ addToggleButton(widget, StatTypes.RED);
+ addToggleButton(widget, StatTypes.GREEN);
+ addToggleButton(widget, StatTypes.COLORLESS);
+ addToggleButton(widget, StatTypes.MULTICOLOR);
+ }
+
@SuppressWarnings("serial")
protected void addToggleButton(JPanel widget, final StatTypes st) {
StringBuilder tooltip = new StringBuilder();
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/TextSearchFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/TextSearchFilter.java
index ecebee4fad8..9dee9bd63a3 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/TextSearchFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/TextSearchFilter.java
@@ -57,8 +57,7 @@ public class TextSearchFilter extends ItemFilter {
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
*/
@Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
+ public boolean merge(ItemFilter> filter) {
return false;
}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java
index f8e9b5aa223..217959f03b9 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java
@@ -103,8 +103,7 @@ public abstract class ToggleButtonsFilter extends ItemF
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
*/
@Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
+ public boolean merge(ItemFilter> filter) {
return true;
}
}
diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java
index 08bd6fc34d8..3e766275288 100644
--- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java
+++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.java
@@ -128,8 +128,7 @@ public abstract class ValueRangeFilter extends ItemFilt
* @return true if filter merged in or to suppress adding a new filter, false to allow adding new filter
*/
@Override
- @SuppressWarnings("rawtypes")
- public boolean merge(ItemFilter filter) {
+ public boolean merge(ItemFilter> filter) {
return true;
}
}
diff --git a/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java b/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java
index 2d1b06a2412..0df0a045f09 100644
--- a/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java
+++ b/forge-gui/src/main/java/forge/limited/LimitedDeckBuilder.java
@@ -276,7 +276,7 @@ public class LimitedDeckBuilder extends DeckGeneratorBase{
private void findBasicLandSets() {
Set sets = new HashSet();
for (PaperCard cp : aiPlayables) {
- CardEdition ee = Singletons.getMagicDb().getEditions().get(cp.edition);
+ CardEdition ee = Singletons.getMagicDb().getEditions().get(cp.getEdition());
if( !sets.contains(cp.getEdition()) && CardEdition.Predicates.hasBasicLands.apply(ee))
sets.add(cp.getEdition());
}