diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java index aac030a4515..534c103524d 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java @@ -95,18 +95,17 @@ public class CardManager extends ItemManager { GuiUtils.addMenuItem(menu, "Formats...", null, new Runnable() { @Override public void run() { - final CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class); + final CardFormatFilter existingFilter = itemManager.getFilter(CardFormatFilter.class); if (existingFilter != null) { - existingFilter.edit(); + existingFilter.edit(itemManager); } else { final DialogChooseFormats dialog = new DialogChooseFormats(); + dialog.setWantReprintsCB(true); // assume user wants things permissive... dialog.setOkCallback(new Runnable() { @Override public void run() { final List formats = dialog.getSelectedFormats(); if (!formats.isEmpty()) { - for(GameFormat format: formats) { - itemManager.addFilter(new CardFormatFilter(itemManager, format)); - } + itemManager.addFilter(new CardFormatFilter(itemManager,formats,dialog.getWantReprints())); } } }); @@ -119,7 +118,7 @@ public class CardManager extends ItemManager { public void run() { CardSetFilter existingFilter = itemManager.getFilter(CardSetFilter.class); if (existingFilter != null) { - existingFilter.edit(); + existingFilter.edit(itemManager); } else { final DialogChooseSets dialog = new DialogChooseSets(null, null, true); diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java index c0817e94e1c..31604a9e53a 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java @@ -250,7 +250,7 @@ public abstract class ItemManager extends JPanel implem if (hideFilters) { GuiUtils.addMenuItem(menu, "Show Filters", null, cmdHideFilters); } else { - final JMenu addMenu = GuiUtils.createMenu("Add Filter"); + final JMenu addMenu = GuiUtils.createMenu("Add/Edit Filter"); GuiUtils.addMenuItem(addMenu, "Current text search", KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), cmdAddCurrentSearch, !mainSearchFilter.isEmpty()); diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFormatFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFormatFilter.java index 70b39925c45..e2252f506e1 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFormatFilter.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardFormatFilter.java @@ -1,21 +1,29 @@ package forge.itemmanager.filters; +import java.util.List; import com.google.common.base.Predicate; import forge.game.GameFormat; import forge.item.PaperCard; import forge.itemmanager.ItemManager; import forge.itemmanager.SFilterUtil; - +import forge.screens.home.quest.DialogChooseFormats; public class CardFormatFilter extends FormatFilter { public CardFormatFilter(ItemManager itemManager0) { super(itemManager0); } + public CardFormatFilter(ItemManager itemManager0, GameFormat format0) { super(itemManager0, format0); } + public CardFormatFilter(ItemManager itemManager0, List formats0,boolean allowReprints0) { + super(itemManager0); + this.formats.addAll(formats0); + this.allowReprints = allowReprints0; + } + @Override public ItemFilter createCopy() { CardFormatFilter copy = new CardFormatFilter(itemManager); @@ -27,4 +35,20 @@ public class CardFormatFilter extends FormatFilter { protected final Predicate buildPredicate() { return SFilterUtil.buildFormatFilter(this.formats, this.allowReprints); } + + public void edit(final ItemManager itemManager) { + final DialogChooseFormats dialog = new DialogChooseFormats(this.formats); + final CardFormatFilter itemFilter = this; + dialog.setWantReprintsCB(allowReprints); + + dialog.setOkCallback(new Runnable() { + @Override + public void run() { + formats.clear(); + formats.addAll(dialog.getSelectedFormats()); + allowReprints = dialog.getWantReprints(); + itemManager.addFilter(itemFilter); // this adds/updates the current filter... + } + }); + } } diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardSetFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardSetFilter.java index 79b4a6f8fa4..62ae54615cb 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardSetFilter.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/CardSetFilter.java @@ -49,16 +49,18 @@ public class CardSetFilter extends CardFormatFilter { return true; } - public void edit() { + public void edit(final ItemManager itemManager) { final DialogChooseSets dialog = new DialogChooseSets(this.sets, null, true); + final CardSetFilter itemFilter = this; + dialog.setWantReprintsCB(allowReprints); + 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)); + itemManager.addFilter(itemFilter); // this adds/updates the current filter } }); } diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java index 70e3896d7a3..378715b3a07 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseFormats.java @@ -116,6 +116,10 @@ public class DialogChooseFormats { return wantReprints; } + public void setWantReprintsCB(boolean isSet) { + cbWantReprints.setSelected(isSet); + } + private JPanel makeCheckBoxList(List formats, String title, boolean focused) { choices.addAll(formats); diff --git a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java index fc8969b9134..1177b4ce256 100644 --- a/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java +++ b/forge-gui-desktop/src/main/java/forge/screens/home/quest/DialogChooseSets.java @@ -24,7 +24,7 @@ public class DialogChooseSets { private Runnable okCallback; private final List choices = new ArrayList<>(); - private final FCheckBox cbWantReprints = new FCheckBox("Allow compatible reprints from other sets"); + private final FCheckBox cbWantReprints = new FCheckBox("Display compatible reprints from more recent sets"); // lists are of set codes (e.g. "2ED") public DialogChooseSets(Collection preselectedSets, Collection unselectableSets, boolean showWantReprintsCheckbox) { @@ -129,6 +129,10 @@ public class DialogChooseSets { public boolean getWantReprints() { return wantReprints; } + + public void setWantReprintsCB(boolean isSet) { + cbWantReprints.setSelected(isSet); + } private JPanel makeCheckBoxList(List sets, String title, boolean focused) {