Make Pack stat label appear in color and cmc filters too so each toggle button filter has the same button count and works the same way when left clicking other filters.

This commit is contained in:
drdev
2013-12-20 04:57:04 +00:00
parent 350dbeb12f
commit 5dee59e8e5
4 changed files with 27 additions and 24 deletions

View File

@@ -11,6 +11,7 @@ import com.google.common.base.Predicates;
import forge.card.CardRules;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.gui.toolbox.itemmanager.SpellShopManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.item.PaperCard;
@@ -30,6 +31,9 @@ public class CardCMCFilter extends StatTypeFilter<PaperCard> {
@Override
protected void buildWidget(JPanel widget) {
if (itemManager instanceof SpellShopManager) {
addToggleButton(widget, StatTypes.PACK_OR_DECK);
}
addToggleButton(widget, StatTypes.CMC_0);
addToggleButton(widget, StatTypes.CMC_1);
addToggleButton(widget, StatTypes.CMC_2);
@@ -44,12 +48,12 @@ public class CardCMCFilter extends StatTypeFilter<PaperCard> {
final List<Predicate<CardRules>> cmcs = new ArrayList<Predicate<CardRules>>();
for (SItemManagerUtil.StatTypes s : buttonMap.keySet()) {
if (buttonMap.get(s).getSelected()) {
if (s.predicate != null && buttonMap.get(s).getSelected()) {
cmcs.add(s.predicate);
}
}
if (cmcs.size() == 7) {
if (cmcs.size() == buttonMap.size()) {
return Predicates.alwaysTrue();
}
return Predicates.compose(Predicates.or(cmcs), PaperCard.FN_GET_RULES);

View File

@@ -11,6 +11,7 @@ import forge.card.MagicColor;
import forge.card.CardRulesPredicates.Presets;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SFilterUtil;
import forge.gui.toolbox.itemmanager.SpellShopManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.item.PaperCard;
@@ -30,6 +31,9 @@ public class CardColorFilter extends StatTypeFilter<PaperCard> {
@Override
protected void buildWidget(JPanel widget) {
if (itemManager instanceof SpellShopManager) {
addToggleButton(widget, StatTypes.PACK_OR_DECK);
}
addToggleButton(widget, StatTypes.WHITE);
addToggleButton(widget, StatTypes.BLUE);
addToggleButton(widget, StatTypes.BLACK);

View File

@@ -8,13 +8,10 @@ import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
import forge.card.CardRules;
import forge.gui.toolbox.FLabel;
import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.gui.toolbox.itemmanager.SpellShopManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.item.InventoryItem;
import forge.item.ItemPredicate;
import forge.item.PaperCard;
/**
@@ -60,23 +57,4 @@ public class CardTypeFilter extends StatTypeFilter<PaperCard> {
}
return Predicates.compose(Predicates.or(types), PaperCard.FN_GET_RULES);
}
@Override
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
FLabel btnPack = buttonMap.get(StatTypes.PACK_OR_DECK);
if (btnPack != null && btnPack.getSelected()) {
return ItemPredicate.Presets.IS_PACK_OR_DECK.apply(item);
}
return false;
}
@Override
public void afterFiltersApplied() {
FLabel btnPack = buttonMap.get(StatTypes.PACK_OR_DECK);
if (btnPack != null) {
int count = itemManager.getFilteredItems().countAll(ItemPredicate.Presets.IS_PACK_OR_DECK, InventoryItem.class);
btnPack.setText(String.valueOf(count));
}
super.afterFiltersApplied();
}
}

View File

@@ -13,6 +13,7 @@ import forge.gui.toolbox.itemmanager.ItemManager;
import forge.gui.toolbox.itemmanager.SItemManagerUtil;
import forge.gui.toolbox.itemmanager.SItemManagerUtil.StatTypes;
import forge.item.InventoryItem;
import forge.item.ItemPredicate;
import forge.item.PaperCard;
import forge.util.ItemPoolView;
@@ -90,9 +91,25 @@ public abstract class StatTypeFilter<T extends InventoryItem> extends ToggleButt
});
}
@Override
protected <U extends InventoryItem> boolean showUnsupportedItem(U item) {
FLabel btnPackOrDeck = buttonMap.get(StatTypes.PACK_OR_DECK); //support special pack/deck case
if (btnPackOrDeck != null && btnPackOrDeck.getSelected()) {
return ItemPredicate.Presets.IS_PACK_OR_DECK.apply(item);
}
return false;
}
@Override
public void afterFiltersApplied() {
final ItemPoolView<? super T> items = itemManager.getFilteredItems();
FLabel btnPackOrDeck = buttonMap.get(StatTypes.PACK_OR_DECK);
if (btnPackOrDeck != null) { //support special pack/deck case
int count = items.countAll(ItemPredicate.Presets.IS_PACK_OR_DECK, InventoryItem.class);
btnPackOrDeck.setText(String.valueOf(count));
}
for (Map.Entry<SItemManagerUtil.StatTypes, FLabel> btn : buttonMap.entrySet()) {
if (btn.getKey().predicate != null) {
int count = items.countAll(Predicates.compose(btn.getKey().predicate, PaperCard.FN_GET_RULES), PaperCard.class);