[293239] Feature request: Find/Replace in Vex
https://bugs.eclipse.org/bugs/show_bug.cgi?id=293239
diff --git a/sourceediting/plugins/org.eclipse.wst.xml.vex.ui/src/org/eclipse/wst/xml/vex/ui/internal/editor/VexActionBarContributor.java b/sourceediting/plugins/org.eclipse.wst.xml.vex.ui/src/org/eclipse/wst/xml/vex/ui/internal/editor/VexActionBarContributor.java
index 483b37a..52cc87b 100644
--- a/sourceediting/plugins/org.eclipse.wst.xml.vex.ui/src/org/eclipse/wst/xml/vex/ui/internal/editor/VexActionBarContributor.java
+++ b/sourceediting/plugins/org.eclipse.wst.xml.vex.ui/src/org/eclipse/wst/xml/vex/ui/internal/editor/VexActionBarContributor.java
@@ -27,7 +27,10 @@
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.actions.ActionFactory;
+import org.eclipse.ui.texteditor.FindNextAction;
import org.eclipse.ui.texteditor.FindReplaceAction;
+import org.eclipse.ui.texteditor.ITextEditorActionConstants;
+import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds;
import org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorActionBarContributor;
import org.eclipse.wst.xml.vex.core.internal.dom.DocumentValidationException;
import org.eclipse.wst.xml.vex.core.internal.widget.IVexWidget;
@@ -103,44 +106,56 @@
}
this.activeEditor = activeEditor;
+ setId(this.copyAction, ActionFactory.COPY.getId());
+ setId(this.cutAction, ActionFactory.CUT.getId());
+ setId(this.deleteAction, ActionFactory.DELETE.getId());
+ setId(this.pasteAction, ActionFactory.PASTE.getId());
+ setId(this.redoAction, ActionFactory.REDO.getId());
+ setId(this.selectAllAction, ActionFactory.SELECT_ALL.getId());
+ setId(this.undoAction, ActionFactory.UNDO.getId());
- this.getActionBars().setGlobalActionHandler(ActionFactory.COPY.getId(),
- this.copyAction);
-
- this.getActionBars().setGlobalActionHandler(ActionFactory.CUT.getId(),
- this.cutAction);
-
- this.getActionBars().setGlobalActionHandler(
- ActionFactory.DELETE.getId(), this.deleteAction);
-
- this.getActionBars().setGlobalActionHandler(
- ActionFactory.PASTE.getId(), this.pasteAction);
-
- this.getActionBars().setGlobalActionHandler(ActionFactory.REDO.getId(),
- this.redoAction);
-
- this.getActionBars().setGlobalActionHandler(
- ActionFactory.SELECT_ALL.getId(), this.selectAllAction);
-
- this.getActionBars().setGlobalActionHandler(ActionFactory.UNDO.getId(),
- this.undoAction);
-
- // find/replace action
String findActionMessagesBundleId =
"org.eclipse.ui.texteditor.ConstructedEditorMessages";
- String prefix = "Editor.FindReplace.";
ResourceBundle resourceBundle =
ResourceBundle.getBundle(findActionMessagesBundleId);
- FindReplaceAction findAction = new FindReplaceAction(resourceBundle,
- prefix,
- this.activeEditor);
- this.getActionBars().setGlobalActionHandler(ActionFactory.FIND.getId(),
- findAction);
- this.enableActions();
+ // Find/Replace
+ IAction findAction = new FindReplaceAction(resourceBundle,
+ "Editor.FindReplace.",
+ this.activeEditor);
+ setId(findAction, ActionFactory.FIND.getId());
+
+ // Find Next
+ IAction findNextAction = new FindNextAction(resourceBundle,
+ "Editor.FindNext.",
+ this.activeEditor,
+ true);
+ setIds(findNextAction,
+ ITextEditorActionConstants.FIND_NEXT,
+ IWorkbenchActionDefinitionIds.FIND_NEXT);
+
+ // Find Previous
+ IAction findPreviousAction = new FindNextAction(resourceBundle,
+ "Editor.FindPrevious.",
+ this.activeEditor,
+ false);
+ setIds(findPreviousAction,
+ ITextEditorActionConstants.FIND_PREVIOUS,
+ IWorkbenchActionDefinitionIds.FIND_PREVIOUS);
+
+ enableActions();
}
- // ===================================================== PRIVATE
+ private void setIds(IAction action,
+ String actionId,
+ String commandId) {
+ action.setActionDefinitionId(commandId);
+ setId(action, actionId);
+ }
+
+ private void setId(IAction action, String actionId) {
+ getActionBars().setGlobalActionHandler(actionId, action);
+ }
private IEditorPart activeEditor;
diff --git a/sourceediting/tests/org.eclipse.wst.xml.vex.ui.tests/src/org/eclipse/wst/xml/vex/ui/internal/editor/tests/FindReplaceTargetTest.java b/sourceediting/tests/org.eclipse.wst.xml.vex.ui.tests/src/org/eclipse/wst/xml/vex/ui/internal/editor/tests/FindReplaceTargetTest.java
index b73eaee..f2815e4 100644
--- a/sourceediting/tests/org.eclipse.wst.xml.vex.ui.tests/src/org/eclipse/wst/xml/vex/ui/internal/editor/tests/FindReplaceTargetTest.java
+++ b/sourceediting/tests/org.eclipse.wst.xml.vex.ui.tests/src/org/eclipse/wst/xml/vex/ui/internal/editor/tests/FindReplaceTargetTest.java
@@ -225,24 +225,27 @@
assertFalse(find());
}
-// public void testFindWholeWord() throws Exception {
-// setUp("xxx aaa xxx xyx xxx-ccc a-xxx%c �xxx xxx� xxx");
-// setFindOptions("xxx", Direction.FORWARD, Case.SENSITVE, WholeWord.ON);
-// findAndAssertEquals("[xxx] aaa xxx xyx xxx-ccc a-xxx%c �xxx xxx� xxx");
-// findAndAssertEquals("xxx aaa [xxx] xyx xxx-ccc a-xxx%c �xxx xxx� xxx");
-// findAndAssertEquals("xxx aaa xxx xyx [xxx]-ccc a-xxx%c �xxx xxx� xxx");
-// findAndAssertEquals("xxx aaa xxx xyx xxx-ccc a-[xxx]%c �xxx xxx� xxx");
-// findAndAssertEquals("xxx aaa xxx xyx xxx-ccc a-xxx%c �xxx xxx� [xxx]");
-// assertFalse(find());
-//
-// // crosscheck: backward; 'Whole word' disabled
-// setFindOptions("xxx", Direction.BACKWARD, Case.SENSITVE, WholeWord.OFF);
-// findAndAssertEquals("xxx aaa xxx xyx xxx-ccc a-xxx%c �xxx [xxx]� xxx");
-// findAndAssertEquals("xxx aaa xxx xyx xxx-ccc a-xxx%c �[xxx] xxx� xxx");
-// findAndAssertEquals("xxx aaa xxx xyx xxx-ccc a-[xxx]%c �xxx xxx� xxx");
-// findAndAssertEquals("xxx aaa xxx xyx [xxx]-ccc a-xxx%c �xxx xxx� xxx");
-// findAndAssertEquals("xxx aaa [xxx] xyx xxx-ccc a-xxx%c �xxx xxx� xxx");
-// }
+ public void testFindWholeWord() throws Exception {
+
+ // including special chars and German umlauts: sharp s = \u00df
+ // ae = \u00e4
+ setUp("xx aa xx xyx xx-cc a-xx%c \u00e4xx xx\u00df xx");
+ setFindOptions("xx", Direction.FORWARD, Case.SENSITVE, WholeWord.ON);
+ findAndAssertEquals("[xx] aa xx xyx xx-cc a-xx%c \u00e4xx xx\u00df xx");
+ findAndAssertEquals("xx aa [xx] xyx xx-cc a-xx%c \u00e4xx xx\u00df xx");
+ findAndAssertEquals("xx aa xx xyx [xx]-cc a-xx%c \u00e4xx xx\u00df xx");
+ findAndAssertEquals("xx aa xx xyx xx-cc a-[xx]%c \u00e4xx xx\u00df xx");
+ findAndAssertEquals("xx aa xx xyx xx-cc a-xx%c \u00e4xx xx\u00df [xx]");
+ assertFalse(find());
+
+ // crosscheck: backward; 'Whole word' disabled
+ setFindOptions("xx", Direction.BACKWARD, Case.SENSITVE, WholeWord.OFF);
+ findAndAssertEquals("xx aa xx xyx xx-cc a-xx%c \u00e4xx [xx]\u00df xx");
+ findAndAssertEquals("xx aa xx xyx xx-cc a-xx%c \u00e4[xx] xx\u00df xx");
+ findAndAssertEquals("xx aa xx xyx xx-cc a-[xx]%c \u00e4xx xx\u00df xx");
+ findAndAssertEquals("xx aa xx xyx [xx]-cc a-xx%c \u00e4xx xx\u00df xx");
+ findAndAssertEquals("xx aa [xx] xyx xx-cc a-xx%c \u00e4xx xx\u00df xx");
+ }
public void testFindRegEx() throws Exception {
setUp("h2o h5o h42o hoo h234o h3O");