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 86c4f82c562..8f69d994b4e 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/CardManager.java @@ -1,9 +1,6 @@ package forge.itemmanager; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; +import java.util.*; import java.util.Map.Entry; import javax.swing.JMenu; @@ -126,13 +123,14 @@ public class CardManager extends ItemManager { existingFilter.edit(itemManager); } else { - final DialogChooseSets dialog = new DialogChooseSets(null, null, true); + List limitedSets = getFilteredSetCodesInCatalog(); + final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true); dialog.setOkCallback(new Runnable() { @Override public void run() { List sets = dialog.getSelectedSets(); if (!sets.isEmpty()) { - itemManager.addFilter(new CardSetFilter(itemManager, sets, dialog.getWantReprints())); + itemManager.addFilter(new CardSetFilter(itemManager, sets, limitedSets, dialog.getWantReprints())); } } }); diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java b/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java index b0574553527..4a583e9fd2b 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/DeckManager.java @@ -257,12 +257,13 @@ public final class DeckManager extends ItemManager implements IHasGam if (existingFilter != null) { existingFilter.edit(); } else { - final DialogChooseSets dialog = new DialogChooseSets(null, null, true); + List limitedSets = getFilteredSetCodesInCatalog(); + final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true); dialog.setOkCallback(new Runnable() { @Override public void run() { final List sets = dialog.getSelectedSets(); if (!sets.isEmpty()) { - addFilter(new DeckSetFilter(DeckManager.this, sets, dialog.getWantReprints())); + addFilter(new DeckSetFilter(DeckManager.this, sets, limitedSets, dialog.getWantReprints())); } } }); @@ -334,6 +335,16 @@ public final class DeckManager extends ItemManager implements IHasGam }); } + @Override + protected List getFilteredSetCodesInCatalog(){ + GameType gameType = getGameType(); + if (gameType == GameType.Brawl) { + filteredSetCodesInCatalog = FModel.getFormats().get("Brawl").getAllowedSetCodes(); + return filteredSetCodesInCatalog; + } + return super.getFilteredSetCodesInCatalog(); + } + public void editDeck(final DeckProxy deck) { ACEditorBase editorCtrl = null; FScreen screen = null; 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 dcd7287c6a2..041d1312fd4 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/ItemManager.java @@ -22,12 +22,7 @@ import java.awt.Toolkit; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.Map.Entry; import javax.swing.JMenu; @@ -48,12 +43,14 @@ import com.google.common.collect.Lists; import forge.gui.GuiUtils; import forge.gui.UiCommand; import forge.item.InventoryItem; +import forge.item.PaperCard; import forge.itemmanager.filters.ItemFilter; import forge.itemmanager.views.ImageView; import forge.itemmanager.views.ItemListView; import forge.itemmanager.views.ItemTableColumn; import forge.itemmanager.views.ItemView; import forge.localinstance.skin.FSkinProp; +import forge.screens.deckeditor.views.VCardCatalog; import forge.screens.match.controllers.CDetailPicture; import forge.toolbox.ContextMenuBuilder; import forge.toolbox.FComboBox; @@ -1279,4 +1276,23 @@ public abstract class ItemManager extends JPanel implem menu.show(e.getComponent(), e.getX(), e.getY()); } + + protected List filteredSetCodesInCatalog = null; + protected List getFilteredSetCodesInCatalog(){ + if (filteredSetCodesInCatalog == null) { + ItemManager cardsManager = VCardCatalog.SINGLETON_INSTANCE.getItemManager(); + if (cardsManager == null) + return null; + try { + ItemPool cardsPool = (ItemPool) cardsManager.getPool(); + Set uniqueSetCodes = new HashSet<>(); // init + for (Entry entry : cardsPool) + uniqueSetCodes.add(entry.getKey().getEdition()); + filteredSetCodesInCatalog = new ArrayList<>(uniqueSetCodes); + } catch (ClassCastException ex) { + return null; + } + } + return filteredSetCodesInCatalog; + } }