mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-17 03:08:02 +00:00
*Somehow missed merging some revisions
This commit is contained in:
13
.gitattributes
vendored
13
.gitattributes
vendored
@@ -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/SItemManagerIO.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/table/AlwaysShowToolTip.java -text
|
||||
src/main/java/forge/gui/toolbox/itemmanager/table/IntegerRenderer.java -text
|
||||
|
||||
@@ -385,7 +385,7 @@ public enum CCardCatalog implements ICDoc {
|
||||
// TODO: is there really no way to make this type safe?
|
||||
ACEditorBase<?, ?> editor = CDeckEditorUI.SINGLETON_INSTANCE.getCurrentEditorController();
|
||||
if (null != editor) {
|
||||
((ACEditorBase<PaperCard, DeckBase>)editor).getCatalogManager().setFilter(cardFilter);
|
||||
((ACEditorBase<PaperCard, DeckBase>)editor).getCatalogManager().setFilterPredicate(cardFilter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
package forge.gui.toolbox.itemmanager;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
@@ -25,6 +26,7 @@ import java.util.Map.Entry;
|
||||
import javax.swing.JPanel;
|
||||
import javax.swing.JScrollPane;
|
||||
import javax.swing.JTextField;
|
||||
|
||||
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.FTextField;
|
||||
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.ItemTableModel;
|
||||
import forge.item.InventoryItem;
|
||||
@@ -52,7 +55,9 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
|
||||
private static final long serialVersionUID = 3164349984277267922L;
|
||||
private ItemPool<T> pool;
|
||||
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 alwaysNonUnique = false;
|
||||
private final Class<T> genericType;
|
||||
@@ -100,9 +105,9 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
|
||||
int height = this.getHeight();
|
||||
|
||||
//position toolbar components //TODO: Uncomment
|
||||
//int toolbarHeight = FTextField.HEIGHT + 3;
|
||||
//this.txtSearch.setBounds(x, y, width / 2, FTextField.HEIGHT);
|
||||
//y += toolbarHeight;
|
||||
/*int toolbarHeight = FTextField.HEIGHT + 3;
|
||||
this.txtSearch.setBounds(x, y, width / 2, FTextField.HEIGHT);
|
||||
y += toolbarHeight;*/
|
||||
|
||||
//position current item view
|
||||
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);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* getFilter.
|
||||
*
|
||||
*/
|
||||
public Predicate<T> getFilter() {
|
||||
return this.filter;
|
||||
public void addFilter(ItemFilter<T> filter) {
|
||||
this.filters.put(filter.getType(), filter);
|
||||
this.add(filter);
|
||||
this.revalidate();
|
||||
}
|
||||
|
||||
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() {
|
||||
return this.filter == null;
|
||||
return this.filterPredicate == null;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* setFilter.
|
||||
* setFilterPredicate.
|
||||
*
|
||||
* @param filterToSet
|
||||
*/
|
||||
public void setFilter(final Predicate<T> filterToSet) {
|
||||
this.filter = filterToSet;
|
||||
public void setFilterPredicate(final Predicate<T> filterPredicate0) {
|
||||
this.filterPredicate = filterPredicate0;
|
||||
if (this.pool != null) {
|
||||
this.updateView(true);
|
||||
}
|
||||
@@ -370,18 +386,18 @@ public final class ItemManager<T extends InventoryItem> extends JPanel {
|
||||
* @param 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) {
|
||||
this.model.clear();
|
||||
}
|
||||
|
||||
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);
|
||||
this.model.addItems(items);
|
||||
} 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));
|
||||
} else if (this.wantUnique) {
|
||||
Iterable<Entry<T, Integer>> items = Aggregates.uniqueByLast(this.pool, this.pool.FN_GET_NAME);
|
||||
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user