From 905dd6c888d2ba4074eda41aa8334216789ab2f7 Mon Sep 17 00:00:00 2001 From: yueh Date: Sat, 14 Oct 2017 14:13:18 +0200 Subject: [PATCH] Added a clientside config to keep or clear the search filter when opening. (#3154) Closes #3153. --- .../java/appeng/api/config/SearchBoxMode.java | 2 +- src/api/java/appeng/api/config/Settings.java | 46 +++++++++++++----- .../gui/implementations/GuiMEMonitorable.java | 18 +++++-- .../client/gui/widgets/GuiImgButton.java | 7 +++ .../core/localization/ButtonToolTips.java | 12 ++++- .../appliedenergistics2/lang/en_us.lang | 7 +++ .../textures/guis/states.png | Bin 12358 -> 12506 bytes 7 files changed, 73 insertions(+), 19 deletions(-) diff --git a/src/api/java/appeng/api/config/SearchBoxMode.java b/src/api/java/appeng/api/config/SearchBoxMode.java index 5fececcc8..c6fdd5a3f 100644 --- a/src/api/java/appeng/api/config/SearchBoxMode.java +++ b/src/api/java/appeng/api/config/SearchBoxMode.java @@ -26,5 +26,5 @@ package appeng.api.config; public enum SearchBoxMode { - AUTOSEARCH, MANUAL_SEARCH, JEI_AUTOSEARCH, JEI_MANUAL_SEARCH + AUTOSEARCH, AUTOSEARCH_KEEP, MANUAL_SEARCH, MANUAL_SEARCH_KEEP, JEI_AUTOSEARCH, JEI_AUTOSEARCH_KEEP, JEI_MANUAL_SEARCH, JEI_MANUAL_SEARCH_KEEP } diff --git a/src/api/java/appeng/api/config/Settings.java b/src/api/java/appeng/api/config/Settings.java index e031439e6..aa030321a 100644 --- a/src/api/java/appeng/api/config/Settings.java +++ b/src/api/java/appeng/api/config/Settings.java @@ -33,29 +33,53 @@ public enum Settings { LEVEL_EMITTER_MODE( EnumSet.allOf( LevelEmitterMode.class ) ), - REDSTONE_EMITTER( EnumSet.of( RedstoneMode.HIGH_SIGNAL, RedstoneMode.LOW_SIGNAL ) ), REDSTONE_CONTROLLED( EnumSet.allOf( RedstoneMode.class ) ), + REDSTONE_EMITTER( EnumSet.of( RedstoneMode.HIGH_SIGNAL, RedstoneMode.LOW_SIGNAL ) ), + + REDSTONE_CONTROLLED( EnumSet.allOf( RedstoneMode.class ) ), CONDENSER_OUTPUT( EnumSet.allOf( CondenserOutput.class ) ), - POWER_UNITS( EnumSet.allOf( PowerUnits.class ) ), ACCESS( EnumSet.of( AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE ) ), + POWER_UNITS( EnumSet.allOf( PowerUnits.class ) ), - SORT_DIRECTION( EnumSet.allOf( SortDir.class ) ), SORT_BY( EnumSet.allOf( SortOrder.class ) ), + ACCESS( EnumSet.of( AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE ) ), - SEARCH_TOOLTIPS( EnumSet.of( YesNo.YES, YesNo.NO ) ), VIEW_MODE( EnumSet.allOf( ViewItems.class ) ), SEARCH_MODE( EnumSet.allOf( SearchBoxMode.class ) ), + SORT_DIRECTION( EnumSet.allOf( SortDir.class ) ), - ACTIONS( EnumSet.allOf( ActionItems.class ) ), IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ), + SORT_BY( EnumSet.allOf( SortOrder.class ) ), - BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ), OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ), + SEARCH_TOOLTIPS( EnumSet.of( YesNo.YES, YesNo.NO ) ), - FULLNESS_MODE( EnumSet.allOf( FullnessMode.class ) ), CRAFT_ONLY( EnumSet.of( YesNo.YES, YesNo.NO ) ), + VIEW_MODE( EnumSet.allOf( ViewItems.class ) ), - FUZZY_MODE( EnumSet.allOf( FuzzyMode.class ) ), LEVEL_TYPE( EnumSet.allOf( LevelType.class ) ), + SEARCH_MODE( EnumSet.allOf( SearchBoxMode.class ) ), - TERMINAL_STYLE( EnumSet.of( TerminalStyle.TALL, TerminalStyle.SMALL ) ), COPY_MODE( EnumSet.allOf( CopyMode.class ) ), + ACTIONS( EnumSet.allOf( ActionItems.class ) ), - INTERFACE_TERMINAL( EnumSet.of( YesNo.YES, YesNo.NO ) ), CRAFT_VIA_REDSTONE( EnumSet.of( YesNo.YES, YesNo.NO ) ), + IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ), - STORAGE_FILTER( EnumSet.allOf( StorageFilter.class ) ), PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ), + BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ), + + OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ), + + FULLNESS_MODE( EnumSet.allOf( FullnessMode.class ) ), + + CRAFT_ONLY( EnumSet.of( YesNo.YES, YesNo.NO ) ), + + FUZZY_MODE( EnumSet.allOf( FuzzyMode.class ) ), + + LEVEL_TYPE( EnumSet.allOf( LevelType.class ) ), + + TERMINAL_STYLE( EnumSet.of( TerminalStyle.TALL, TerminalStyle.SMALL ) ), + + COPY_MODE( EnumSet.allOf( CopyMode.class ) ), + + INTERFACE_TERMINAL( EnumSet.of( YesNo.YES, YesNo.NO ) ), + + CRAFT_VIA_REDSTONE( EnumSet.of( YesNo.YES, YesNo.NO ) ), + + STORAGE_FILTER( EnumSet.allOf( StorageFilter.class ) ), + + PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ), SCHEDULING_MODE( EnumSet.allOf( SchedulingMode.class ) ); diff --git a/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java b/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java index 510642791..8843ed5ce 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java +++ b/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java @@ -292,6 +292,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi this.buttonList.add( this.searchBoxSettings = new GuiImgButton( this.guiLeft - 18, offset, Settings.SEARCH_MODE, AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE ) ) ); + offset += 20; if( !( this instanceof GuiMEPortableCell ) || this instanceof GuiWirelessTerm ) @@ -315,16 +316,22 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi this.craftingStatusBtn.setHideEdge( 13 ); } - final Enum setting = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE ); - this.searchField.setFocused( SearchBoxMode.AUTOSEARCH == setting || SearchBoxMode.JEI_AUTOSEARCH == setting ); - this.searchField.setCanLoseFocus( SearchBoxMode.MANUAL_SEARCH == setting || SearchBoxMode.JEI_MANUAL_SEARCH == setting ); + final Enum searchModeSetting = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE ); - if( setting == SearchBoxMode.JEI_AUTOSEARCH || setting == SearchBoxMode.JEI_MANUAL_SEARCH ) + final boolean isAutoFocus = SearchBoxMode.AUTOSEARCH == searchModeSetting || SearchBoxMode.JEI_AUTOSEARCH == searchModeSetting || SearchBoxMode.AUTOSEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_AUTOSEARCH_KEEP == searchModeSetting; + final boolean isManualFocus = SearchBoxMode.MANUAL_SEARCH == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH == searchModeSetting || SearchBoxMode.MANUAL_SEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH_KEEP == searchModeSetting; + final boolean isKeepFilter = SearchBoxMode.AUTOSEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_AUTOSEARCH_KEEP == searchModeSetting || SearchBoxMode.MANUAL_SEARCH_KEEP == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH_KEEP == searchModeSetting; + final boolean isJEIEnabled = SearchBoxMode.JEI_AUTOSEARCH == searchModeSetting || SearchBoxMode.JEI_MANUAL_SEARCH == searchModeSetting; + + this.searchField.setFocused( isAutoFocus ); + this.searchField.setCanLoseFocus( isManualFocus ); + + if( isJEIEnabled ) { memoryText = Integrations.jei().getSearchText(); } - if( memoryText != null && !memoryText.isEmpty() ) + if( isKeepFilter && memoryText != null && !memoryText.isEmpty() ) { this.searchField.setText( memoryText ); this.searchField.selectAll(); @@ -359,6 +366,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi craftingGridOffsetX -= 25; craftingGridOffsetY -= 6; + } @Override diff --git a/src/main/java/appeng/client/gui/widgets/GuiImgButton.java b/src/main/java/appeng/client/gui/widgets/GuiImgButton.java index f76e421a0..73b21fb96 100644 --- a/src/main/java/appeng/client/gui/widgets/GuiImgButton.java +++ b/src/main/java/appeng/client/gui/widgets/GuiImgButton.java @@ -110,6 +110,13 @@ public class GuiImgButton extends GuiButton implements ITooltip this.registerApp( 16 * 2 + 5, Settings.SEARCH_MODE, SearchBoxMode.JEI_AUTOSEARCH, ButtonToolTips.SearchMode, ButtonToolTips.SearchMode_JEIAuto ); this.registerApp( 16 * 2 + 6, Settings.SEARCH_MODE, SearchBoxMode.JEI_MANUAL_SEARCH, ButtonToolTips.SearchMode, ButtonToolTips.SearchMode_JEIStandard ); + this.registerApp( 16 * 2 + 7, Settings.SEARCH_MODE, SearchBoxMode.AUTOSEARCH_KEEP, ButtonToolTips.SearchMode, ButtonToolTips.SearchMode_AutoKeep ); + this.registerApp( 16 * 2 + 8, Settings.SEARCH_MODE, SearchBoxMode.MANUAL_SEARCH_KEEP, ButtonToolTips.SearchMode, + ButtonToolTips.SearchMode_StandardKeep ); + this.registerApp( 16 * 2 + 9, Settings.SEARCH_MODE, SearchBoxMode.JEI_AUTOSEARCH_KEEP, ButtonToolTips.SearchMode, + ButtonToolTips.SearchMode_JEIAutoKeep ); + this.registerApp( 16 * 2 + 10, Settings.SEARCH_MODE, SearchBoxMode.JEI_MANUAL_SEARCH_KEEP, ButtonToolTips.SearchMode, + ButtonToolTips.SearchMode_JEIStandardKeep ); this.registerApp( 16 * 5 + 3, Settings.LEVEL_TYPE, LevelType.ENERGY_LEVEL, ButtonToolTips.LevelType, ButtonToolTips.LevelType_Energy ); this.registerApp( 16 * 4 + 3, Settings.LEVEL_TYPE, LevelType.ITEM_LEVEL, ButtonToolTips.LevelType, ButtonToolTips.LevelType_Item ); diff --git a/src/main/java/appeng/core/localization/ButtonToolTips.java b/src/main/java/appeng/core/localization/ButtonToolTips.java index a246a6a6b..bbbd25ab9 100644 --- a/src/main/java/appeng/core/localization/ButtonToolTips.java +++ b/src/main/java/appeng/core/localization/ButtonToolTips.java @@ -64,11 +64,15 @@ public enum ButtonToolTips TransferToStorageCell, ToggleSortDirection, - SearchMode_Auto, + SearchMode_Auto, SearchMode_Standard, SearchMode_JEIAuto, SearchMode_JEIStandard, + SearchMode_AutoKeep, + SearchMode_StandardKeep, + SearchMode_JEIAutoKeep, + SearchMode_JEIStandardKeep, SearchMode, ItemName, @@ -137,7 +141,11 @@ public enum ButtonToolTips SchedulingMode, SchedulingModeDefault, SchedulingModeRoundRobin, - SchedulingModeRandom; + SchedulingModeRandom, + + FilterMode, + FilterModeKeep, + FilterModeClear; private final String root; diff --git a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang index 25f9af925..35bfdd634 100644 --- a/src/main/resources/assets/appliedenergistics2/lang/en_us.lang +++ b/src/main/resources/assets/appliedenergistics2/lang/en_us.lang @@ -289,6 +289,10 @@ gui.tooltips.appliedenergistics2.SearchMode_Auto=Auto Search gui.tooltips.appliedenergistics2.SearchMode_Standard=Standard Search gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=JEI Synchronized Auto gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=JEI Synchronized Standard +gui.tooltips.appliedenergistics2.SearchMode_AutoKeep=Auto Search Keep +gui.tooltips.appliedenergistics2.SearchMode_StandardKeep=Standard Search Keep +gui.tooltips.appliedenergistics2.SearchMode_JEIAutoKeep=JEI Synchronized Auto Keep +gui.tooltips.appliedenergistics2.SearchMode_JEIStandardKeep=JEI Synchronized Standard Keep gui.tooltips.appliedenergistics2.SearchMode=Search Box Mode gui.tooltips.appliedenergistics2.PartitionStorageHint=Configures Partition based on currently stored items. gui.tooltips.appliedenergistics2.ClearSettings=Clear Config/Settings @@ -326,6 +330,9 @@ gui.tooltips.appliedenergistics2.SchedulingMode=Scheduling Mode gui.tooltips.appliedenergistics2.SchedulingModeDefault=Export the first item until the network is empty, then try the next ones. gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Export using round robin mode. gui.tooltips.appliedenergistics2.SchedulingModeRandom=Export items in random mode. +gui.tooltips.appliedenergistics2.FilterMode=Search Filter Mode +gui.tooltips.appliedenergistics2.FilterModeKeep=Restore previous search filter. +gui.tooltips.appliedenergistics2.FilterModeClear=Clear on each opening. gui.tooltips.appliedenergistics2.ItemsStored=Items Stored: %s gui.tooltips.appliedenergistics2.ItemsRequestable=Items Requestable: %s diff --git a/src/main/resources/assets/appliedenergistics2/textures/guis/states.png b/src/main/resources/assets/appliedenergistics2/textures/guis/states.png index ed584fa688ce8b0ce27ddc88deda62e8be4c1776..15f840c4878a20213a2d8112eba8895576096271 100644 GIT binary patch delta 11648 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 delta 11436 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