From 68bcae4101dab26218ac233a4b07b68bc7f3858c Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 17 Jul 2014 02:47:47 +0000 Subject: [PATCH] Add Set group by option --- .../forge/itemmanager/views/ImageView.java | 23 ++------- .../forge/itemmanager/views/ImageView.java | 22 ++------- .../main/java/forge/interfaces/IComboBox.java | 1 + .../main/java/forge/itemmanager/GroupDef.java | 47 +++++++++++++++++++ .../forge/itemmanager/SItemManagerUtil.java | 23 +++++++++ 5 files changed, 78 insertions(+), 38 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java index 9b18bae108c..b287382410d 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java @@ -12,6 +12,7 @@ import forge.itemmanager.GroupDef; import forge.itemmanager.ItemManager; import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.ItemManagerModel; +import forge.itemmanager.SItemManagerUtil; import forge.screens.match.controllers.CDetail; import forge.screens.match.controllers.CPicture; import forge.toolbox.*; @@ -43,11 +44,6 @@ public class ImageView extends ItemView { private static final int MIN_COLUMN_COUNT = 1; private static final int MAX_COLUMN_COUNT = 10; - private static final GroupDef[] CARD_GROUPBY_OPTIONS = { GroupDef.DEFAULT, GroupDef.CARD_TYPE, GroupDef.COLOR, GroupDef.COLOR_IDENTITY, GroupDef.CARD_RARITY }; - private static final GroupDef[] DECK_GROUPBY_OPTIONS = { GroupDef.COLOR, GroupDef.COLOR_IDENTITY }; - private static final ColumnDef[] CARD_PILEBY_OPTIONS = { ColumnDef.CMC, ColumnDef.COLOR, ColumnDef.NAME, ColumnDef.COST, ColumnDef.TYPE, ColumnDef.RARITY, ColumnDef.SET }; - private static final ColumnDef[] DECK_PILEBY_OPTIONS = { ColumnDef.DECK_COLOR, ColumnDef.DECK_FOLDER, ColumnDef.NAME, ColumnDef.DECK_FORMAT, ColumnDef.DECK_EDITION }; - private final CardViewDisplay display; private final List selectedIndices = new ArrayList(); private int columnCount = 4; @@ -142,26 +138,15 @@ public class ImageView extends ItemView { public ImageView(ItemManager itemManager0, ItemManagerModel model0) { super(itemManager0, model0); - //setup options - boolean isDeckManager = itemManager0.getGenericType().equals(DeckProxy.class); - GroupDef[] groupByOptions = isDeckManager ? DECK_GROUPBY_OPTIONS : CARD_GROUPBY_OPTIONS; - ColumnDef[] pileByOptions = isDeckManager ? DECK_PILEBY_OPTIONS : CARD_PILEBY_OPTIONS; - cbGroupByOptions.addItem("(none)"); - cbPileByOptions.addItem("(none)"); - for (GroupDef option : groupByOptions) { - cbGroupByOptions.addItem(option); - } - for (ColumnDef option : pileByOptions) { - cbPileByOptions.addItem(option); - } + + SItemManagerUtil.populateImageViewOptions(itemManager0, cbGroupByOptions, cbPileByOptions); + for (Integer i = MIN_COLUMN_COUNT; i <= MAX_COLUMN_COUNT; i++) { cbColumnCount.addItem(i); } cbGroupByOptions.setMaximumRowCount(cbGroupByOptions.getItemCount()); cbPileByOptions.setMaximumRowCount(cbPileByOptions.getItemCount()); cbColumnCount.setMaximumRowCount(cbColumnCount.getItemCount()); - cbGroupByOptions.setSelectedIndex(0); - cbPileByOptions.setSelectedIndex(0); cbColumnCount.setSelectedIndex(columnCount - MIN_COLUMN_COUNT); cbGroupByOptions.addActionListener(new ActionListener() { diff --git a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java index 3a287d5b662..502004e1bff 100644 --- a/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java +++ b/forge-gui-mobile/src/forge/itemmanager/views/ImageView.java @@ -20,6 +20,7 @@ import forge.itemmanager.ItemColumn; import forge.itemmanager.ItemManager; import forge.itemmanager.ItemManagerConfig; import forge.itemmanager.ItemManagerModel; +import forge.itemmanager.SItemManagerUtil; import forge.itemmanager.filters.ItemFilter; import forge.toolbox.FCardPanel; import forge.toolbox.FComboBox; @@ -54,11 +55,6 @@ public class ImageView extends ItemView { private static final int MIN_COLUMN_COUNT = 1; private static final int MAX_COLUMN_COUNT = 10; - private static final GroupDef[] CARD_GROUPBY_OPTIONS = { GroupDef.DEFAULT, GroupDef.CARD_TYPE, GroupDef.COLOR, GroupDef.COLOR_IDENTITY, GroupDef.CARD_RARITY }; - private static final GroupDef[] DECK_GROUPBY_OPTIONS = { GroupDef.COLOR, GroupDef.COLOR_IDENTITY }; - private static final ColumnDef[] CARD_PILEBY_OPTIONS = { ColumnDef.CMC, ColumnDef.COLOR, ColumnDef.NAME, ColumnDef.COST, ColumnDef.TYPE, ColumnDef.RARITY, ColumnDef.SET }; - private static final ColumnDef[] DECK_PILEBY_OPTIONS = { ColumnDef.DECK_COLOR, ColumnDef.DECK_FOLDER, ColumnDef.NAME, ColumnDef.DECK_FORMAT, ColumnDef.DECK_EDITION }; - private final List selectedIndices = new ArrayList(); private int columnCount = 4; private float scrollHeight = 0; @@ -146,20 +142,8 @@ public class ImageView extends ItemView { public ImageView(ItemManager itemManager0, ItemManagerModel model0) { super(itemManager0, model0); - //setup options - boolean isDeckManager = itemManager0.getGenericType().equals(DeckProxy.class); - GroupDef[] groupByOptions = isDeckManager ? DECK_GROUPBY_OPTIONS : CARD_GROUPBY_OPTIONS; - ColumnDef[] pileByOptions = isDeckManager ? DECK_PILEBY_OPTIONS : CARD_PILEBY_OPTIONS; - cbGroupByOptions.addItem("(none)"); - cbPileByOptions.addItem("(none)"); - for (GroupDef option : groupByOptions) { - cbGroupByOptions.addItem(option); - } - for (ColumnDef option : pileByOptions) { - cbPileByOptions.addItem(option); - } - cbGroupByOptions.setSelectedIndex(0); - cbPileByOptions.setSelectedIndex(0); + + SItemManagerUtil.populateImageViewOptions(itemManager0, cbGroupByOptions, cbPileByOptions); cbGroupByOptions.setChangedHandler(new FEventHandler() { @Override diff --git a/forge-gui/src/main/java/forge/interfaces/IComboBox.java b/forge-gui/src/main/java/forge/interfaces/IComboBox.java index 3d84c43d8db..531270512b8 100644 --- a/forge-gui/src/main/java/forge/interfaces/IComboBox.java +++ b/forge-gui/src/main/java/forge/interfaces/IComboBox.java @@ -6,6 +6,7 @@ public interface IComboBox { boolean isVisible(); void setVisible(boolean b0); void setSelectedItem(E item); + void setSelectedIndex(int index); void addItem(E item); void removeAllItems(); } diff --git a/forge-gui/src/main/java/forge/itemmanager/GroupDef.java b/forge-gui/src/main/java/forge/itemmanager/GroupDef.java index 87bb77d73eb..e34875f24dd 100644 --- a/forge-gui/src/main/java/forge/itemmanager/GroupDef.java +++ b/forge-gui/src/main/java/forge/itemmanager/GroupDef.java @@ -1,12 +1,17 @@ package forge.itemmanager; +import java.util.HashMap; +import java.util.Map; + import com.google.common.base.Function; +import forge.card.CardEdition; import forge.card.CardType; import forge.card.ColorSet; import forge.deck.DeckProxy; import forge.item.InventoryItem; import forge.item.PaperCard; +import forge.model.FModel; public enum GroupDef { COLOR("Color", getColorGroups(), @@ -47,6 +52,25 @@ public enum GroupDef { return -1; } }), + SET("Set", getSetGroups(), + new Function() { + @Override + public ColumnDef apply(final Integer groupIndex) { + return null; + } + }, + new Function() { + @Override + public Integer apply(final InventoryItem item) { + if (item instanceof PaperCard) { + return getSetGroup(((PaperCard) item).getEdition()); + } + else if (item instanceof DeckProxy) { + return getSetGroup(((DeckProxy) item).getEdition().getCode()); + } + return -1; + } + }), DEFAULT("Default", new String[] { "Creatures", "Spells", "Lands" }, new Function() { @@ -214,4 +238,27 @@ public enum GroupDef { } return -1; //shouldn't happen } + + private static Map setGroupMap; + + private static String[] getSetGroups() { + setGroupMap = new HashMap(); //cache mappings to make lookup quicker later + + int groupNum = 0; + String[] setGroups = new String[FModel.getMagicDb().getEditions().size()]; + for (CardEdition edition : FModel.getMagicDb().getEditions()) { + setGroups[groupNum] = edition.getName(); + setGroupMap.put(edition.getCode(), groupNum); + groupNum++; + } + return setGroups; + } + + private static Integer getSetGroup(String set) { + Integer groupNum = setGroupMap.get(set); + if (groupNum == null) { + groupNum = -1; + } + return groupNum; + } } diff --git a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java index b380ecb442e..5d61caa3067 100644 --- a/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java +++ b/forge-gui/src/main/java/forge/itemmanager/SItemManagerUtil.java @@ -3,6 +3,8 @@ package forge.itemmanager; import forge.assets.FSkinProp; import forge.card.CardRules; import forge.card.CardRulesPredicates; +import forge.deck.DeckProxy; +import forge.interfaces.IComboBox; import forge.item.InventoryItem; import forge.util.ComparableOp; @@ -137,4 +139,25 @@ public final class SItemManagerUtil { } return builder.toString(); } + + private static final GroupDef[] CARD_GROUPBY_OPTIONS = { GroupDef.DEFAULT, GroupDef.CARD_TYPE, GroupDef.COLOR, GroupDef.COLOR_IDENTITY, GroupDef.SET, GroupDef.CARD_RARITY }; + private static final GroupDef[] DECK_GROUPBY_OPTIONS = { GroupDef.COLOR, GroupDef.COLOR_IDENTITY, GroupDef.SET }; + private static final ColumnDef[] CARD_PILEBY_OPTIONS = { ColumnDef.CMC, ColumnDef.COLOR, ColumnDef.NAME, ColumnDef.COST, ColumnDef.TYPE, ColumnDef.RARITY, ColumnDef.SET }; + private static final ColumnDef[] DECK_PILEBY_OPTIONS = { ColumnDef.DECK_COLOR, ColumnDef.DECK_FOLDER, ColumnDef.NAME, ColumnDef.DECK_FORMAT, ColumnDef.DECK_EDITION }; + + public static void populateImageViewOptions(IItemManager itemManager, IComboBox cbGroupByOptions, IComboBox cbPileByOptions) { + boolean isDeckManager = itemManager.getGenericType().equals(DeckProxy.class); + GroupDef[] groupByOptions = isDeckManager ? DECK_GROUPBY_OPTIONS : CARD_GROUPBY_OPTIONS; + ColumnDef[] pileByOptions = isDeckManager ? DECK_PILEBY_OPTIONS : CARD_PILEBY_OPTIONS; + cbGroupByOptions.addItem("(none)"); + cbPileByOptions.addItem("(none)"); + for (GroupDef option : groupByOptions) { + cbGroupByOptions.addItem(option); + } + for (ColumnDef option : pileByOptions) { + cbPileByOptions.addItem(option); + } + cbGroupByOptions.setSelectedIndex(0); + cbPileByOptions.setSelectedIndex(0); + } }