* Added browser like links (Ctrl+Mouseclick on identifier; same as F3 shortcut)
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / preferences / JavaEditorPreferencePage.java
index 261ba23..61abec9 100644 (file)
@@ -40,6 +40,7 @@ import net.sourceforge.phpeclipse.preferences.ColorEditor;
 
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Preferences;
+import org.eclipse.jface.action.Action;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.preference.IPreferenceStore;
 import org.eclipse.jface.preference.PreferenceConverter;
@@ -49,11 +50,15 @@ import org.eclipse.jface.text.Document;
 import org.eclipse.jface.text.IDocument;
 import org.eclipse.jface.text.source.SourceViewer;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.events.ModifyEvent;
 import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.RGB;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
@@ -91,70 +96,40 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
   public final OverlayPreferenceStore.OverlayKey[] fKeys;
 
   private final String[][] fSyntaxColorListModel = new String[][] {
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.multiLineComment"),
-      // PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.singleLineComment"),
-      // PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR }, //$NON-NLS-1$
-      //               { PreferencesMessages.getString("JavaEditorPreferencePage.keywords"),
-      // PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR }, //$NON-NLS-1$
-      //               { PreferencesMessages.getString("JavaEditorPreferencePage.strings"),
-      // PreferenceConstants.EDITOR_STRING_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.methodNames"),
-      // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_COLOR }, //$NON-NLS-1$
-      //               { PreferencesMessages.getString("JavaEditorPreferencePage.operators"),
-      // PreferenceConstants.EDITOR_JAVA_OPERATOR_COLOR }, //$NON-NLS-1$
-      //               { PreferencesMessages.getString("JavaEditorPreferencePage.others"),
-      // PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.javaCommentTaskTags"),
-      // PreferenceConstants.EDITOR_TASK_TAG_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocKeywords"),
-      // PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocHtmlTags"),
-      // PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocLinks"),
-      // PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR }, //$NON-NLS-1$
-      //               {
-      // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocOthers"),
-      // PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR } //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.multiLineComment"),
+      { PreferencesMessages.getString("JavaEditorPreferencePage.multiLineComment"),
           PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.singleLineComment"),
+      { PreferencesMessages.getString("JavaEditorPreferencePage.singleLineComment"),
           PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.tags"), PreferenceConstants.EDITOR_PHP_TAG_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.tags"), PreferenceConstants.EDITOR_PHP_TAG_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.keywords"), PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR },
-      { PreferencesMessages.getString("PHPEditorPreferencePage.functionNames"), PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.keywords"), PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.functionNames"), PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.variables"), PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.variables"), PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.constants"), PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.constants"), PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.types"), PreferenceConstants.EDITOR_PHP_TYPE_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.types"), PreferenceConstants.EDITOR_PHP_TYPE_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.strings"), PreferenceConstants.EDITOR_STRING_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.strings"), PreferenceConstants.EDITOR_STRING_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.others"), PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR }, //$NON-NLS-1$
+      { 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 },
+          PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_COLOR }, 
+      { PreferencesMessages.getString("JavaEditorPreferencePage.braces"),
+          PreferenceConstants.EDITOR_PHP_BRACE_OPERATOR_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.phpDocKeywords"), PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.phpDocKeywords"), PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.phpDocHtmlTags"), PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.phpDocHtmlTags"), PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.phpDocLinks"), PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR },
+      { PreferencesMessages.getString("JavaEditorPreferencePage.phpDocLinks"), PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR },
       //$NON-NLS-1$
-      { PreferencesMessages.getString("PHPEditorPreferencePage.phpDocOthers"), PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR } //$NON-NLS-1$
+      { PreferencesMessages.getString("JavaEditorPreferencePage.phpDocOthers"), PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR } //$NON-NLS-1$
   };
 
   private final String[][] fAppearanceColorListModel = new String[][] {
@@ -269,7 +244,9 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
 
   //  private Button fAddJavaDocTagsButton;
 
-  private Button fEscapeStringsButton;
+  private Button fEscapeStringsButtonDQ;
+  
+  private Button fEscapeStringsButtonSQ;
 
   //   private Button fGuessMethodArgumentsButton;
   private SourceViewer fPreviewViewer;
@@ -298,9 +275,9 @@ 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;
@@ -386,6 +363,10 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
         PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_BOLD));
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
+        PreferenceConstants.EDITOR_PHP_BRACE_OPERATOR_COLOR));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+        PreferenceConstants.EDITOR_PHP_BRACE_OPERATOR_BOLD));
+    overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
         PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR));
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
         PreferenceConstants.EDITOR_JAVADOC_KEYWORD_BOLD));
@@ -483,14 +464,23 @@ 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_STRINGS));
+        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));
+        .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_SMART_HOME_END));
     overlayKeys.add(new OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
@@ -728,16 +718,17 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
         new PreferencesAdapter(createTemporaryCorePreferenceStore()), generalTextStore });
 
     fPreviewViewer = new JavaSourceViewer(parent, null, null, false, SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER, store);
-
-    fPreviewViewer.configure(new PHPSourceViewerConfiguration(fJavaTextTools, null, IPHPPartitions.PHP_PARTITIONING));
-    //         Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT);
-    //         fPreviewViewer.getTextWidget().setFont(font);
-    fPreviewViewer.getTextWidget().setFont(JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
-    //         new JavaSourcePreviewerUpdater(fPreviewViewer, fJavaTextTools);
-    fPreviewViewer.setEditable(false);
+    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);
+    new JavaSourcePreviewerUpdater(fPreviewViewer, configuration, store);
+       fPreviewViewer.setEditable(false);
     String content = loadPreviewContentFromFile("ColorSettingPreviewCode.txt"); //$NON-NLS-1$
     IDocument document = new Document(content);
-    //    fJavaTextTools.setupJavaDocumentPartitioner(document, ".php", null); //IJavaPartitions.JAVA_PARTITIONING);
     fJavaTextTools.setupJavaDocumentPartitioner(document, IPHPPartitions.PHP_PARTITIONING);
     fPreviewViewer.setDocument(document);
     return fPreviewViewer.getControl();
@@ -1083,15 +1074,24 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     group.setLayout(layout);
     group.setText(PreferencesMessages.getString("JavaEditorPreferencePage.typing.description")); //$NON-NLS-1$
 
-    label = PreferencesMessages.getString("JavaEditorPreferencePage.wrapStrings");
-    //$NON-NLS-1$
-    Button button = addCheckBox(group, label, PreferenceConstants.EDITOR_WRAP_STRINGS, 1);
+    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);
 
-    label = PreferencesMessages.getString("JavaEditorPreferencePage.escapeStrings");
-    //$NON-NLS-1$
-    fEscapeStringsButton = addCheckBox(group, label, PreferenceConstants.EDITOR_ESCAPE_STRINGS, 1);
-    createDependency(button, fEscapeStringsButton);
+    label = PreferencesMessages.getString("JavaEditorPreferencePage.escapeStringsDQ");//$NON-NLS-1$
+    fEscapeStringsButtonDQ = addCheckBox(group, label, PreferenceConstants.EDITOR_ESCAPE_STRINGS_DQ, 1);
+    createDependency(button, fEscapeStringsButtonDQ);
 
+    label = PreferencesMessages.getString("JavaEditorPreferencePage.wrapStringsSQ");//$NON-NLS-1$
+    addCheckBox(group, label, PreferenceConstants.EDITOR_WRAP_STRINGS_SQ, 1);
+
+    label = PreferencesMessages.getString("JavaEditorPreferencePage.escapeStringsSQ");
+    //$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);
@@ -1116,11 +1116,16 @@ 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.closeJavaDocs");
+        //$NON-NLS-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.addJavaDocTags");
@@ -1194,124 +1199,124 @@ 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.
    * 
@@ -1368,10 +1373,10 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     //$NON-NLS-1$
     fJavaEditorHoverConfigurationBlock = new JavaEditorHoverConfigurationBlock(this, fOverlayStore);
     item.setControl(fJavaEditorHoverConfigurationBlock.createControl(folder));
-    //                 item= new TabItem(folder, SWT.NONE);
-    //                 item.setText(PreferencesMessages.getString("JavaEditorPreferencePage.navigationTab.title"));
+    item = new TabItem(folder, SWT.NONE);
+    item.setText(PreferencesMessages.getString("JavaEditorPreferencePage.navigationTab.title"));
     // //$NON-NLS-1$
-    //                 item.setControl(createNavigationPage(folder));
+    item.setControl(createNavigationPage(folder));
     item = new TabItem(folder, SWT.NONE);
     item.setText(PreferencesMessages.getString("JavaEditorPreferencePage.folding.title")); //$NON-NLS-1$
     item.setControl(fFoldingConfigurationBlock.createControl(folder));
@@ -1453,10 +1458,11 @@ 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);
-    fEscapeStringsButton.setEnabled(fOverlayStore.getBoolean(PreferenceConstants.EDITOR_WRAP_STRINGS));
+        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=
     // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES);
     //         fGuessMethodArgumentsButton.setEnabled(fillMethodArguments);
@@ -1465,7 +1471,7 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
     //         fCompletionInsertsRadioButton.setSelection(completionInserts);
     //         fCompletionOverwritesRadioButton.setSelection(! completionInserts);
     //         
-    //         fBrowserLikeLinksKeyModifierText.setEnabled(fBrowserLikeLinksCheckBox.getSelection());
+    fBrowserLikeLinksKeyModifierText.setEnabled(fBrowserLikeLinksCheckBox.getSelection());
     //         boolean markOccurrences=
     // fOverlayStore.getBoolean(PreferenceConstants.EDITOR_MARK_OCCURRENCES);
     //         fStickyOccurrencesButton.setEnabled(markOccurrences);
@@ -1503,8 +1509,8 @@ public class JavaEditorPreferencePage extends PreferencePage implements IWorkben
   public boolean performOk() {
     //         fJavaEditorHoverConfigurationBlock.performOk();
     fFoldingConfigurationBlock.performOk();
-    //         fOverlayStore.setValue(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK,
-    // computeStateMask(fBrowserLikeLinksKeyModifierText.getText()));
+    fOverlayStore.setValue(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK,
+    computeStateMask(fBrowserLikeLinksKeyModifierText.getText()));
     fOverlayStore.propagate();
     PHPeclipsePlugin.getDefault().savePluginPreferences();
     return true;