From ac172d0d4d3c0e2bb627f9f6eeead23b9499a663 Mon Sep 17 00:00:00 2001 From: drdev Date: Thu, 26 Nov 2015 16:37:33 +0000 Subject: [PATCH] Make it so Advanced Search filter automatically prompts to select a filter if no filters defined already Prevent crash when clearing a filter --- .../itemmanager/filters/AdvancedSearchFilter.java | 12 ++++++++++++ .../itemmanager/filters/AdvancedSearchFilter.java | 11 +++++++++++ .../java/forge/itemmanager/AdvancedSearch.java | 15 ++++++++------- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java index 185935fcccb..a8378aad03e 100644 --- a/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java +++ b/forge-gui-desktop/src/main/java/forge/itemmanager/filters/AdvancedSearchFilter.java @@ -2,6 +2,8 @@ package forge.itemmanager.filters; import java.awt.Component; import java.awt.Dimension; +import java.awt.event.ComponentAdapter; +import java.awt.event.ComponentEvent; import java.awt.event.MouseEvent; import forge.UiCommand; @@ -26,6 +28,7 @@ import org.apache.commons.lang3.ArrayUtils; import com.google.common.base.Predicate; import com.google.common.collect.ImmutableList; +import com.google.common.collect.Iterables; public class AdvancedSearchFilter extends ItemFilter { @@ -171,6 +174,15 @@ public class AdvancedSearchFilter extends ItemFilter private boolean show() { optionPane = new FOptionPane(null, "Advanced Search", null, scroller, ImmutableList.of("OK", "Cancel"), 0); + optionPane.addComponentListener(new ComponentAdapter() { + @Override + public void componentShown(ComponentEvent e) { + //automatically edit first filter if search is empty + if (model.isEmpty()) { + model.editFilterControl(Iterables.getFirst(model.getControls(), null), onFilterChange); + } + } + }); scroller.revalidate(); scroller.repaint(); optionPane.setVisible(true); diff --git a/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java b/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java index f70142488ee..b91e6820bce 100644 --- a/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java +++ b/forge-gui-mobile/src/forge/itemmanager/filters/AdvancedSearchFilter.java @@ -2,6 +2,7 @@ package forge.itemmanager.filters; import com.badlogic.gdx.graphics.g2d.BitmapFont.HAlignment; import com.google.common.base.Predicate; +import com.google.common.collect.Iterables; import forge.Forge; import forge.assets.FSkinImage; @@ -181,6 +182,16 @@ public class AdvancedSearchFilter extends ItemFilter scroller.add(filter); } + @Override + public void onActivate() { + super.onActivate(); + + //automatically edit first filter if search is empty + if (model.isEmpty()) { + model.editFilterControl(Iterables.getFirst(model.getControls(), null), onFilterChange); + } + } + @Override public void onClose(Callback canCloseCallback) { onFilterChange.run(); diff --git a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java index c569bf7aef4..497a7bf369d 100644 --- a/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java +++ b/forge-gui/src/main/java/forge/itemmanager/AdvancedSearch.java @@ -1063,17 +1063,18 @@ public class AdvancedSearch { control.setFilter(filter); if (filter != null) { control.getBtnFilter().setText(GuiBase.getInterface().encodeSymbols(filter.toString(), false)); + + if (filter.getOption() == FilterOption.CARD_KEYWORDS) { + //the first time the user selects keywords, preload keywords for all cards + Runnable preloadTask = Keyword.getPreloadTask(); + if (preloadTask != null) { + GuiBase.getInterface().runBackgroundTask("Loading keywords...", preloadTask); + } + } } else { control.getBtnFilter().setText(EMPTY_FILTER_TEXT); } - if (filter.getOption() == FilterOption.CARD_KEYWORDS) { - //the first time the user selects keywords, preload keywords for all cards - Runnable preloadTask = Keyword.getPreloadTask(); - if (preloadTask != null) { - GuiBase.getInterface().runBackgroundTask("Loading keywords...", preloadTask); - } - } if (onChange != null) { onChange.run(); }