X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorPreferencePage.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorPreferencePage.java index 261ba23..61abec9 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorPreferencePage.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaEditorPreferencePage.java @@ -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;