Remove need for ITableContainer

This commit is contained in:
drdev
2013-08-11 23:48:18 +00:00
parent 259086a979
commit ca6fe5105c
19 changed files with 190 additions and 142 deletions

1
.gitattributes vendored
View File

@@ -15002,7 +15002,6 @@ src/main/java/forge/gui/toolbox/itemmanager/SItemManagerIO.java -text
src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java -text src/main/java/forge/gui/toolbox/itemmanager/SItemManagerUtil.java -text
src/main/java/forge/gui/toolbox/itemmanager/package-info.java -text src/main/java/forge/gui/toolbox/itemmanager/package-info.java -text
src/main/java/forge/gui/toolbox/itemmanager/table/AlwaysShowToolTip.java -text src/main/java/forge/gui/toolbox/itemmanager/table/AlwaysShowToolTip.java -text
src/main/java/forge/gui/toolbox/itemmanager/table/ITableContainer.java -text
src/main/java/forge/gui/toolbox/itemmanager/table/IntegerRenderer.java -text src/main/java/forge/gui/toolbox/itemmanager/table/IntegerRenderer.java -text
src/main/java/forge/gui/toolbox/itemmanager/table/ItemTable.java -text src/main/java/forge/gui/toolbox/itemmanager/table/ItemTable.java -text
src/main/java/forge/gui/toolbox/itemmanager/table/ItemTableModel.java -text src/main/java/forge/gui/toolbox/itemmanager/table/ItemTableModel.java -text

View File

@@ -108,7 +108,7 @@ public enum CCardCatalog implements ICDoc {
} }
}; };
for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> entry : VCardCatalog.SINGLETON_INSTANCE.getStatLabels().entrySet()) { for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> entry : VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabels().entrySet()) {
final FLabel statLabel = entry.getValue(); final FLabel statLabel = entry.getValue();
statLabel.setCommand(updateFilterCommand); statLabel.setCommand(updateFilterCommand);
@@ -123,7 +123,7 @@ public enum CCardCatalog implements ICDoc {
disableFiltering = true; disableFiltering = true;
for (SItemManagerUtil.StatTypes s : SItemManagerUtil.StatTypes.values()) { for (SItemManagerUtil.StatTypes s : SItemManagerUtil.StatTypes.values()) {
if (s.group == group && s != st) { if (s.group == group && s != st) {
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(s).setSelected(false); VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabel(s).setSelected(false);
} }
} }
statLabel.setSelected(true); statLabel.setSelected(true);
@@ -135,7 +135,7 @@ public enum CCardCatalog implements ICDoc {
} }
} }
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(SItemManagerUtil.StatTypes.TOTAL).setCommand(new Command() { VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabel(SItemManagerUtil.StatTypes.TOTAL).setCommand(new Command() {
private boolean lastToggle = true; private boolean lastToggle = true;
@Override @Override
@@ -144,7 +144,7 @@ public enum CCardCatalog implements ICDoc {
lastToggle = !lastToggle; lastToggle = !lastToggle;
for (SItemManagerUtil.StatTypes s : SItemManagerUtil.StatTypes.values()) { for (SItemManagerUtil.StatTypes s : SItemManagerUtil.StatTypes.values()) {
if (SItemManagerUtil.StatTypes.TOTAL != s) { if (SItemManagerUtil.StatTypes.TOTAL != s) {
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(s).setSelected(lastToggle); VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabel(s).setSelected(lastToggle);
} }
} }
disableFiltering = false; disableFiltering = false;
@@ -351,7 +351,7 @@ public enum CCardCatalog implements ICDoc {
List<Predicate<? super PaperCard>> cardPredicates = new ArrayList<Predicate<? super PaperCard>>(); List<Predicate<? super PaperCard>> cardPredicates = new ArrayList<Predicate<? super PaperCard>>();
cardPredicates.add(Predicates.instanceOf(PaperCard.class)); cardPredicates.add(Predicates.instanceOf(PaperCard.class));
cardPredicates.add(SFilterUtil.buildColorAndTypeFilter(VCardCatalog.SINGLETON_INSTANCE.getStatLabels())); cardPredicates.add(SFilterUtil.buildColorAndTypeFilter(VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabels()));
cardPredicates.addAll(activePredicates); cardPredicates.addAll(activePredicates);
// apply current values in the range filters // apply current values in the range filters
@@ -373,7 +373,7 @@ public enum CCardCatalog implements ICDoc {
// show packs and decks in the card shop according to the toggle setting // show packs and decks in the card shop according to the toggle setting
// this is special-cased apart from the buildColorAndTypeFilter() above // this is special-cased apart from the buildColorAndTypeFilter() above
if (VCardCatalog.SINGLETON_INSTANCE.getStatLabel(StatTypes.PACK).getSelected()) { if (VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabel(StatTypes.PACK).getSelected()) {
List<Predicate<? super PaperCard>> itemPredicates = new ArrayList<Predicate<? super PaperCard>>(); List<Predicate<? super PaperCard>> itemPredicates = new ArrayList<Predicate<? super PaperCard>>();
itemPredicates.add(cardFilter); itemPredicates.add(cardFilter);
itemPredicates.add(ItemPredicate.Presets.IS_PACK); itemPredicates.add(ItemPredicate.Presets.IS_PACK);

View File

@@ -125,7 +125,7 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
} }
if (sectionMode == DeckSection.Avatar || sectionMode == DeckSection.Commander) { if (sectionMode == DeckSection.Avatar || sectionMode == DeckSection.Commander) {
for(Map.Entry<PaperCard, Integer> cp : getDeckManager().getItems()) { for(Map.Entry<PaperCard, Integer> cp : getDeckManager().getPool()) {
getDeckManager().removeItem(cp.getKey(), cp.getValue()); getDeckManager().removeItem(cp.getKey(), cp.getValue());
} }
} }
@@ -310,8 +310,8 @@ public final class CEditorConstructed extends ACEditorBase<PaperCard, Deck> {
final List<TableColumnInfo<InventoryItem>> lstCatalogCols = SColumnUtil.getCatalogDefaultColumns(); final List<TableColumnInfo<InventoryItem>> lstCatalogCols = SColumnUtil.getCatalogDefaultColumns();
lstCatalogCols.remove(SColumnUtil.getColumn(ColumnName.CAT_QUANTITY)); lstCatalogCols.remove(SColumnUtil.getColumn(ColumnName.CAT_QUANTITY));
this.getCatalogManager().getTable().setup(VCardCatalog.SINGLETON_INSTANCE, lstCatalogCols); this.getCatalogManager().getTable().setup(lstCatalogCols);
this.getDeckManager().getTable().setup(VCurrentDeck.SINGLETON_INSTANCE, SColumnUtil.getDeckDefaultColumns()); this.getDeckManager().getTable().setup(SColumnUtil.getDeckDefaultColumns());
SItemManagerUtil.resetUI(); SItemManagerUtil.resetUI();

View File

@@ -93,8 +93,8 @@ public class CEditorDraftingProcess extends ACEditorBase<PaperCard, DeckGroup> {
* </p> * </p>
*/ */
private void setup() { private void setup() {
this.getCatalogManager().getTable().setup(VCardCatalog.SINGLETON_INSTANCE, SColumnUtil.getCatalogDefaultColumns()); this.getCatalogManager().getTable().setup(SColumnUtil.getCatalogDefaultColumns());
this.getDeckManager().getTable().setup(VCurrentDeck.SINGLETON_INSTANCE, SColumnUtil.getDeckDefaultColumns()); this.getDeckManager().getTable().setup(SColumnUtil.getDeckDefaultColumns());
ccAddLabel = VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().getText(); ccAddLabel = VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().getText();
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText("Choose Card"); VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText("Choose Card");
@@ -171,7 +171,7 @@ public class CEditorDraftingProcess extends ACEditorBase<PaperCard, DeckGroup> {
// add sideboard to deck // add sideboard to deck
CardPool side = deck.getOrCreate(DeckSection.Sideboard); CardPool side = deck.getOrCreate(DeckSection.Sideboard);
side.addAll(this.getDeckManager().getItems()); side.addAll(this.getDeckManager().getPool());
final CardEdition landSet = IBoosterDraft.LAND_SET_CODE[0]; final CardEdition landSet = IBoosterDraft.LAND_SET_CODE[0];
final int landsCount = 20; final int landsCount = 20;

View File

@@ -160,8 +160,8 @@ public final class CEditorLimited extends ACEditorBase<PaperCard, DeckGroup> {
*/ */
@Override @Override
public void init() { public void init() {
this.getCatalogManager().getTable().setup(VCardCatalog.SINGLETON_INSTANCE, SColumnUtil.getCatalogDefaultColumns()); this.getCatalogManager().getTable().setup(SColumnUtil.getCatalogDefaultColumns());
this.getDeckManager().getTable().setup(VCurrentDeck.SINGLETON_INSTANCE, SColumnUtil.getDeckDefaultColumns()); this.getDeckManager().getTable().setup(SColumnUtil.getDeckDefaultColumns());
SItemManagerUtil.resetUI(); SItemManagerUtil.resetUI();

View File

@@ -278,8 +278,8 @@ public final class CEditorQuest extends ACEditorBase<PaperCard, Deck> {
columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions( columnsDeck.get(columnsDeck.size() - 1).setSortAndDisplayFunctions(
this.fnDeckCompare, this.fnDeckGet); this.fnDeckCompare, this.fnDeckGet);
this.getCatalogManager().getTable().setup(VCardCatalog.SINGLETON_INSTANCE, columnsCatalog); this.getCatalogManager().getTable().setup(columnsCatalog);
this.getDeckManager().getTable().setup(VCurrentDeck.SINGLETON_INSTANCE, columnsDeck); this.getDeckManager().getTable().setup(columnsDeck);
Deck deck = new Deck(); Deck deck = new Deck();

View File

@@ -188,8 +188,8 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
columnsDeck.remove(SColumnUtil.getColumn(ColumnName.DECK_AI)); columnsDeck.remove(SColumnUtil.getColumn(ColumnName.DECK_AI));
// Setup with current column set // Setup with current column set
this.getCatalogManager().getTable().setup(VCardCatalog.SINGLETON_INSTANCE, columnsCatalog); this.getCatalogManager().getTable().setup(columnsCatalog);
this.getDeckManager().getTable().setup(VCurrentDeck.SINGLETON_INSTANCE, columnsDeck); this.getDeckManager().getTable().setup(columnsDeck);
SItemManagerUtil.resetUI(); SItemManagerUtil.resetUI();
@@ -505,7 +505,7 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
@Override @Override
public void run() { public void run() {
List<Map.Entry<InventoryItem, Integer>> cardsToRemove = new LinkedList<Map.Entry<InventoryItem,Integer>>(); List<Map.Entry<InventoryItem, Integer>> cardsToRemove = new LinkedList<Map.Entry<InventoryItem,Integer>>();
for (Map.Entry<InventoryItem, Integer> item : getDeckManager().getItems()) { for (Map.Entry<InventoryItem, Integer> item : getDeckManager().getPool()) {
PaperCard card = (PaperCard)item.getKey(); PaperCard card = (PaperCard)item.getKey();
int numToKeep = card.getRules().getType().isBasic() ? 50 : 4; int numToKeep = card.getRules().getType().isBasic() ? 50 : 4;
if ("Relentless Rats".equals(card.getName())) { if ("Relentless Rats".equals(card.getName())) {
@@ -536,7 +536,7 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
this.sellPercentageLabel.setText("<html>Selling cards at " + formatter.format(multiPercent) this.sellPercentageLabel.setText("<html>Selling cards at " + formatter.format(multiPercent)
+ "% of their value.<br>" + maxSellingPrice + "</html>"); + "% of their value.<br>" + maxSellingPrice + "</html>");
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(SItemManagerUtil.StatTypes.PACK).setVisible(true); VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabel(SItemManagerUtil.StatTypes.PACK).setVisible(true);
deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE); deckGenParent = removeTab(VDeckgen.SINGLETON_INSTANCE);
allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE); allDecksParent = removeTab(VAllDecks.SINGLETON_INSTANCE);
@@ -571,7 +571,7 @@ public final class CEditorQuestCardShop extends ACEditorBase<InventoryItem, Deck
VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText(CCAddLabel); VCardCatalog.SINGLETON_INSTANCE.getBtnAdd().setText(CCAddLabel);
VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().setText(CDRemLabel); VCurrentDeck.SINGLETON_INSTANCE.getBtnRemove().setText(CDRemLabel);
VCardCatalog.SINGLETON_INSTANCE.getStatLabel(SItemManagerUtil.StatTypes.PACK).setVisible(false); VCardCatalog.SINGLETON_INSTANCE.getItemManager().getStatLabel(SItemManagerUtil.StatTypes.PACK).setVisible(false);
//Re-add tabs //Re-add tabs
if (deckGenParent != null) { if (deckGenParent != null) {

View File

@@ -165,8 +165,8 @@ public final class CEditorVariant extends ACEditorBase<PaperCard, Deck> {
final List<TableColumnInfo<InventoryItem>> lstCatalogCols = SColumnUtil.getCatalogDefaultColumns(); final List<TableColumnInfo<InventoryItem>> lstCatalogCols = SColumnUtil.getCatalogDefaultColumns();
lstCatalogCols.remove(SColumnUtil.getColumn(ColumnName.CAT_QUANTITY)); lstCatalogCols.remove(SColumnUtil.getColumn(ColumnName.CAT_QUANTITY));
this.getCatalogManager().getTable().setup(VCardCatalog.SINGLETON_INSTANCE, lstCatalogCols); this.getCatalogManager().getTable().setup(lstCatalogCols);
this.getDeckManager().getTable().setup(VCurrentDeck.SINGLETON_INSTANCE, SColumnUtil.getDeckDefaultColumns()); this.getDeckManager().getTable().setup(SColumnUtil.getDeckDefaultColumns());
SItemManagerUtil.resetUI(); SItemManagerUtil.resetUI();

View File

@@ -65,7 +65,7 @@ public enum CProbabilities implements ICDoc {
if (ed == null) { return new ArrayList<String>(); } if (ed == null) { return new ArrayList<String>(); }
final ItemPoolView<PaperCard> deck = ItemPool.createFrom(ed.getDeckManager().getItems(), PaperCard.class); final ItemPoolView<PaperCard> deck = ItemPool.createFrom(ed.getDeckManager().getPool(), PaperCard.class);
final List<String> cardProbabilities = new ArrayList<String>(); final List<String> cardProbabilities = new ArrayList<String>();

View File

@@ -71,7 +71,7 @@ public enum CStatistics implements ICDoc {
if (ed == null) { return; } if (ed == null) { return; }
final ItemPoolView<PaperCard> deck = ItemPool.createFrom(ed.getDeckManager().getItems(), PaperCard.class); final ItemPoolView<PaperCard> deck = ItemPool.createFrom(ed.getDeckManager().getPool(), PaperCard.class);
int total = deck.countAll(); int total = deck.countAll();

View File

@@ -37,7 +37,6 @@ import forge.gui.toolbox.FTextField;
import forge.gui.toolbox.ToolTipListener; import forge.gui.toolbox.ToolTipListener;
import forge.gui.toolbox.itemmanager.ItemManager; import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil; import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.gui.toolbox.itemmanager.table.ITableContainer;
import forge.item.InventoryItem; import forge.item.InventoryItem;
import forge.util.TextUtil; import forge.util.TextUtil;
@@ -47,7 +46,7 @@ import forge.util.TextUtil;
* <br><br><i>(V at beginning of class name denotes a view class.)</i> * <br><br><i>(V at beginning of class name denotes a view class.)</i>
* *
*/ */
public enum VCardCatalog implements IVDoc<CCardCatalog>, ITableContainer { public enum VCardCatalog implements IVDoc<CCardCatalog> {
/** */ /** */
SINGLETON_INSTANCE; SINGLETON_INSTANCE;
@@ -237,14 +236,10 @@ public enum VCardCatalog implements IVDoc<CCardCatalog>, ITableContainer {
public void setItemManager(final ItemManager<? extends InventoryItem> itemManager0) { public void setItemManager(final ItemManager<? extends InventoryItem> itemManager0) {
this.itemManager = itemManager0; this.itemManager = itemManager0;
itemManager0.setStatLabels(this.statLabels);
scroller.setViewportView(itemManager0.getTable()); scroller.setViewportView(itemManager0.getTable());
} }
@Override
public FLabel getStatLabel(SItemManagerUtil.StatTypes s) {
return statLabels.get(s);
}
//========== Accessor/mutator methods //========== Accessor/mutator methods
public JPanel getPnlHeader() { return pnlHeader; } public JPanel getPnlHeader() { return pnlHeader; }
public FLabel getLblTitle() { return lblTitle; } public FLabel getLblTitle() { return lblTitle; }
@@ -259,9 +254,6 @@ public enum VCardCatalog implements IVDoc<CCardCatalog>, ITableContainer {
public JComboBox<String> getCbSearchMode() { return cbSearchMode; } public JComboBox<String> getCbSearchMode() { return cbSearchMode; }
public JTextField getTxfSearch() { return txfSearch; } public JTextField getTxfSearch() { return txfSearch; }
public Map<SItemManagerUtil.StatTypes, FLabel> getStatLabels() {
return statLabels;
}
public Map<RangeTypes, Pair<FSpinner, FSpinner>> getSpinners() { public Map<RangeTypes, Pair<FSpinner, FSpinner>> getSpinners() {
return spinners; return spinners;
} }

View File

@@ -25,7 +25,6 @@ import forge.gui.toolbox.FTextField;
import forge.gui.toolbox.ToolTipListener; import forge.gui.toolbox.ToolTipListener;
import forge.gui.toolbox.itemmanager.ItemManager; import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil; import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.gui.toolbox.itemmanager.table.ITableContainer;
import forge.item.InventoryItem; import forge.item.InventoryItem;
@@ -34,7 +33,7 @@ import forge.item.InventoryItem;
* *
* <br><br><i>(V at beginning of class name denotes a view class.)</i> * <br><br><i>(V at beginning of class name denotes a view class.)</i>
*/ */
public enum VCurrentDeck implements IVDoc<CCurrentDeck>, ITableContainer { public enum VCurrentDeck implements IVDoc<CCurrentDeck> {
/** */ /** */
SINGLETON_INSTANCE; SINGLETON_INSTANCE;
@@ -239,16 +238,12 @@ public enum VCurrentDeck implements IVDoc<CCurrentDeck>, ITableContainer {
public void setItemManager(final ItemManager<? extends InventoryItem> itemManager0) { public void setItemManager(final ItemManager<? extends InventoryItem> itemManager0) {
this.itemManager = itemManager0; this.itemManager = itemManager0;
itemManager0.setStatLabels(this.statLabels);
scroller.setViewportView(itemManager0.getTable()); scroller.setViewportView(itemManager0.getTable());
} }
public JLabel getLblTitle() { return lblTitle; } public JLabel getLblTitle() { return lblTitle; }
@Override
public FLabel getStatLabel(SItemManagerUtil.StatTypes s) {
return statLabels.get(s);
}
//========== Retrieval //========== Retrieval
/** @return {@link javax.swing.JLabel} */ /** @return {@link javax.swing.JLabel} */

View File

@@ -170,7 +170,7 @@ public enum VProbabilities implements IVDoc<CProbabilities> {
final ACEditorBase<T, TModel> ed = (ACEditorBase<T, TModel>) final ACEditorBase<T, TModel> ed = (ACEditorBase<T, TModel>)
CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController(); CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController();
final List<PaperCard> cards = (List<PaperCard>) ed.getDeckManager().getItems().toFlatList(); final List<PaperCard> cards = (List<PaperCard>) ed.getDeckManager().getPool().toFlatList();
final String name1 = lbl.getText(); final String name1 = lbl.getText();
String name2; String name2;

View File

@@ -32,6 +32,7 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Iterables; import com.google.common.collect.Iterables;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.itemmanager.table.ItemTable; import forge.gui.toolbox.itemmanager.table.ItemTable;
import forge.gui.toolbox.itemmanager.table.ItemTableModel; import forge.gui.toolbox.itemmanager.table.ItemTableModel;
import forge.item.InventoryItem; import forge.item.InventoryItem;
@@ -48,12 +49,13 @@ import forge.util.Aggregates;
*/ */
public final class ItemManager<T extends InventoryItem> { public final class ItemManager<T extends InventoryItem> {
private ItemPool<T> pool; private ItemPool<T> pool;
private ItemManagerModel<T> model; private final ItemManagerModel<T> model;
private final ItemTable<T> table; private final ItemTable<T> table;
private Predicate<T> filter = null; private Predicate<T> filter = null;
private boolean wantUnique = false; private boolean wantUnique = false;
private boolean alwaysNonUnique = false; private boolean alwaysNonUnique = false;
private final Class<T> genericType; private final Class<T> genericType;
private Map<SItemManagerUtil.StatTypes, FLabel> statLabels;
/** /**
* *
@@ -94,7 +96,17 @@ public final class ItemManager<T extends InventoryItem> {
this.genericType = genericType0; this.genericType = genericType0;
this.wantUnique = wantUnique0; this.wantUnique = wantUnique0;
this.model = new ItemManagerModel<T>(this, genericType0); this.model = new ItemManagerModel<T>(this, genericType0);
this.table = new ItemTable<T>(this.model); this.table = new ItemTable<T>(this, this.model);
}
/**
*
* Gets the item pool.
*
* @return ItemPoolView
*/
public ItemPoolView<T> getPool() {
return this.pool;
} }
/** /**
@@ -174,23 +186,6 @@ public final class ItemManager<T extends InventoryItem> {
return this.table.getSelectedItems(); return this.table.getSelectedItems();
} }
private boolean isUnfiltered() {
return this.filter == null;
}
/**
*
* setFilter.
*
* @param filterToSet
*/
public void setFilter(final Predicate<T> filterToSet) {
this.filter = filterToSet;
if (null != pool) {
this.updateView(true);
}
}
/** /**
* *
* addItem. * addItem.
@@ -208,6 +203,12 @@ public final class ItemManager<T extends InventoryItem> {
this.table.fixSelection(n); this.table.fixSelection(n);
} }
/**
*
* addItems.
*
* @param itemsToAdd
*/
public void addItems(Iterable<Map.Entry<T, Integer>> itemsToAdd) { public void addItems(Iterable<Map.Entry<T, Integer>> itemsToAdd) {
final int n = this.table.getSelectedRow(); final int n = this.table.getSelectedRow();
for (Map.Entry<T, Integer> item : itemsToAdd) { for (Map.Entry<T, Integer> item : itemsToAdd) {
@@ -220,6 +221,12 @@ public final class ItemManager<T extends InventoryItem> {
this.table.fixSelection(n); this.table.fixSelection(n);
} }
/**
*
* addItems.
*
* @param itemsToAdd
*/
public void addItems(Collection<T> itemsToAdd) { public void addItems(Collection<T> itemsToAdd) {
final int n = this.table.getSelectedRow(); final int n = this.table.getSelectedRow();
for (T item : itemsToAdd) { for (T item : itemsToAdd) {
@@ -237,7 +244,7 @@ public final class ItemManager<T extends InventoryItem> {
* removeItem. * removeItem.
* *
* @param item * @param item
* an InventoryItem * @param qty
*/ */
public void removeItem(final T item, int qty) { public void removeItem(final T item, int qty) {
final int n = this.table.getSelectedRow(); final int n = this.table.getSelectedRow();
@@ -249,6 +256,12 @@ public final class ItemManager<T extends InventoryItem> {
this.table.fixSelection(n); this.table.fixSelection(n);
} }
/**
*
* removeItems.
*
* @param itemsToRemove
*/
public void removeItems(List<Map.Entry<T, Integer>> itemsToRemove) { public void removeItems(List<Map.Entry<T, Integer>> itemsToRemove) {
final int n = this.table.getSelectedRow(); final int n = this.table.getSelectedRow();
for (Map.Entry<T, Integer> item : itemsToRemove) { for (Map.Entry<T, Integer> item : itemsToRemove) {
@@ -261,12 +274,86 @@ public final class ItemManager<T extends InventoryItem> {
this.table.fixSelection(n); this.table.fixSelection(n);
} }
/**
*
* getItemCount.
*
* @param item
*/
public int getItemCount(final T item) { public int getItemCount(final T item) {
return model.isInfinite() ? Integer.MAX_VALUE : this.pool.count(item); return this.model.isInfinite() ? Integer.MAX_VALUE : this.pool.count(item);
} }
/**
* Gets all filtered items in the model.
*
* @return ItemPoolView<T>
*/
public ItemPoolView<T> getFilteredItems() {
return this.model.getItems();
}
/**
*
* getStatLabels.
*
*/
public Map<SItemManagerUtil.StatTypes, FLabel> getStatLabels() {
return this.statLabels;
}
/**
*
* getStatLabel.
*
* @param s
*/
public void setStatLabels(Map<SItemManagerUtil.StatTypes, FLabel> statLabels0) {
this.statLabels = statLabels0;
}
/**
*
* getStatLabel.
*
* @param s
*/
public FLabel getStatLabel(SItemManagerUtil.StatTypes s) {
if (this.statLabels != null) {
return this.statLabels.get(s);
}
return null;
}
/**
*
* getFilter.
*
*/
public Predicate<T> getFilter() { public Predicate<T> getFilter() {
return filter; return this.filter;
}
/**
*
* isUnfiltered.
*
*/
private boolean isUnfiltered() {
return this.filter == null;
}
/**
*
* setFilter.
*
* @param filterToSet
*/
public void setFilter(final Predicate<T> filterToSet) {
this.filter = filterToSet;
if (this.pool != null) {
this.updateView(true);
}
} }
/** /**
@@ -274,7 +361,6 @@ public final class ItemManager<T extends InventoryItem> {
* updateView. * updateView.
* *
* @param bForceFilter * @param bForceFilter
* a boolean
*/ */
public void updateView(final boolean bForceFilter) { public void updateView(final boolean bForceFilter) {
final boolean useFilter = (bForceFilter && (this.filter != null)) || !isUnfiltered(); final boolean useFilter = (bForceFilter && (this.filter != null)) || !isUnfiltered();
@@ -300,16 +386,6 @@ public final class ItemManager<T extends InventoryItem> {
this.table.getTableModel().refreshSort(); this.table.getTableModel().refreshSort();
} }
/**
*
* getItems.
*
* @return ItemPoolView
*/
public ItemPoolView<T> getItems() {
return this.pool;
}
/** /**
* *
* getWantUnique. * getWantUnique.
@@ -350,18 +426,30 @@ public final class ItemManager<T extends InventoryItem> {
this.alwaysNonUnique = nonUniqueOnly; this.alwaysNonUnique = nonUniqueOnly;
} }
/**
*
* setWantElasticColumns.
*
* @param value
*/
public void setWantElasticColumns(boolean value) { public void setWantElasticColumns(boolean value) {
table.setAutoResizeMode(value ? JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS : JTable.AUTO_RESIZE_NEXT_COLUMN); this.table.setAutoResizeMode(value ? JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS : JTable.AUTO_RESIZE_NEXT_COLUMN);
} }
/**
*
* selectAndScrollTo.
*
* @param rowIdx
*/
public void selectAndScrollTo(int rowIdx) { public void selectAndScrollTo(int rowIdx) {
if (!(table.getParent() instanceof JViewport)) { if (!(this.table.getParent() instanceof JViewport)) {
return; return;
} }
JViewport viewport = (JViewport)table.getParent(); JViewport viewport = (JViewport)this.table.getParent();
// compute where we're going and where we are // compute where we're going and where we are
Rectangle targetRect = table.getCellRect(rowIdx, 0, true); Rectangle targetRect = this.table.getCellRect(rowIdx, 0, true);
Rectangle curViewRect = viewport.getViewRect(); Rectangle curViewRect = viewport.getViewRect();
// if the target cell is not visible, attempt to jump to a location where it is // if the target cell is not visible, attempt to jump to a location where it is
@@ -374,15 +462,20 @@ public final class ItemManager<T extends InventoryItem> {
targetRect.setLocation(targetRect.x, targetRect.y - (targetRect.height * 3)); targetRect.setLocation(targetRect.x, targetRect.y - (targetRect.height * 3));
} }
table.scrollRectToVisible(targetRect); this.table.scrollRectToVisible(targetRect);
table.setRowSelectionInterval(rowIdx, rowIdx); this.table.setRowSelectionInterval(rowIdx, rowIdx);
} }
/**
*
* focus.
*
*/
public void focus() { public void focus() {
table.requestFocusInWindow(); this.table.requestFocusInWindow();
if (table.getRowCount() > 0) { if (this.table.getRowCount() > 0) {
table.changeSelection(0, 0, false, false); this.table.changeSelection(0, 0, false, false);
} }
} }
} }

View File

@@ -35,7 +35,7 @@ import forge.item.ItemPoolView;
* @version $Id: ItemManagerModel.java 19857 2013-02-24 08:49:52Z Max mtg $ * @version $Id: ItemManagerModel.java 19857 2013-02-24 08:49:52Z Max mtg $
*/ */
public final class ItemManagerModel<T extends InventoryItem> { public final class ItemManagerModel<T extends InventoryItem> {
private final ItemManager<T> ItemManager; private final ItemManager<T> itemManager;
private final ItemPool<T> data; private final ItemPool<T> data;
private boolean infiniteSupply; private boolean infiniteSupply;
@@ -45,8 +45,8 @@ public final class ItemManagerModel<T extends InventoryItem> {
* @param ItemManager0 * @param ItemManager0
* @param genericType0 * @param genericType0
*/ */
public ItemManagerModel(final ItemManager<T> ItemManager0, final Class<T> genericType0) { public ItemManagerModel(final ItemManager<T> itemManager0, final Class<T> genericType0) {
this.ItemManager = ItemManager0; this.itemManager = itemManager0;
this.data = new ItemPool<T>(genericType0); this.data = new ItemPool<T>(genericType0);
} }
@@ -98,7 +98,7 @@ public final class ItemManagerModel<T extends InventoryItem> {
final boolean wasThere = this.data.count(item0) > 0; final boolean wasThere = this.data.count(item0) > 0;
if (wasThere) { if (wasThere) {
this.data.remove(item0, qty); this.data.remove(item0, qty);
this.ItemManager.getTableModel().fireTableDataChanged(); this.itemManager.getTableModel().fireTableDataChanged();
} }
} }
@@ -109,7 +109,7 @@ public final class ItemManagerModel<T extends InventoryItem> {
*/ */
public void addItem(final T item0, int qty) { public void addItem(final T item0, int qty) {
this.data.add(item0, qty); this.data.add(item0, qty);
this.ItemManager.getTableModel().fireTableDataChanged(); this.itemManager.getTableModel().fireTableDataChanged();
} }
/** /**
@@ -119,7 +119,7 @@ public final class ItemManagerModel<T extends InventoryItem> {
*/ */
public void addItems(final Iterable<Entry<T, Integer>> items0) { public void addItems(final Iterable<Entry<T, Integer>> items0) {
this.data.addAll(items0); this.data.addAll(items0);
this.ItemManager.getTableModel().fireTableDataChanged(); this.itemManager.getTableModel().fireTableDataChanged();
} }
/** /**
* Sets whether this table's pool of items is in infinite supply. If false, items in the * Sets whether this table's pool of items is in infinite supply. If false, items in the

View File

@@ -11,7 +11,6 @@ import forge.card.CardRulesPredicates;
import forge.gui.deckeditor.views.VCardCatalog; import forge.gui.deckeditor.views.VCardCatalog;
import forge.gui.deckeditor.views.VCurrentDeck; import forge.gui.deckeditor.views.VCurrentDeck;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.itemmanager.table.ITableContainer;
import forge.item.PaperCard; import forge.item.PaperCard;
import forge.item.InventoryItem; import forge.item.InventoryItem;
import forge.item.ItemPoolView; import forge.item.ItemPoolView;
@@ -85,22 +84,22 @@ public final class SItemManagerUtil {
* setStats. * setStats.
* *
* @param <T> &emsp; the generic type * @param <T> &emsp; the generic type
* @param items &emsp; ItemPoolView<InventoryITem> * @param itemManager &emsp; {@link forge.gui.toolbox.itemmanager.ItemManager<T>}
* @param view &emsp; {@link forge.gui.toolbox.itemmanager.table.ITableContainer}
*/ */
public static <T extends InventoryItem> void setStats(final ItemPoolView<T> items, final ITableContainer view) { public static <T extends InventoryItem> void setStats(final ItemManager<T> itemManager) {
final ItemPoolView<T> items = itemManager.getFilteredItems();
for (StatTypes s : StatTypes.values()) { for (StatTypes s : StatTypes.values()) {
switch (s) { switch (s) {
case TOTAL: case TOTAL:
view.getStatLabel(s).setText(String.valueOf( itemManager.getStatLabel(s).setText(String.valueOf(
Aggregates.sum(Iterables.filter(items, Predicates.compose(totalPred, items.FN_GET_KEY)), items.FN_GET_COUNT))); Aggregates.sum(Iterables.filter(items, Predicates.compose(totalPred, items.FN_GET_KEY)), items.FN_GET_COUNT)));
break; break;
case PACK: case PACK:
view.getStatLabel(s).setText(String.valueOf( itemManager.getStatLabel(s).setText(String.valueOf(
Aggregates.sum(Iterables.filter(items, Predicates.compose(packPred, items.FN_GET_KEY)), items.FN_GET_COUNT))); Aggregates.sum(Iterables.filter(items, Predicates.compose(packPred, items.FN_GET_KEY)), items.FN_GET_COUNT)));
break; break;
default: default:
view.getStatLabel(s).setText(String.valueOf(items.countAll(Predicates.compose(s.predicate, PaperCard.FN_GET_RULES), PaperCard.class))); itemManager.getStatLabel(s).setText(String.valueOf(items.countAll(Predicates.compose(s.predicate, PaperCard.FN_GET_RULES), PaperCard.class)));
} }
} }
} }

View File

@@ -1,22 +0,0 @@
package forge.gui.toolbox.itemmanager.table;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
/**
* Dictates methods needed for a class to act as a container for
* a EditorTableView deck editing component.
*
* <br><br><i>(I at beginning of class name denotes an interface.)</i>
*
*/
public interface ITableContainer {
/**
* Sets the table used for displaying cards in this
* deck editor container.
*
* @param tbl0 &emsp; {@link forge.gui.toolbox.itemmanager.ItemManager}
*/
FLabel getStatLabel(SItemManagerUtil.StatTypes s);
}

View File

@@ -39,6 +39,7 @@ import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn; import javax.swing.table.TableColumn;
import forge.gui.toolbox.FSkin; import forge.gui.toolbox.FSkin;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.ItemManagerModel; import forge.gui.toolbox.itemmanager.ItemManagerModel;
import forge.gui.toolbox.itemmanager.SItemManagerUtil; import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.item.InventoryItem; import forge.item.InventoryItem;
@@ -52,7 +53,8 @@ import forge.item.InventoryItem;
*/ */
@SuppressWarnings("serial") @SuppressWarnings("serial")
public final class ItemTable<T extends InventoryItem> extends JTable { public final class ItemTable<T extends InventoryItem> extends JTable {
private ItemTableModel<T> tableModel; private final ItemManager<T> itemManager;
private final ItemTableModel<T> tableModel;
public ItemTableModel<T> getTableModel() { public ItemTableModel<T> getTableModel() {
return this.tableModel; return this.tableModel;
@@ -61,11 +63,12 @@ public final class ItemTable<T extends InventoryItem> extends JTable {
/** /**
* ItemTable Constructor. * ItemTable Constructor.
* *
* @param forceUnique whether this table should display only one item with the same name * @param itemManager0
* @param type0 the class of item that this table will contain * @param model0
*/ */
public ItemTable(ItemManagerModel<T> model) { public ItemTable(ItemManager<T> itemManager0, ItemManagerModel<T> model0) {
this.tableModel = new ItemTableModel<T>(this, model); this.itemManager = itemManager0;
this.tableModel = new ItemTableModel<T>(this, model0);
// use different selection highlight colors for focused vs. unfocused tables // use different selection highlight colors for focused vs. unfocused tables
setSelectionBackground(FSkin.getColor(FSkin.Colors.CLR_INACTIVE)); setSelectionBackground(FSkin.getColor(FSkin.Colors.CLR_INACTIVE));
@@ -102,13 +105,12 @@ public final class ItemTable<T extends InventoryItem> extends JTable {
/** /**
* Applies a EditorTableModel and a model listener to this instance's JTable. * Applies a EditorTableModel and a model listener to this instance's JTable.
* *
* @param view0 &emsp; the {@link forge.gui.itemItemManager.ITableCOntainer} * @param cols &emsp; List<TableColumnInfo<InventoryItem>> of additional columns for this
* @param cols0 &emsp; List<TableColumnInfo<InventoryItem>> of additional columns for this
*/ */
public void setup(final ITableContainer view0, final List<TableColumnInfo<InventoryItem>> cols0) { public void setup(final List<TableColumnInfo<InventoryItem>> cols) {
final DefaultTableColumnModel colmodel = new DefaultTableColumnModel(); final DefaultTableColumnModel colmodel = new DefaultTableColumnModel();
for (TableColumnInfo<InventoryItem> item : cols0) { for (TableColumnInfo<InventoryItem> item : cols) {
item.setModelIndex(colmodel.getColumnCount()); item.setModelIndex(colmodel.getColumnCount());
if (item.isShowing()) { colmodel.addColumn(item); } if (item.isShowing()) { colmodel.addColumn(item); }
} }
@@ -126,7 +128,7 @@ public final class ItemTable<T extends InventoryItem> extends JTable {
this.tableModel.addTableModelListener(new TableModelListener() { this.tableModel.addTableModelListener(new TableModelListener() {
@Override @Override
public void tableChanged(final TableModelEvent ev) { public void tableChanged(final TableModelEvent ev) {
SItemManagerUtil.setStats(ItemTable.this.tableModel.getItems(), view0); SItemManagerUtil.setStats(ItemTable.this.itemManager);
} }
}); });
} }

View File

@@ -46,7 +46,6 @@ import forge.gui.toolbox.itemmanager.SItemManagerIO;
import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName; import forge.gui.toolbox.itemmanager.table.SColumnUtil.ColumnName;
import forge.gui.toolbox.itemmanager.table.SColumnUtil.SortState; import forge.gui.toolbox.itemmanager.table.SColumnUtil.SortState;
import forge.item.InventoryItem; import forge.item.InventoryItem;
import forge.item.ItemPoolView;
/** /**
* <p> * <p>
@@ -112,15 +111,6 @@ public final class ItemTableModel<T extends InventoryItem> extends AbstractTable
} }
} }
/**
* Gets all items in the model.
*
* @return ItemPoolView<T>
*/
public ItemPoolView<T> getItems() {
return this.model.getItems();
}
/** /**
* Row to card. * Row to card.
* *