mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 19:28:01 +00:00
ItemManager now includes a new special method to get filtered set codes from CardPool
The method is implemented in the abstract super class (ItemManager) and so inherited by `CardManager` (where there is no format nor game type that could be used), and specialised by `DeckManager`. In particular, the only current format with limitations on sets is Brawl, and so the only one accounted for. In any case, the list of (unique) allowed sets is automatically inferred by default from the cardpool (as in the case of `CardManager`). It is important to note that this filter is stored into an attribute, and so the list is calculated only once. The results of this list will be passed on the `DialogChooseSets` to update the content of the dialog panel, accordingly.
This commit is contained in:
@@ -1,9 +1,6 @@
|
|||||||
package forge.itemmanager;
|
package forge.itemmanager;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
@@ -126,13 +123,14 @@ public class CardManager extends ItemManager<PaperCard> {
|
|||||||
existingFilter.edit(itemManager);
|
existingFilter.edit(itemManager);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
|
List<String> limitedSets = getFilteredSetCodesInCatalog();
|
||||||
|
final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true);
|
||||||
dialog.setOkCallback(new Runnable() {
|
dialog.setOkCallback(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
List<String> sets = dialog.getSelectedSets();
|
List<String> sets = dialog.getSelectedSets();
|
||||||
if (!sets.isEmpty()) {
|
if (!sets.isEmpty()) {
|
||||||
itemManager.addFilter(new CardSetFilter(itemManager, sets, dialog.getWantReprints()));
|
itemManager.addFilter(new CardSetFilter(itemManager, sets, limitedSets, dialog.getWantReprints()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -257,12 +257,13 @@ public final class DeckManager extends ItemManager<DeckProxy> implements IHasGam
|
|||||||
if (existingFilter != null) {
|
if (existingFilter != null) {
|
||||||
existingFilter.edit();
|
existingFilter.edit();
|
||||||
} else {
|
} else {
|
||||||
final DialogChooseSets dialog = new DialogChooseSets(null, null, true);
|
List<String> limitedSets = getFilteredSetCodesInCatalog();
|
||||||
|
final DialogChooseSets dialog = new DialogChooseSets(null, null, limitedSets, true);
|
||||||
dialog.setOkCallback(new Runnable() {
|
dialog.setOkCallback(new Runnable() {
|
||||||
@Override public void run() {
|
@Override public void run() {
|
||||||
final List<String> sets = dialog.getSelectedSets();
|
final List<String> sets = dialog.getSelectedSets();
|
||||||
if (!sets.isEmpty()) {
|
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<DeckProxy> implements IHasGam
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected List<String> 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) {
|
public void editDeck(final DeckProxy deck) {
|
||||||
ACEditorBase<? extends InventoryItem, ? extends DeckBase> editorCtrl = null;
|
ACEditorBase<? extends InventoryItem, ? extends DeckBase> editorCtrl = null;
|
||||||
FScreen screen = null;
|
FScreen screen = null;
|
||||||
|
|||||||
@@ -22,12 +22,7 @@ import java.awt.Toolkit;
|
|||||||
import java.awt.event.KeyAdapter;
|
import java.awt.event.KeyAdapter;
|
||||||
import java.awt.event.KeyEvent;
|
import java.awt.event.KeyEvent;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import javax.swing.JMenu;
|
import javax.swing.JMenu;
|
||||||
@@ -48,12 +43,14 @@ import com.google.common.collect.Lists;
|
|||||||
import forge.gui.GuiUtils;
|
import forge.gui.GuiUtils;
|
||||||
import forge.gui.UiCommand;
|
import forge.gui.UiCommand;
|
||||||
import forge.item.InventoryItem;
|
import forge.item.InventoryItem;
|
||||||
|
import forge.item.PaperCard;
|
||||||
import forge.itemmanager.filters.ItemFilter;
|
import forge.itemmanager.filters.ItemFilter;
|
||||||
import forge.itemmanager.views.ImageView;
|
import forge.itemmanager.views.ImageView;
|
||||||
import forge.itemmanager.views.ItemListView;
|
import forge.itemmanager.views.ItemListView;
|
||||||
import forge.itemmanager.views.ItemTableColumn;
|
import forge.itemmanager.views.ItemTableColumn;
|
||||||
import forge.itemmanager.views.ItemView;
|
import forge.itemmanager.views.ItemView;
|
||||||
import forge.localinstance.skin.FSkinProp;
|
import forge.localinstance.skin.FSkinProp;
|
||||||
|
import forge.screens.deckeditor.views.VCardCatalog;
|
||||||
import forge.screens.match.controllers.CDetailPicture;
|
import forge.screens.match.controllers.CDetailPicture;
|
||||||
import forge.toolbox.ContextMenuBuilder;
|
import forge.toolbox.ContextMenuBuilder;
|
||||||
import forge.toolbox.FComboBox;
|
import forge.toolbox.FComboBox;
|
||||||
@@ -1279,4 +1276,23 @@ public abstract class ItemManager<T extends InventoryItem> extends JPanel implem
|
|||||||
|
|
||||||
menu.show(e.getComponent(), e.getX(), e.getY());
|
menu.show(e.getComponent(), e.getX(), e.getY());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected List<String> filteredSetCodesInCatalog = null;
|
||||||
|
protected List<String> getFilteredSetCodesInCatalog(){
|
||||||
|
if (filteredSetCodesInCatalog == null) {
|
||||||
|
ItemManager<? extends InventoryItem> cardsManager = VCardCatalog.SINGLETON_INSTANCE.getItemManager();
|
||||||
|
if (cardsManager == null)
|
||||||
|
return null;
|
||||||
|
try {
|
||||||
|
ItemPool<PaperCard> cardsPool = (ItemPool<PaperCard>) cardsManager.getPool();
|
||||||
|
Set<String> uniqueSetCodes = new HashSet<>(); // init
|
||||||
|
for (Entry<PaperCard, Integer> entry : cardsPool)
|
||||||
|
uniqueSetCodes.add(entry.getKey().getEdition());
|
||||||
|
filteredSetCodesInCatalog = new ArrayList<>(uniqueSetCodes);
|
||||||
|
} catch (ClassCastException ex) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return filteredSetCodesInCatalog;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user