diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/skip_replace.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/skip_replace.png new file mode 100644 index 00000000000..699855f6461 Binary files /dev/null and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/skip_replace.png differ diff --git a/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/skip_replace@2x.png b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/skip_replace@2x.png new file mode 100644 index 00000000000..676e90c4cd3 Binary files /dev/null and b/bundles/org.eclipse.ui.workbench.texteditor/icons/full/elcl16/skip_replace@2x.png differ diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.java index a0ef48222c4..cd7d6bf9e2d 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.java @@ -53,6 +53,7 @@ private FindReplaceMessages() { public static String FindReplace_WholeWordCheckBox_label; public static String FindReplace_IncrementalCheckBox_label; public static String FindReplace_RegExCheckbox_label; + public static String FindReplaceOverlay_skipReplaceButton_toolTip; public static String FindReplace_FindNextButton_label; public static String FindReplace_ReplaceFindButton_label; public static String FindReplace_ReplaceSelectionButton_label; diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.properties b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.properties index 6e013a7ecd6..615b08e7cc4 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.properties +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/FindReplaceMessages.properties @@ -55,6 +55,7 @@ FindReplaceOverlay_regexSearchButton_toolTip=Match regular expression pattern FindReplaceOverlay_caseSensitiveButton_toolTip=Match case FindReplaceOverlay_wholeWordsButton_toolTip=Match whole word FindReplaceOverlay_replaceButton_toolTip=Replace +FindReplaceOverlay_skipReplaceButton_toolTip=Don't replace this occurrence and jump to the next FindReplaceOverlay_replaceAllButton_toolTip=Replace all FindReplaceOverlay_searchBar_message=Find (\u2195 for history) FindReplaceOverlay_replaceBar_message=Replace (\u2195 for history) 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 4472e94a6ec..7d6a3abd9d2 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 @@ -97,6 +97,8 @@ private final class KeyboardShortcuts { KeyStroke.getInstance(SWT.MOD1, 'f')); private static final List TOGGLE_REPLACE = List.of( // KeyStroke.getInstance(SWT.MOD1, 'R'), KeyStroke.getInstance(SWT.MOD1, 'r')); + public static final List SKIP_REPLACE = List.of( // + KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'O'), KeyStroke.getInstance(SWT.MOD1 | SWT.SHIFT, 'o')); } public static final String ID_DATA_KEY = "org.eclipse.ui.internal.findreplace.overlay.FindReplaceOverlay.id"; //$NON-NLS-1$ @@ -136,6 +138,7 @@ private final class KeyboardShortcuts { private Composite replaceBarContainer; private HistoryTextWrapper replaceBar; private AccessibleToolBar replaceTools; + private ToolItem skipReplaceButton; private ToolItem replaceButton; private ToolItem replaceAllButton; @@ -291,6 +294,7 @@ private void assignIDs() { if (replaceBarOpen) { replaceBar.setData(ID_DATA_KEY, "replaceInput"); + skipReplaceButton.setData(ID_DATA_KEY, "skipReplace"); replaceButton.setData(ID_DATA_KEY, "replaceOne"); replaceAllButton.setData(ID_DATA_KEY, "replaceAll"); } @@ -511,6 +515,12 @@ private void createReplaceTools() { replaceTools.createToolItem(SWT.SEPARATOR); GridDataFactory.fillDefaults().grab(false, true).align(GridData.CENTER, GridData.END).applyTo(replaceTools); + + skipReplaceButton = new AccessibleToolItemBuilder(replaceTools).withStyleBits(SWT.PUSH) + .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_SKIP_REPLACE)) + .withToolTipText(FindReplaceMessages.FindReplaceOverlay_skipReplaceButton_toolTip) + .withOperation(() -> performSearch(true)).withShortcuts(KeyboardShortcuts.SKIP_REPLACE).build(); + replaceButton = new AccessibleToolItemBuilder(replaceTools).withStyleBits(SWT.PUSH) .withImage(FindReplaceOverlayImages.get(FindReplaceOverlayImages.KEY_REPLACE)) .withToolTipText(FindReplaceMessages.FindReplaceOverlay_replaceButton_toolTip) diff --git a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayImages.java b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayImages.java index e94c58d5868..8adad2ea16c 100644 --- a/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayImages.java +++ b/bundles/org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/findandreplace/overlay/FindReplaceOverlayImages.java @@ -47,6 +47,7 @@ class FindReplaceOverlayImages { static final String KEY_OPEN_REPLACE_AREA = PREFIX_ELCL + "open_replace"; //$NON-NLS-1$ static final String KEY_CLOSE_REPLACE_AREA = PREFIX_ELCL + "close_replace"; //$NON-NLS-1$ static final String KEY_OPEN_HISTORY = "open_history"; //$NON-NLS-1$ + public static final String KEY_SKIP_REPLACE = PREFIX_ELCL + "skip_replace"; //$NON-NLS-1$ /** * The image registry containing {@link Image images}. @@ -74,6 +75,7 @@ private static void declareImages() { declareRegistryImage(KEY_OPEN_REPLACE_AREA, ELCL + "open_replace.png"); //$NON-NLS-1$ declareRegistryImage(KEY_CLOSE_REPLACE_AREA, ELCL + "close_replace.png"); //$NON-NLS-1$ declareRegistryImage(KEY_OPEN_HISTORY, ELCL + "open_history.png"); //$NON-NLS-1$ + declareRegistryImage(KEY_SKIP_REPLACE, ELCL + "skip_replace.png"); //$NON-NLS-1$ } /**