*Somehow missed merging some revisions

This commit is contained in:
Hellfish
2013-08-19 08:33:32 +00:00
17 changed files with 406 additions and 22 deletions

13
.gitattributes vendored
View File

@@ -15018,6 +15018,19 @@ src/main/java/forge/gui/toolbox/itemmanager/ItemManagerModel.java -text
src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java -text src/main/java/forge/gui/toolbox/itemmanager/SFilterUtil.java -text
src/main/java/forge/gui/toolbox/itemmanager/SItemManagerIO.java -text 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/filters/CardCMCFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardColorFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardFormatFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardPowerFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardQuestWorldFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardSetFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardToughnessFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/CardTypeFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/ListLabelFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/TextFieldFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/ToggleButtonsFilter.java -text
src/main/java/forge/gui/toolbox/itemmanager/filters/ValueRangeFilter.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/IntegerRenderer.java -text src/main/java/forge/gui/toolbox/itemmanager/table/IntegerRenderer.java -text

View File

@@ -385,7 +385,7 @@ public enum CCardCatalog implements ICDoc {
// TODO: is there really no way to make this type safe? // TODO: is there really no way to make this type safe?
ACEditorBase<?, ?> editor = CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController(); ACEditorBase<?, ?> editor = CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController();
if (null != editor) { if (null != editor) {
((ACEditorBase<PaperCard, DeckBase>)editor).getCatalogManager().setFilter(cardFilter); ((ACEditorBase<PaperCard, DeckBase>)editor).getCatalogManager().setFilterPredicate(cardFilter);
} }
} }

View File

@@ -226,9 +226,9 @@ public enum VCardCatalog implements IVDoc<CCardCatalog> {
public FLabel getLblType() { return lblType; } public FLabel getLblType() { return lblType; }
public FLabel getLblText() { return lblText; } public FLabel getLblText() { return lblText; }
public FLabel getBtnAddRestriction() { return btnAddRestriction; } public FLabel getBtnAddRestriction() { return btnAddRestriction; }
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() { public Map<SItemManagerUtil.StatTypes, FLabel> getStatLabels() {
return statLabels; return statLabels;

View File

@@ -18,6 +18,7 @@
package forge.gui.toolbox.itemmanager; package forge.gui.toolbox.itemmanager;
import java.util.Collection; import java.util.Collection;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
@@ -25,6 +26,7 @@ import java.util.Map.Entry;
import javax.swing.JPanel; import javax.swing.JPanel;
import javax.swing.JScrollPane; import javax.swing.JScrollPane;
import javax.swing.JTextField; import javax.swing.JTextField;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
@@ -34,6 +36,7 @@ import com.google.common.collect.Iterables;
import forge.gui.toolbox.FLabel; import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.FTextField; import forge.gui.toolbox.FTextField;
import forge.gui.toolbox.ToolTipListener; import forge.gui.toolbox.ToolTipListener;
import forge.gui.toolbox.itemmanager.filters.ItemFilter;
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;
@@ -52,7 +55,9 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
private static final long serialVersionUID = 3164349984277267922L; private static final long serialVersionUID = 3164349984277267922L;
private ItemPool<T> pool; private ItemPool<T> pool;
private final ItemManagerModel<T> model; private final ItemManagerModel<T> model;
private Predicate<T> filter = null; private Predicate<T> filterPredicate = null;
private final Map<ItemFilter.FilterTypes, ItemFilter<T>> filters =
new HashMap<ItemFilter.FilterTypes, ItemFilter<T>>();
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;
@@ -100,9 +105,9 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
int height = this.getHeight(); int height = this.getHeight();
//position toolbar components //TODO: Uncomment //position toolbar components //TODO: Uncomment
//int toolbarHeight = FTextField.HEIGHT + 3; /*int toolbarHeight = FTextField.HEIGHT + 3;
//this.txtSearch.setBounds(x, y, width / 2, FTextField.HEIGHT); this.txtSearch.setBounds(x, y, width / 2, FTextField.HEIGHT);
//y += toolbarHeight; y += toolbarHeight;*/
//position current item view //position current item view
this.tableScroller.setBounds(x, y, width, height - y); this.tableScroller.setBounds(x, y, width, height - y);
@@ -332,13 +337,24 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
return this.statLabels.get(s); return this.statLabels.get(s);
} }
/** public void addFilter(ItemFilter<T> filter) {
* this.filters.put(filter.getType(), filter);
* getFilter. this.add(filter);
* this.revalidate();
*/ }
public Predicate<T> getFilter() {
return this.filter; public void removeFilter(ItemFilter<T> filter) {
this.filters.remove(filter.getType());
this.remove(filter);
this.revalidate();
}
public void buildFilterPredicate() {
/*
this.filterPredicate = ?;
if (this.pool != null) {
this.updateView(true);
}*/
} }
/** /**
@@ -347,17 +363,17 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
* *
*/ */
private boolean isUnfiltered() { private boolean isUnfiltered() {
return this.filter == null; return this.filterPredicate == null;
} }
/** /**
* *
* setFilter. * setFilterPredicate.
* *
* @param filterToSet * @param filterToSet
*/ */
public void setFilter(final Predicate<T> filterToSet) { public void setFilterPredicate(final Predicate<T> filterPredicate0) {
this.filter = filterToSet; this.filterPredicate = filterPredicate0;
if (this.pool != null) { if (this.pool != null) {
this.updateView(true); this.updateView(true);
} }
@@ -370,18 +386,18 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
* @param bForceFilter * @param bForceFilter
*/ */
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.filterPredicate != null)) || !isUnfiltered();
if (useFilter || this.wantUnique || bForceFilter) { if (useFilter || this.wantUnique || bForceFilter) {
this.model.clear(); this.model.clear();
} }
if (useFilter && this.wantUnique) { if (useFilter && this.wantUnique) {
Predicate<Entry<T, Integer>> filterForPool = Predicates.compose(this.filter, this.pool.FN_GET_KEY); Predicate<Entry<T, Integer>> filterForPool = Predicates.compose(this.filterPredicate, this.pool.FN_GET_KEY);
Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(Iterables.filter(this.pool, filterForPool), this.pool.FN_GET_NAME); Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(Iterables.filter(this.pool, filterForPool), this.pool.FN_GET_NAME);
this.model.addItems(items); this.model.addItems(items);
} else if (useFilter) { } else if (useFilter) {
Predicate<Entry<T, Integer>> pred = Predicates.compose(this.filter, this.pool.FN_GET_KEY); Predicate<Entry<T, Integer>> pred = Predicates.compose(this.filterPredicate, this.pool.FN_GET_KEY);
this.model.addItems(Iterables.filter(this.pool, pred)); this.model.addItems(Iterables.filter(this.pool, pred));
} else if (this.wantUnique) { } else if (this.wantUnique) {
Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(this.pool, this.pool.FN_GET_NAME); Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(this.pool, this.pool.FN_GET_NAME);

View File

@@ -0,0 +1,31 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardCMCFilter extends ValueRangeFilter<PaperCard> {
public CardCMCFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardCMC;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardColorFilter extends ToggleButtonsFilter<PaperCard> {
public CardColorFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardColor;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardFormatFilter extends ListLabelFilter<PaperCard> {
public CardFormatFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardFormat;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardPowerFilter extends ValueRangeFilter<PaperCard> {
public CardPowerFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardPower;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardQuestWorldFilter extends ListLabelFilter<PaperCard> {
public CardQuestWorldFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardQuestWorld;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardSetFilter extends ListLabelFilter<PaperCard> {
public CardSetFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardSet;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardToughnessFilter extends ValueRangeFilter<PaperCard> {
public CardToughnessFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardToughness;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,30 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.PaperCard;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public class CardTypeFilter extends ToggleButtonsFilter<PaperCard> {
public CardTypeFilter(ItemManager<PaperCard> itemManager0) {
super(itemManager0);
}
@Override
public FilterTypes getType() {
return FilterTypes.CardType;
}
@Override
protected void addComponents() {
}
@Override
protected void onRemoved() {
}
}

View File

@@ -0,0 +1,50 @@
package forge.gui.toolbox.itemmanager.filters;
import javax.swing.JPanel;
import forge.Command;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.InventoryItem;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public abstract class ItemFilter<T extends InventoryItem> extends JPanel {
private final ItemManager<T> itemManager;
public enum FilterTypes {
CardCMC,
CardColor,
CardFormat,
CardPower,
CardQuestWorld,
CardSet,
CardToughness,
CardType
}
protected ItemFilter(ItemManager<T> itemManager0) {
this.itemManager = itemManager0;
this.setOpaque(false);
this.addComponents();
this.add(new FLabel.Builder().text("X").fontSize(10).hoverable(true)
.tooltip("Remove filter").cmdClick(new Command() {
@Override
public void run() {
itemManager.removeFilter(ItemFilter.this);
ItemFilter.this.onRemoved();
}
}).build(), "top");
}
protected void applyChange() {
itemManager.buildFilterPredicate();
}
public abstract FilterTypes getType();
protected abstract void addComponents();
protected abstract void onRemoved();
}

View File

@@ -0,0 +1,16 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.InventoryItem;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public abstract class ListLabelFilter<T extends InventoryItem> extends ItemFilter<T> {
protected ListLabelFilter(ItemManager<T> itemManager0) {
super(itemManager0);
}
}

View File

@@ -0,0 +1,16 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.InventoryItem;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public abstract class TextFieldFilter<T extends InventoryItem> extends ItemFilter<T> {
protected TextFieldFilter(ItemManager<T> itemManager0) {
super(itemManager0);
}
}

View File

@@ -0,0 +1,16 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.InventoryItem;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public abstract class ToggleButtonsFilter<T extends InventoryItem> extends ItemFilter<T> {
protected ToggleButtonsFilter(ItemManager<T> itemManager0) {
super(itemManager0);
}
}

View File

@@ -0,0 +1,16 @@
package forge.gui.toolbox.itemmanager.filters;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.item.InventoryItem;
/**
* TODO: Write javadoc for this type.
*
*/
@SuppressWarnings("serial")
public abstract class ValueRangeFilter<T extends InventoryItem> extends ItemFilter<T> {
protected ValueRangeFilter(ItemManager<T> itemManager0) {
super(itemManager0);
}
}