diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java index 57cb6b2f15e..14f846ba9c1 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java @@ -164,6 +164,15 @@ public void deactivate(SearchOptions searchOption) { notifyAvailabilityChangedIfNeeded(oldAvailabilities); } + @Override + public void toggle(SearchOptions searchOption) { + if (isActive(searchOption)) { + deactivate(searchOption); + } else { + activate(searchOption); + } + } + @Override public boolean isActive(SearchOptions searchOption) { return searchOptions.contains(searchOption); diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/IFindReplaceLogic.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/IFindReplaceLogic.java index 9dd2408890c..2f772072f84 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/IFindReplaceLogic.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/IFindReplaceLogic.java @@ -60,6 +60,13 @@ public interface IFindReplaceLogic { */ public void deactivate(SearchOptions searchOption); + /** + * Toggles a search option + * + * @param searchOption option + */ + public void toggle(SearchOptions searchOption); + /** * Registers a listener that is notified whenever the given search option is * activated or deactivated. The listener is called with {@code true} when the diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java index d0242a4bc59..cfe2c4739f6 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java @@ -631,7 +631,7 @@ private void createCloseTools() { private void createAreaSearchButton() { FindReplaceOverlayAction searchInSelectionAction = new FindReplaceOverlayAction(() -> { - activateInFindReplacerIf(SearchOptions.GLOBAL, !findReplaceLogic.isActive(SearchOptions.GLOBAL)); + findReplaceLogic.toggle(SearchOptions.GLOBAL); updateIncrementalSearch(); }); searchInSelectionAction.addShortcuts(KeyboardShortcuts.OPTION_SEARCH_IN_SELECTION); @@ -645,7 +645,7 @@ private void createAreaSearchButton() { private void createRegexSearchButton() { FindReplaceOverlayAction regexAction = new FindReplaceOverlayAction(() -> { - activateInFindReplacerIf(SearchOptions.REGEX, !findReplaceLogic.isActive(SearchOptions.REGEX)); + findReplaceLogic.toggle(SearchOptions.REGEX); updateIncrementalSearch(); }); regexAction.addShortcuts(KeyboardShortcuts.OPTION_REGEX); @@ -663,7 +663,7 @@ private void createRegexSearchButton() { private void createCaseSensitiveButton() { FindReplaceOverlayAction caseSensitiveAction = new FindReplaceOverlayAction(() -> { - activateInFindReplacerIf(SearchOptions.CASE_SENSITIVE, !findReplaceLogic.isActive(SearchOptions.CASE_SENSITIVE)); + findReplaceLogic.toggle(SearchOptions.CASE_SENSITIVE); updateIncrementalSearch(); }); caseSensitiveAction.addShortcuts(KeyboardShortcuts.OPTION_CASE_SENSITIVE); @@ -677,7 +677,7 @@ private void createCaseSensitiveButton() { private void createWholeWordsButton() { FindReplaceOverlayAction wholeWordAction = new FindReplaceOverlayAction(() -> { - activateInFindReplacerIf(SearchOptions.WHOLE_WORD, !findReplaceLogic.isActive(SearchOptions.WHOLE_WORD)); + findReplaceLogic.toggle(SearchOptions.WHOLE_WORD); updateIncrementalSearch(); }); wholeWordAction.addShortcuts(KeyboardShortcuts.OPTION_WHOLE_WORD);