Action borrowed from cfeclipse: "remove trailing spaces at end of file"
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / preferences / JavaEditorPreferencePage.java
index 23ce056..42c40a9 100644 (file)
@@ -96,10 +96,12 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
   public final OverlayPreferenceStore.OverlayKey[] fKeys;
 
   private final String[][] fSyntaxColorListModel = new String[][] {
-      { PreferencesMessages.getString("JavaEditorPreferencePage.multiLineComment"),
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.multiLineComment"),
           PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("JavaEditorPreferencePage.singleLineComment"),
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.singleLineComment"),
           PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR },
       //$NON-NLS-1$
       { PreferencesMessages.getString("JavaEditorPreferencePage.tags"), PreferenceConstants.EDITOR_PHP_TAG_COLOR },
@@ -119,10 +121,10 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
       { PreferencesMessages.getString("JavaEditorPreferencePage.others"), PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR }, //$NON-NLS-1$
       { PreferencesMessages.getString("JavaEditorPreferencePage.operators"), PreferenceConstants.EDITOR_PHP_OPERATOR_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("JavaEditorPreferencePage.returnKeyword"),
-          PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_COLOR }, 
-      { PreferencesMessages.getString("JavaEditorPreferencePage.braces"),
-          PreferenceConstants.EDITOR_PHP_BRACE_OPERATOR_COLOR },
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.returnKeyword"),
+          PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.braces"), PreferenceConstants.EDITOR_PHP_BRACE_OPERATOR_COLOR },
       //$NON-NLS-1$
       { PreferencesMessages.getString("JavaEditorPreferencePage.phpDocKeywords"), PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR },
       //$NON-NLS-1$
@@ -134,16 +136,20 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
   };
 
   private final String[][] fAppearanceColorListModel = new String[][] {
-      { PreferencesMessages.getString("JavaEditorPreferencePage.lineNumberForegroundColor"),
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.lineNumberForegroundColor"),
           AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("JavaEditorPreferencePage.matchingBracketsHighlightColor2"),
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.matchingBracketsHighlightColor2"),
           PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("JavaEditorPreferencePage.currentLineHighlighColor"),
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.currentLineHighlighColor"),
           AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("JavaEditorPreferencePage.printMarginColor2"),
+      {
+          PreferencesMessages.getString("JavaEditorPreferencePage.printMarginColor2"),
           AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR },
       //$NON-NLS-1$
       { PreferencesMessages.getString("JavaEditorPreferencePage.findScopeColor2"), PreferenceConstants.EDITOR_FIND_SCOPE_COLOR },
@@ -246,7 +252,7 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
   //  private Button fAddJavaDocTagsButton;
 
   private Button fEscapeStringsButtonDQ;
-  
+
   private Button fEscapeStringsButtonSQ;
 
   //   private Button fGuessMethodArgumentsButton;
@@ -276,9 +282,12 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
 
   private Button fShowInVerticalRulerCheckBox;
 
-       private Text fBrowserLikeLinksKeyModifierText;
-       private Button fBrowserLikeLinksCheckBox;
-       private StatusInfo fBrowserLikeLinksKeyModifierStatus;
+  private Text fBrowserLikeLinksKeyModifierText;
+
+  private Button fBrowserLikeLinksCheckBox;
+
+  private StatusInfo fBrowserLikeLinksKeyModifierStatus;
+
   //   private Button fCompletionInsertsRadioButton;
   //   private Button fCompletionOverwritesRadioButton;
   //   private Button fStickyOccurrencesButton;
@@ -339,10 +348,14 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     overlayKeys
         .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_PHP_TYPE_BOLD));
 
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.EDITOR_STRING_COLOR_DQ));
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_STRING_BOLD_DQ));
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.EDITOR_STRING_COLOR_SQ));
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_STRING_BOLD_SQ));
+    overlayKeys
+        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.EDITOR_STRING_COLOR_DQ));
+    overlayKeys
+        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_STRING_BOLD_DQ));
+    overlayKeys
+        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING, PreferenceConstants.EDITOR_STRING_COLOR_SQ));
+    overlayKeys
+        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_STRING_BOLD_SQ));
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
         PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR));
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
@@ -467,22 +480,24 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     //        .add(new OverlayPreferenceStore.OverlayKey(
     //            OverlayPreferenceStore.BOOLEAN,
     //            PreferenceConstants.EDITOR_CLOSE_BRACES));
-        overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
-            OverlayPreferenceStore.BOOLEAN,
-            PreferenceConstants.EDITOR_CLOSE_JAVADOCS));
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_WRAP_WORDS));
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_WRAP_STRINGS_DQ));
     overlayKeys
-        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_ESCAPE_STRINGS_DQ));
-    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_WRAP_STRINGS_SQ));
-    overlayKeys
-        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_ESCAPE_STRINGS_SQ));
-    
+        .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_CLOSE_JAVADOCS));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_WRAP_WORDS));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+        PreferenceConstants.EDITOR_WRAP_STRINGS_DQ));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+        PreferenceConstants.EDITOR_ESCAPE_STRINGS_DQ));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+        PreferenceConstants.EDITOR_WRAP_STRINGS_SQ));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+        PreferenceConstants.EDITOR_ESCAPE_STRINGS_SQ));
+
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
         PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS));
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
         PreferenceConstants.EDITOR_FORMAT_JAVADOCS));
-    
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+        PreferenceConstants.EDITOR_P_RTRIM_ON_SAVE));
     
     overlayKeys
         .add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN, PreferenceConstants.EDITOR_SMART_HOME_END));
@@ -717,19 +732,23 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     Preferences coreStore = createTemporaryCorePreferenceStore();
     fJavaTextTools = new JavaTextTools(fOverlayStore, coreStore, false);
     IPreferenceStore generalTextStore = EditorsUI.getPreferenceStore();
-    IPreferenceStore store = new ChainedPreferenceStore(new IPreferenceStore[] { fOverlayStore,
-        new PreferencesAdapter(createTemporaryCorePreferenceStore()), generalTextStore });
+    IPreferenceStore store = new ChainedPreferenceStore(new IPreferenceStore[] {
+        fOverlayStore,
+        new PreferencesAdapter(createTemporaryCorePreferenceStore()),
+        generalTextStore });
 
     fPreviewViewer = new JavaSourceViewer(parent, null, null, false, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER, store);
-    JavaTextTools tools= PHPeclipsePlugin.getDefault().getJavaTextTools();
-       PHPSourceViewerConfiguration configuration= new PHPSourceViewerConfiguration(tools.getColorManager(), store, null, IPHPPartitions.PHP_PARTITIONING);
-//    PHPSourceViewerConfiguration configuration =new PHPSourceViewerConfiguration(fJavaTextTools, null, IPHPPartitions.PHP_PARTITIONING);
+    JavaTextTools tools = PHPeclipsePlugin.getDefault().getJavaTextTools();
+    PHPSourceViewerConfiguration configuration = new PHPSourceViewerConfiguration(tools.getColorManager(), store, null,
+        IPHPPartitions.PHP_PARTITIONING);
+    //    PHPSourceViewerConfiguration configuration =new PHPSourceViewerConfiguration(fJavaTextTools, null,
+    // IPHPPartitions.PHP_PARTITIONING);
     fPreviewViewer.configure(configuration);
-     
-    Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT);
-       fPreviewViewer.getTextWidget().setFont(font);
+
+    Font font = JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT);
+    fPreviewViewer.getTextWidget().setFont(font);
     new JavaSourcePreviewerUpdater(fPreviewViewer, configuration, store);
-       fPreviewViewer.setEditable(false);
+    fPreviewViewer.setEditable(false);
     String content = loadPreviewContentFromFile("ColorSettingPreviewCode.txt"); //$NON-NLS-1$
     IDocument document = new Document(content);
     fJavaTextTools.setupJavaDocumentPartitioner(document, IPHPPartitions.PHP_PARTITIONING);
@@ -1038,8 +1057,13 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     Iterator e = sortedPreferences.iterator();
     while (e.hasNext()) {
       AnnotationPreference info = (AnnotationPreference) e.next();
-      listModelItems.add(new String[] { info.getPreferenceLabel(), info.getColorPreferenceKey(), info.getTextPreferenceKey(),
-          info.getOverviewRulerPreferenceKey(), info.getHighlightPreferenceKey(), info.getVerticalRulerPreferenceKey(),
+      listModelItems.add(new String[] {
+          info.getPreferenceLabel(),
+          info.getColorPreferenceKey(),
+          info.getTextPreferenceKey(),
+          info.getOverviewRulerPreferenceKey(),
+          info.getHighlightPreferenceKey(),
+          info.getVerticalRulerPreferenceKey(),
           info.getTextStylePreferenceKey() });
     }
     String[][] items = new String[listModelItems.size()][];
@@ -1079,7 +1103,7 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
 
     label = PreferencesMessages.getString("JavaEditorPreferencePage.wrapWords");//$NON-NLS-1$
     addCheckBox(group, label, PreferenceConstants.EDITOR_WRAP_WORDS, 1);
-    
+
     label = PreferencesMessages.getString("JavaEditorPreferencePage.wrapStringsDQ");//$NON-NLS-1$
     Button button = addCheckBox(group, label, PreferenceConstants.EDITOR_WRAP_STRINGS_DQ, 1);
 
@@ -1094,7 +1118,7 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     //$NON-NLS-1$
     fEscapeStringsButtonSQ = addCheckBox(group, label, PreferenceConstants.EDITOR_ESCAPE_STRINGS_SQ, 1);
     createDependency(button, fEscapeStringsButtonSQ);
-    
+
     label = PreferencesMessages.getString("JavaEditorPreferencePage.smartPaste");
     //$NON-NLS-1$
     addCheckBox(group, label, PreferenceConstants.EDITOR_SMART_PASTE, 1);
@@ -1119,16 +1143,15 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     //    //$NON-NLS-1$
     //    addCheckBox(group, label, PreferenceConstants.EDITOR_CLOSE_BRACES, 1);
 
-        label = PreferencesMessages
-            .getString("JavaEditorPreferencePage.closeJavaDocs");
-        //$NON-NLS-1$
-        button = addCheckBox(group, label,
-            PreferenceConstants.EDITOR_CLOSE_JAVADOCS, 1);
-        label = PreferencesMessages
-        .getString("JavaEditorPreferencePage.formatJavaDocs");
+    label = PreferencesMessages.getString("JavaEditorPreferencePage.closeJavaDocs");
     //$NON-NLS-1$
-    button = addCheckBox(group, label,
-        PreferenceConstants.EDITOR_FORMAT_JAVADOCS, 1);
+    button = addCheckBox(group, label, PreferenceConstants.EDITOR_CLOSE_JAVADOCS, 1);
+    label = PreferencesMessages.getString("JavaEditorPreferencePage.formatJavaDocs");
+    //$NON-NLS-1$
+    button = addCheckBox(group, label, PreferenceConstants.EDITOR_FORMAT_JAVADOCS, 1);
+    
+    label = PreferencesMessages.getString("JavaEditorPreferencePage.p_rtrim_on_save");
+    addCheckBox(group, label, PreferenceConstants.EDITOR_P_RTRIM_ON_SAVE, 1);
     //
     //    label = PreferencesMessages
     //        .getString("JavaEditorPreferencePage.addJavaDocTags");
@@ -1202,124 +1225,111 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     GridLayout layout = new GridLayout();
     layout.numColumns = 2;
     composite.setLayout(layout);
-               String text=
-     PreferencesMessages.getString("JavaEditorPreferencePage.navigation.browserLikeLinks");
-     //$NON-NLS-1$
-               fBrowserLikeLinksCheckBox= addCheckBox(composite, text,
-     PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS, 0);
-               fBrowserLikeLinksCheckBox.addSelectionListener(new SelectionListener() {
-                       public void widgetSelected(SelectionEvent e) {
-                               boolean state= fBrowserLikeLinksCheckBox.getSelection();
-                               fBrowserLikeLinksKeyModifierText.setEnabled(state);
-                               handleBrowserLikeLinksKeyModifierModified();
-                       }
-                       public void widgetDefaultSelected(SelectionEvent e) {
-                       }
-               });
-//     Text field for modifier string
-               text=
-     PreferencesMessages.getString("JavaEditorPreferencePage.navigation.browserLikeLinksKeyModifier");
-     //$NON-NLS-1$
-               fBrowserLikeLinksKeyModifierText= addTextField(composite, text,
-     PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER, 20, 0,
-     false);
-               fBrowserLikeLinksKeyModifierText.setTextLimit(Text.LIMIT);
-               
-               if
-     (computeStateMask(fOverlayStore.getString(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER))
-     == -1) {
-                       // Fix possible illegal modifier string
-                       int stateMask=
-     fOverlayStore.getInt(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK);
-                       if (stateMask == -1)
-                               fBrowserLikeLinksKeyModifierText.setText(""); //$NON-NLS-1$
-                       else
-                               fBrowserLikeLinksKeyModifierText.setText(EditorUtility.getModifierString(stateMask));
-               }
-               fBrowserLikeLinksKeyModifierText.addKeyListener(new KeyListener() {
-                       private boolean isModifierCandidate;
-                       public void keyPressed(KeyEvent e) {
-                               isModifierCandidate= e.keyCode > 0 && e.character == 0 && e.stateMask ==
-     0;
-                       }
-               
-                       public void keyReleased(KeyEvent e) {
-                               if (isModifierCandidate && e.stateMask > 0 && e.stateMask == e.stateMask
-     && e.character == 0) {// && e.time -time < 1000) {
-                                       String modifierString= fBrowserLikeLinksKeyModifierText.getText();
-                                       Point selection= fBrowserLikeLinksKeyModifierText.getSelection();
-                                       int i= selection.x - 1;
-                                       while (i > -1 && Character.isWhitespace(modifierString.charAt(i))) {
-                                               i--;
-                                       }
-                                       boolean needsPrefixDelimiter= i > -1 &&
-     !String.valueOf(modifierString.charAt(i)).equals(DELIMITER);
-    
-                                       i= selection.y;
-                                       while (i < modifierString.length() &&
-     Character.isWhitespace(modifierString.charAt(i))) {
-                                               i++;
-                                       }
-                                       boolean needsPostfixDelimiter= i < modifierString.length() &&
-     !String.valueOf(modifierString.charAt(i)).equals(DELIMITER);
-    
-                                       String insertString;
-    
-                                       if (needsPrefixDelimiter && needsPostfixDelimiter)
-                                               insertString=
-     PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertDelimiterAndModifierAndDelimiter",
-     new String[] {Action.findModifierString(e.stateMask)}); //$NON-NLS-1$
-                                       else if (needsPrefixDelimiter)
-                                               insertString=
-     PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertDelimiterAndModifier",
-     new String[] {Action.findModifierString(e.stateMask)}); //$NON-NLS-1$
-                                       else if (needsPostfixDelimiter)
-                                               insertString=
-     PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertModifierAndDelimiter",
-     new String[] {Action.findModifierString(e.stateMask)}); //$NON-NLS-1$
-                                       else
-                                               insertString= Action.findModifierString(e.stateMask);
-    
-                                       fBrowserLikeLinksKeyModifierText.insert(insertString);
-                               }
-                       }
-               });
-    
-               fBrowserLikeLinksKeyModifierText.addModifyListener(new ModifyListener()
-     {
-                       public void modifyText(ModifyEvent e) {
-                               handleBrowserLikeLinksKeyModifierModified();
-                       }
-               });
+    String text = PreferencesMessages.getString("JavaEditorPreferencePage.navigation.browserLikeLinks");
+    //$NON-NLS-1$
+    fBrowserLikeLinksCheckBox = addCheckBox(composite, text, PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS, 0);
+    fBrowserLikeLinksCheckBox.addSelectionListener(new SelectionListener() {
+      public void widgetSelected(SelectionEvent e) {
+        boolean state = fBrowserLikeLinksCheckBox.getSelection();
+        fBrowserLikeLinksKeyModifierText.setEnabled(state);
+        handleBrowserLikeLinksKeyModifierModified();
+      }
+
+      public void widgetDefaultSelected(SelectionEvent e) {
+      }
+    });
+    //     Text field for modifier string
+    text = PreferencesMessages.getString("JavaEditorPreferencePage.navigation.browserLikeLinksKeyModifier");
+    //$NON-NLS-1$
+    fBrowserLikeLinksKeyModifierText = addTextField(composite, text, PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER,
+        20, 0, false);
+    fBrowserLikeLinksKeyModifierText.setTextLimit(Text.LIMIT);
+
+    if (computeStateMask(fOverlayStore.getString(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER)) == -1) {
+      // Fix possible illegal modifier string
+      int stateMask = fOverlayStore.getInt(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK);
+      if (stateMask == -1)
+        fBrowserLikeLinksKeyModifierText.setText(""); //$NON-NLS-1$
+      else
+        fBrowserLikeLinksKeyModifierText.setText(EditorUtility.getModifierString(stateMask));
+    }
+    fBrowserLikeLinksKeyModifierText.addKeyListener(new KeyListener() {
+      private boolean isModifierCandidate;
+
+      public void keyPressed(KeyEvent e) {
+        isModifierCandidate = e.keyCode > 0 && e.character == 0 && e.stateMask == 0;
+      }
+
+      public void keyReleased(KeyEvent e) {
+        if (isModifierCandidate && e.stateMask > 0 && e.stateMask == e.stateMask && e.character == 0) {// && e.time -time < 1000) {
+          String modifierString = fBrowserLikeLinksKeyModifierText.getText();
+          Point selection = fBrowserLikeLinksKeyModifierText.getSelection();
+          int i = selection.x - 1;
+          while (i > -1 && Character.isWhitespace(modifierString.charAt(i))) {
+            i--;
+          }
+          boolean needsPrefixDelimiter = i > -1 && !String.valueOf(modifierString.charAt(i)).equals(DELIMITER);
+
+          i = selection.y;
+          while (i < modifierString.length() && Character.isWhitespace(modifierString.charAt(i))) {
+            i++;
+          }
+          boolean needsPostfixDelimiter = i < modifierString.length()
+              && !String.valueOf(modifierString.charAt(i)).equals(DELIMITER);
+
+          String insertString;
+
+          if (needsPrefixDelimiter && needsPostfixDelimiter)
+            insertString = PreferencesMessages.getFormattedString(
+                "JavaEditorPreferencePage.navigation.insertDelimiterAndModifierAndDelimiter", new String[] { Action
+                    .findModifierString(e.stateMask) }); //$NON-NLS-1$
+          else if (needsPrefixDelimiter)
+            insertString = PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertDelimiterAndModifier",
+                new String[] { Action.findModifierString(e.stateMask) }); //$NON-NLS-1$
+          else if (needsPostfixDelimiter)
+            insertString = PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertModifierAndDelimiter",
+                new String[] { Action.findModifierString(e.stateMask) }); //$NON-NLS-1$
+          else
+            insertString = Action.findModifierString(e.stateMask);
+
+          fBrowserLikeLinksKeyModifierText.insert(insertString);
+        }
+      }
+    });
+
+    fBrowserLikeLinksKeyModifierText.addModifyListener(new ModifyListener() {
+      public void modifyText(ModifyEvent e) {
+        handleBrowserLikeLinksKeyModifierModified();
+      }
+    });
     return composite;
   }
 
   private void handleBrowserLikeLinksKeyModifierModified() {
-               String modifiers= fBrowserLikeLinksKeyModifierText.getText();
-               int stateMask= computeStateMask(modifiers);
-               if (fBrowserLikeLinksCheckBox.getSelection() && (stateMask == -1 ||
-     (stateMask & SWT.SHIFT) != 0)) {
-                       if (stateMask == -1)
-                               fBrowserLikeLinksKeyModifierStatus= new StatusInfo(IStatus.ERROR,
-     PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.modifierIsNotValid",
-     modifiers)); //$NON-NLS-1$
-                       else
-                               fBrowserLikeLinksKeyModifierStatus= new StatusInfo(IStatus.ERROR,
-     PreferencesMessages.getString("JavaEditorPreferencePage.navigation.shiftIsDisabled"));
-     //$NON-NLS-1$
-                       setValid(false);
-                       StatusUtil.applyToStatusLine(this, fBrowserLikeLinksKeyModifierStatus);
-               } else {
-                       fBrowserLikeLinksKeyModifierStatus= new StatusInfo();
-                       updateStatus(fBrowserLikeLinksKeyModifierStatus);
-               }
+    String modifiers = fBrowserLikeLinksKeyModifierText.getText();
+    int stateMask = computeStateMask(modifiers);
+    if (fBrowserLikeLinksCheckBox.getSelection() && (stateMask == -1 || (stateMask & SWT.SHIFT) != 0)) {
+      if (stateMask == -1)
+        fBrowserLikeLinksKeyModifierStatus = new StatusInfo(IStatus.ERROR, PreferencesMessages.getFormattedString(
+            "JavaEditorPreferencePage.navigation.modifierIsNotValid", modifiers)); //$NON-NLS-1$
+      else
+        fBrowserLikeLinksKeyModifierStatus = new StatusInfo(IStatus.ERROR, PreferencesMessages
+            .getString("JavaEditorPreferencePage.navigation.shiftIsDisabled"));
+      //$NON-NLS-1$
+      setValid(false);
+      StatusUtil.applyToStatusLine(this, fBrowserLikeLinksKeyModifierStatus);
+    } else {
+      fBrowserLikeLinksKeyModifierStatus = new StatusInfo();
+      updateStatus(fBrowserLikeLinksKeyModifierStatus);
+    }
+  }
+
+  private IStatus getBrowserLikeLinksKeyModifierStatus() {
+    if (fBrowserLikeLinksKeyModifierStatus == null)
+      fBrowserLikeLinksKeyModifierStatus = new StatusInfo();
+    return fBrowserLikeLinksKeyModifierStatus;
   }
 
-       private IStatus getBrowserLikeLinksKeyModifierStatus() {
-               if (fBrowserLikeLinksKeyModifierStatus == null)
-               fBrowserLikeLinksKeyModifierStatus= new StatusInfo();
-               return fBrowserLikeLinksKeyModifierStatus;
-       }
   /**
    * Computes the state mask for the given modifier string.
    * 
@@ -1461,9 +1471,8 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     fBackgroundDefaultRadioButton.setSelection(default_);
     fBackgroundCustomRadioButton.setSelection(!default_);
     fBackgroundColorButton.setEnabled(!default_);
-        boolean closeJavaDocs = fOverlayStore
-            .getBoolean(PreferenceConstants.EDITOR_CLOSE_JAVADOCS);
-//        fAddJavaDocTagsButton.setEnabled(closeJavaDocs);
+    boolean closeJavaDocs = fOverlayStore.getBoolean(PreferenceConstants.EDITOR_CLOSE_JAVADOCS);
+    //        fAddJavaDocTagsButton.setEnabled(closeJavaDocs);
     fEscapeStringsButtonDQ.setEnabled(fOverlayStore.getBoolean(PreferenceConstants.EDITOR_WRAP_STRINGS_DQ));
     fEscapeStringsButtonSQ.setEnabled(fOverlayStore.getBoolean(PreferenceConstants.EDITOR_WRAP_STRINGS_SQ));
     //         boolean fillMethodArguments=
@@ -1513,7 +1522,7 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     //         fJavaEditorHoverConfigurationBlock.performOk();
     fFoldingConfigurationBlock.performOk();
     fOverlayStore.setValue(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK,
-    computeStateMask(fBrowserLikeLinksKeyModifierText.getText()));
+        computeStateMask(fBrowserLikeLinksKeyModifierText.getText()));
     fOverlayStore.propagate();
     PHPeclipsePlugin.getDefault().savePluginPreferences();
     return true;