diff --git a/forge-core/src/main/java/forge/util/ItemPool.java b/forge-core/src/main/java/forge/util/ItemPool.java index 6cf22ec2162..7a065ca1639 100644 --- a/forge-core/src/main/java/forge/util/ItemPool.java +++ b/forge-core/src/main/java/forge/util/ItemPool.java @@ -137,13 +137,16 @@ public class ItemPool implements Iterable condition) { + public final int countAll(Predicate condition){ int count = 0; - for (Entry e : this) { - if (condition.apply(e.getKey())) { - count += e.getValue(); + Iterable matchingKeys = Iterables.filter(this.items.keySet(), new Predicate() { + @Override + public boolean apply(T item) { + return condition.apply((U)item); } - } + }); + for (T key : matchingKeys) + count += this.items.get(key); return count; } diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java index cfc2041798a..80333946b52 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/StatTypeFilter.java @@ -75,14 +75,23 @@ public abstract class StatTypeFilter extends ToggleButt 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)); - } - Iterator buttonMapStatsIterator = buttonMap.keySet().iterator(); - while (buttonMapStatsIterator.hasNext()){ - StatTypes statTypes = buttonMapStatsIterator.next(); - if (statTypes.predicate != null){ - int count = items.countAll(Predicates.compose(statTypes.predicate, PaperCard.FN_GET_RULES), PaperCard.class); - buttonMap.get(statTypes).setText(String.valueOf(count)); + Iterator buttonMapStatsIterator = buttonMap.keySet().iterator(); + while (buttonMapStatsIterator.hasNext()){ + StatTypes statTypes = buttonMapStatsIterator.next(); + if (statTypes.predicate != null){ + count = items.countAll(Predicates.compose(statTypes.predicate, PaperCard.FN_GET_RULES), PaperCard.class); + buttonMap.get(statTypes).setText(String.valueOf(count)); + } + } + } else { + Iterator buttonMapStatsIterator = buttonMap.keySet().iterator(); + while (buttonMapStatsIterator.hasNext()) { + StatTypes statTypes = buttonMapStatsIterator.next(); + if (statTypes.predicate != null) { + int count = items.countAll(Predicates.compose(statTypes.predicate, PaperCard.FN_GET_RULES)); + buttonMap.get(statTypes).setText(String.valueOf(count)); + } } } getWidget().revalidate();