diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java index bcd82ad8dc2..a3c1b92ce09 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/CardSearchFilter.java @@ -110,27 +110,6 @@ public class CardSearchFilter extends TextSearchFilter { return button; } - @Override - public Predicate buildPredicate(Class genericType) { - final Predicate predicate = this.buildPredicate(); - return new Predicate() { - @Override - public boolean apply(U item) { - try { - return predicate.apply((PaperCard)item); - } - catch (Exception ex) { - //fallback to regular item text filter if item not PaperCard - boolean result = btnName.getSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item); - if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed - result = !result; - } - return result; - } - } - }; - } - @Override protected Predicate buildPredicate() { return SFilterUtil.buildTextFilter( @@ -140,4 +119,14 @@ public class CardSearchFilter extends TextSearchFilter { btnType.getSelected(), btnText.getSelected()); } + + @Override + protected boolean showUnsupportedItem(U item) { + //fallback to regular item text filter if item not PaperCard + boolean result = btnName.getSelected() && SFilterUtil.buildItemTextFilter(txtSearch.getText()).apply(item); + if (cbSearchMode.getSelectedIndex() != 0) { //invert result if needed + result = !result; + } + return result; + } } diff --git a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java index b83a0c74624..525d835f06e 100644 --- a/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java +++ b/forge-gui/src/main/java/forge/gui/toolbox/itemmanager/filters/ItemFilter.java @@ -122,7 +122,7 @@ public abstract class ItemFilter { this.itemManager.applyFilters(); } - public Predicate buildPredicate(Class genericType) { + public final Predicate buildPredicate(Class genericType) { final Predicate predicate = this.buildPredicate(); return new Predicate() { @SuppressWarnings("unchecked") @@ -132,12 +132,16 @@ public abstract class ItemFilter { return predicate.apply((T)item); } catch (Exception ex) { - return false; //if can't cast U to T, filter item out + return showUnsupportedItem(item); //if can't cast U to T, filter item out unless derived class can handle it } } }; } + protected boolean showUnsupportedItem(U item) { + return false; //don't show unsupported items by default + } + public abstract ItemFilter createCopy(); public abstract boolean isEmpty(); public abstract void reset();