Skip to content

Commit 108a1e3

Browse files
committed
Find/replace: add toggle functionality for search options to logic
The search options can be changed via keyboard shortcuts / commands, which effectively triggers a toggle of those options. That is currently implemented at consumer-side unnecessarily. With this change, the FindReplaceLogic itself allows to toggle its search options.
1 parent 51109dc commit 108a1e3

3 files changed

Lines changed: 20 additions & 4 deletions

File tree

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceLogic.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,15 @@ public void deactivate(SearchOptions searchOption) {
164164
notifyAvailabilityChangedIfNeeded(oldAvailabilities);
165165
}
166166

167+
@Override
168+
public void toggle(SearchOptions searchOption) {
169+
if (isActive(searchOption)) {
170+
deactivate(searchOption);
171+
} else {
172+
activate(searchOption);
173+
}
174+
}
175+
167176
@Override
168177
public boolean isActive(SearchOptions searchOption) {
169178
return searchOptions.contains(searchOption);

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/IFindReplaceLogic.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,13 @@ public interface IFindReplaceLogic {
6060
*/
6161
public void deactivate(SearchOptions searchOption);
6262

63+
/**
64+
* Toggles a search option
65+
*
66+
* @param searchOption option
67+
*/
68+
public void toggle(SearchOptions searchOption);
69+
6370
/**
6471
* Registers a listener that is notified whenever the given search option is
6572
* activated or deactivated. The listener is called with {@code true} when the

bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlay.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -631,7 +631,7 @@ private void createCloseTools() {
631631

632632
private void createAreaSearchButton() {
633633
FindReplaceOverlayAction searchInSelectionAction = new FindReplaceOverlayAction(() -> {
634-
activateInFindReplacerIf(SearchOptions.GLOBAL, !findReplaceLogic.isActive(SearchOptions.GLOBAL));
634+
findReplaceLogic.toggle(SearchOptions.GLOBAL);
635635
updateIncrementalSearch();
636636
});
637637
searchInSelectionAction.addShortcuts(KeyboardShortcuts.OPTION_SEARCH_IN_SELECTION);
@@ -645,7 +645,7 @@ private void createAreaSearchButton() {
645645

646646
private void createRegexSearchButton() {
647647
FindReplaceOverlayAction regexAction = new FindReplaceOverlayAction(() -> {
648-
activateInFindReplacerIf(SearchOptions.REGEX, !findReplaceLogic.isActive(SearchOptions.REGEX));
648+
findReplaceLogic.toggle(SearchOptions.REGEX);
649649
updateIncrementalSearch();
650650
});
651651
regexAction.addShortcuts(KeyboardShortcuts.OPTION_REGEX);
@@ -663,7 +663,7 @@ private void createRegexSearchButton() {
663663

664664
private void createCaseSensitiveButton() {
665665
FindReplaceOverlayAction caseSensitiveAction = new FindReplaceOverlayAction(() -> {
666-
activateInFindReplacerIf(SearchOptions.CASE_SENSITIVE, !findReplaceLogic.isActive(SearchOptions.CASE_SENSITIVE));
666+
findReplaceLogic.toggle(SearchOptions.CASE_SENSITIVE);
667667
updateIncrementalSearch();
668668
});
669669
caseSensitiveAction.addShortcuts(KeyboardShortcuts.OPTION_CASE_SENSITIVE);
@@ -677,7 +677,7 @@ private void createCaseSensitiveButton() {
677677

678678
private void createWholeWordsButton() {
679679
FindReplaceOverlayAction wholeWordAction = new FindReplaceOverlayAction(() -> {
680-
activateInFindReplacerIf(SearchOptions.WHOLE_WORD, !findReplaceLogic.isActive(SearchOptions.WHOLE_WORD));
680+
findReplaceLogic.toggle(SearchOptions.WHOLE_WORD);
681681
updateIncrementalSearch();
682682
});
683683
wholeWordAction.addShortcuts(KeyboardShortcuts.OPTION_WHOLE_WORD);

0 commit comments

Comments
 (0)