1 /*******************************************************************************
2 * Copyright (c) 2000, 2003 IBM Corporation and others.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Common Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/cpl-v10.html
9 * IBM Corporation - initial API and implementation
10 *******************************************************************************/
11 package net.sourceforge.phpdt.internal.ui.preferences;
13 import java.io.BufferedReader;
14 import java.io.IOException;
15 import java.io.InputStreamReader;
16 import java.text.Collator;
17 import java.util.ArrayList;
18 import java.util.Comparator;
19 import java.util.HashMap;
20 import java.util.Iterator;
22 import java.util.SortedSet;
23 import java.util.StringTokenizer;
24 import java.util.TreeSet;
26 import net.sourceforge.phpdt.core.JavaCore;
27 import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
28 import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
29 import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
30 import net.sourceforge.phpdt.internal.ui.text.IPHPPartitions;
31 import net.sourceforge.phpdt.internal.ui.text.PreferencesAdapter;
32 import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout;
33 import net.sourceforge.phpdt.ui.PreferenceConstants;
34 import net.sourceforge.phpdt.ui.text.JavaTextTools;
35 import net.sourceforge.phpdt.ui.text.PHPSourceViewerConfiguration;
36 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
37 import net.sourceforge.phpeclipse.phpeditor.EditorUtility;
38 import net.sourceforge.phpeclipse.phpeditor.JavaSourceViewer;
39 import net.sourceforge.phpeclipse.preferences.ColorEditor;
41 import org.eclipse.core.runtime.IStatus;
42 import org.eclipse.core.runtime.Preferences;
43 import org.eclipse.jface.dialogs.Dialog;
44 import org.eclipse.jface.preference.IPreferenceStore;
45 import org.eclipse.jface.preference.PreferenceConverter;
46 import org.eclipse.jface.preference.PreferencePage;
47 import org.eclipse.jface.resource.JFaceResources;
48 import org.eclipse.jface.text.Document;
49 import org.eclipse.jface.text.IDocument;
50 import org.eclipse.jface.text.source.SourceViewer;
51 import org.eclipse.swt.SWT;
52 import org.eclipse.swt.events.ModifyEvent;
53 import org.eclipse.swt.events.ModifyListener;
54 import org.eclipse.swt.events.SelectionEvent;
55 import org.eclipse.swt.events.SelectionListener;
56 import org.eclipse.swt.graphics.Color;
57 import org.eclipse.swt.graphics.RGB;
58 import org.eclipse.swt.layout.GridData;
59 import org.eclipse.swt.layout.GridLayout;
60 import org.eclipse.swt.layout.RowLayout;
61 import org.eclipse.swt.widgets.Button;
62 import org.eclipse.swt.widgets.Combo;
63 import org.eclipse.swt.widgets.Composite;
64 import org.eclipse.swt.widgets.Control;
65 import org.eclipse.swt.widgets.Group;
66 import org.eclipse.swt.widgets.Label;
67 import org.eclipse.swt.widgets.List;
68 import org.eclipse.swt.widgets.TabFolder;
69 import org.eclipse.swt.widgets.TabItem;
70 import org.eclipse.swt.widgets.Text;
71 import org.eclipse.ui.IWorkbench;
72 import org.eclipse.ui.IWorkbenchPreferencePage;
73 import org.eclipse.ui.editors.text.EditorsUI;
74 import org.eclipse.ui.help.WorkbenchHelp;
75 import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
76 import org.eclipse.ui.texteditor.AnnotationPreference;
77 import org.eclipse.ui.texteditor.ChainedPreferenceStore;
78 import org.eclipse.ui.texteditor.MarkerAnnotationPreferences;
81 * The page for setting the editor options.
83 public class JavaEditorPreferencePage extends PreferencePage implements
84 IWorkbenchPreferencePage {
85 private static final String BOLD = PreferenceConstants.EDITOR_BOLD_SUFFIX;
87 private static final String COMPILER_TASK_TAGS = JavaCore.COMPILER_TASK_TAGS;
89 private static final String DELIMITER = PreferencesMessages
90 .getString("JavaEditorPreferencePage.navigation.delimiter"); //$NON-NLS-1$
92 /** The keys of the overlay store. */
93 public final OverlayPreferenceStore.OverlayKey[] fKeys;
95 private final String[][] fSyntaxColorListModel = new String[][] {
97 // PreferencesMessages.getString("JavaEditorPreferencePage.multiLineComment"),
98 // PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR }, //$NON-NLS-1$
100 // PreferencesMessages.getString("JavaEditorPreferencePage.singleLineComment"),
101 // PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR }, //$NON-NLS-1$
102 // { PreferencesMessages.getString("JavaEditorPreferencePage.keywords"),
103 // PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR }, //$NON-NLS-1$
104 // { PreferencesMessages.getString("JavaEditorPreferencePage.strings"),
105 // PreferenceConstants.EDITOR_STRING_COLOR }, //$NON-NLS-1$
107 // PreferencesMessages.getString("JavaEditorPreferencePage.methodNames"),
108 // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_COLOR }, //$NON-NLS-1$
109 // { PreferencesMessages.getString("JavaEditorPreferencePage.operators"),
110 // PreferenceConstants.EDITOR_JAVA_OPERATOR_COLOR }, //$NON-NLS-1$
111 // { PreferencesMessages.getString("JavaEditorPreferencePage.others"),
112 // PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR }, //$NON-NLS-1$
114 // PreferencesMessages.getString("JavaEditorPreferencePage.javaCommentTaskTags"),
115 // PreferenceConstants.EDITOR_TASK_TAG_COLOR }, //$NON-NLS-1$
117 // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocKeywords"),
118 // PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR }, //$NON-NLS-1$
120 // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocHtmlTags"),
121 // PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR }, //$NON-NLS-1$
123 // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocLinks"),
124 // PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR }, //$NON-NLS-1$
126 // PreferencesMessages.getString("JavaEditorPreferencePage.javaDocOthers"),
127 // PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR } //$NON-NLS-1$
130 .getString("PHPEditorPreferencePage.multiLineComment"),
131 PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR },
135 .getString("PHPEditorPreferencePage.singleLineComment"),
136 PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR },
138 { PreferencesMessages.getString("PHPEditorPreferencePage.tags"),
139 PreferenceConstants.EDITOR_PHP_TAG_COLOR },
141 { PreferencesMessages.getString("PHPEditorPreferencePage.keywords"),
142 PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR },
143 { PreferencesMessages.getString("PHPEditorPreferencePage.functionNames"),
144 PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR },
146 { PreferencesMessages.getString("PHPEditorPreferencePage.variables"),
147 PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR },
149 { PreferencesMessages.getString("PHPEditorPreferencePage.constants"),
150 PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR },
152 { PreferencesMessages.getString("PHPEditorPreferencePage.types"),
153 PreferenceConstants.EDITOR_PHP_TYPE_COLOR },
155 { PreferencesMessages.getString("PHPEditorPreferencePage.strings"),
156 PreferenceConstants.EDITOR_STRING_COLOR },
158 { PreferencesMessages.getString("PHPEditorPreferencePage.others"),
159 PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR }, //$NON-NLS-1$
160 { PreferencesMessages.getString("JavaEditorPreferencePage.operators"),
161 PreferenceConstants.EDITOR_PHP_OPERATOR_COLOR },
165 .getString("JavaEditorPreferencePage.returnKeyword"),
166 PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_COLOR },
170 .getString("PHPEditorPreferencePage.phpDocKeywords"),
171 PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR },
175 .getString("PHPEditorPreferencePage.phpDocHtmlTags"),
176 PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR },
178 { PreferencesMessages.getString("PHPEditorPreferencePage.phpDocLinks"),
179 PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR },
181 { PreferencesMessages.getString("PHPEditorPreferencePage.phpDocOthers"),
182 PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR } //$NON-NLS-1$
185 private final String[][] fAppearanceColorListModel = new String[][] {
188 .getString("JavaEditorPreferencePage.lineNumberForegroundColor"),
189 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR },
193 .getString("JavaEditorPreferencePage.matchingBracketsHighlightColor2"),
194 PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR },
198 .getString("JavaEditorPreferencePage.currentLineHighlighColor"),
199 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR },
203 .getString("JavaEditorPreferencePage.printMarginColor2"),
204 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR },
208 .getString("JavaEditorPreferencePage.findScopeColor2"),
209 PreferenceConstants.EDITOR_FIND_SCOPE_COLOR },
211 { PreferencesMessages.getString("JavaEditorPreferencePage.linkColor2"),
212 PreferenceConstants.EDITOR_LINK_COLOR }, //$NON-NLS-1$
215 // private final String[][] fAnnotationColorListModel;
217 // private final String[][] fAnnotationDecorationListModel = new String[][]{
219 // PreferencesMessages
220 // .getString("JavaEditorPreferencePage.AnnotationDecoration.NONE"),
221 // AnnotationPreference.STYLE_NONE},
224 // PreferencesMessages
225 // .getString("JavaEditorPreferencePage.AnnotationDecoration.SQUIGGLIES"),
226 // AnnotationPreference.STYLE_SQUIGGLIES},
229 // PreferencesMessages
230 // .getString("JavaEditorPreferencePage.AnnotationDecoration.UNDERLINE"),
231 // AnnotationPreference.STYLE_UNDERLINE},
234 // PreferencesMessages
235 // .getString("JavaEditorPreferencePage.AnnotationDecoration.BOX"),
236 // AnnotationPreference.STYLE_BOX},
239 // PreferencesMessages
240 // .getString("JavaEditorPreferencePage.AnnotationDecoration.IBEAM"),
241 // AnnotationPreference.STYLE_IBEAM} //$NON-NLS-1$
243 private OverlayPreferenceStore fOverlayStore;
245 private JavaTextTools fJavaTextTools;
247 private JavaEditorHoverConfigurationBlock fJavaEditorHoverConfigurationBlock;
249 private FoldingConfigurationBlock fFoldingConfigurationBlock;
251 private Map fColorButtons = new HashMap();
253 private Map fCheckBoxes = new HashMap();
255 private SelectionListener fCheckBoxListener = new SelectionListener() {
256 public void widgetDefaultSelected(SelectionEvent e) {
259 public void widgetSelected(SelectionEvent e) {
260 Button button = (Button) e.widget;
261 fOverlayStore.setValue((String) fCheckBoxes.get(button), button
266 private Map fTextFields = new HashMap();
268 private ModifyListener fTextFieldListener = new ModifyListener() {
269 public void modifyText(ModifyEvent e) {
270 Text text = (Text) e.widget;
271 fOverlayStore.setValue((String) fTextFields.get(text), text.getText());
275 private ArrayList fNumberFields = new ArrayList();
277 private ModifyListener fNumberFieldListener = new ModifyListener() {
278 public void modifyText(ModifyEvent e) {
279 numberFieldChanged((Text) e.widget);
283 private List fSyntaxColorList;
285 private List fAppearanceColorList;
287 // private List fContentAssistColorList;
288 private List fAnnotationList;
290 private ColorEditor fSyntaxForegroundColorEditor;
292 private ColorEditor fAppearanceColorEditor;
294 private ColorEditor fAnnotationForegroundColorEditor;
296 private ColorEditor fContentAssistColorEditor;
298 private ColorEditor fBackgroundColorEditor;
300 private Button fBackgroundDefaultRadioButton;
302 private Button fBackgroundCustomRadioButton;
304 private Button fBackgroundColorButton;
306 private Button fBoldCheckBox;
308 // private Button fAddJavaDocTagsButton;
310 private Button fEscapeStringsButton;
312 // private Button fGuessMethodArgumentsButton;
313 private SourceViewer fPreviewViewer;
315 private Color fBackgroundColor;
317 private Control fAutoInsertDelayText;
319 private Control fAutoInsertJavaTriggerText;
321 private Control fAutoInsertJavaDocTriggerText;
323 private Label fAutoInsertDelayLabel;
325 private Label fAutoInsertJavaTriggerLabel;
327 private Label fAutoInsertJavaDocTriggerLabel;
329 private Button fShowInTextCheckBox;
331 private Combo fDecorationStyleCombo;
333 private Button fHighlightInTextCheckBox;
335 private Button fShowInOverviewRulerCheckBox;
337 private Button fShowInVerticalRulerCheckBox;
339 // private Text fBrowserLikeLinksKeyModifierText;
340 // private Button fBrowserLikeLinksCheckBox;
341 // private StatusInfo fBrowserLikeLinksKeyModifierStatus;
342 // private Button fCompletionInsertsRadioButton;
343 // private Button fCompletionOverwritesRadioButton;
344 // private Button fStickyOccurrencesButton;
346 * Creates a new preference page.
348 public JavaEditorPreferencePage() {
349 setDescription(PreferencesMessages
350 .getString("JavaEditorPreferencePage.description")); //$NON-NLS-1$
351 setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore());
352 MarkerAnnotationPreferences markerAnnotationPreferences = new MarkerAnnotationPreferences();
353 fKeys = createOverlayStoreKeys(markerAnnotationPreferences);
354 fOverlayStore = new OverlayPreferenceStore(getPreferenceStore(), fKeys);
355 // fAnnotationColorListModel =
356 // createAnnotationTypeListModel(markerAnnotationPreferences);
359 private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys(
360 MarkerAnnotationPreferences preferences) {
361 ArrayList overlayKeys = new ArrayList();
362 Iterator e = preferences.getAnnotationPreferences().iterator();
363 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
364 OverlayPreferenceStore.STRING,
365 PreferenceConstants.EDITOR_FOREGROUND_COLOR));
366 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
367 OverlayPreferenceStore.BOOLEAN,
368 PreferenceConstants.EDITOR_FOREGROUND_DEFAULT_COLOR));
369 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
370 OverlayPreferenceStore.STRING,
371 PreferenceConstants.EDITOR_BACKGROUND_COLOR));
372 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
373 OverlayPreferenceStore.BOOLEAN,
374 PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR));
375 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
376 OverlayPreferenceStore.INT, PreferenceConstants.EDITOR_TAB_WIDTH));
377 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
378 OverlayPreferenceStore.STRING,
379 PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR));
380 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
381 OverlayPreferenceStore.BOOLEAN,
382 PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_BOLD));
383 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
384 OverlayPreferenceStore.STRING,
385 PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR));
386 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
387 OverlayPreferenceStore.BOOLEAN,
388 PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD));
389 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
390 OverlayPreferenceStore.STRING,
391 PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR));
392 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
393 OverlayPreferenceStore.BOOLEAN,
394 PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD));
397 .add(new OverlayPreferenceStore.OverlayKey(
398 OverlayPreferenceStore.STRING,
399 PreferenceConstants.EDITOR_PHP_TAG_COLOR));
401 .add(new OverlayPreferenceStore.OverlayKey(
402 OverlayPreferenceStore.BOOLEAN,
403 PreferenceConstants.EDITOR_PHP_TAG_BOLD));
404 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
405 OverlayPreferenceStore.STRING,
406 PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR));
407 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
408 OverlayPreferenceStore.BOOLEAN,
409 PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_BOLD));
410 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
411 OverlayPreferenceStore.STRING,
412 PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR));
413 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
414 OverlayPreferenceStore.BOOLEAN,
415 PreferenceConstants.EDITOR_PHP_VARIABLE_BOLD));
416 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
417 OverlayPreferenceStore.STRING,
418 PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR));
419 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
420 OverlayPreferenceStore.BOOLEAN,
421 PreferenceConstants.EDITOR_PHP_CONSTANT_BOLD));
422 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
423 OverlayPreferenceStore.STRING,
424 PreferenceConstants.EDITOR_PHP_TYPE_COLOR));
425 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
426 OverlayPreferenceStore.BOOLEAN,
427 PreferenceConstants.EDITOR_PHP_TYPE_BOLD));
430 .add(new OverlayPreferenceStore.OverlayKey(
431 OverlayPreferenceStore.STRING,
432 PreferenceConstants.EDITOR_STRING_COLOR));
434 .add(new OverlayPreferenceStore.OverlayKey(
435 OverlayPreferenceStore.BOOLEAN,
436 PreferenceConstants.EDITOR_STRING_BOLD));
437 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
438 OverlayPreferenceStore.STRING,
439 PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR));
440 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
441 OverlayPreferenceStore.BOOLEAN,
442 PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD));
443 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
444 OverlayPreferenceStore.STRING,
445 PreferenceConstants.EDITOR_TASK_TAG_COLOR));
446 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
447 OverlayPreferenceStore.BOOLEAN,
448 PreferenceConstants.EDITOR_TASK_TAG_BOLD));
449 // overlayKeys.add(new
450 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING,
451 // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_COLOR));
452 // overlayKeys.add(new
453 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
454 // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_BOLD));
455 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
456 OverlayPreferenceStore.STRING,
457 PreferenceConstants.EDITOR_PHP_OPERATOR_COLOR));
458 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
459 OverlayPreferenceStore.BOOLEAN,
460 PreferenceConstants.EDITOR_PHP_OPERATOR_BOLD));
461 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
462 OverlayPreferenceStore.STRING,
463 PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_COLOR));
464 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
465 OverlayPreferenceStore.BOOLEAN,
466 PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_BOLD));
467 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
468 OverlayPreferenceStore.STRING,
469 PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR));
470 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
471 OverlayPreferenceStore.BOOLEAN,
472 PreferenceConstants.EDITOR_JAVADOC_KEYWORD_BOLD));
473 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
474 OverlayPreferenceStore.STRING,
475 PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR));
476 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
477 OverlayPreferenceStore.BOOLEAN,
478 PreferenceConstants.EDITOR_JAVADOC_TAG_BOLD));
479 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
480 OverlayPreferenceStore.STRING,
481 PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR));
482 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
483 OverlayPreferenceStore.BOOLEAN,
484 PreferenceConstants.EDITOR_JAVADOC_LINKS_BOLD));
485 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
486 OverlayPreferenceStore.STRING,
487 PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR));
488 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
489 OverlayPreferenceStore.BOOLEAN,
490 PreferenceConstants.EDITOR_JAVADOC_DEFAULT_BOLD));
491 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
492 OverlayPreferenceStore.STRING,
493 PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR));
494 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
495 OverlayPreferenceStore.BOOLEAN,
496 PreferenceConstants.EDITOR_MATCHING_BRACKETS));
498 .add(new OverlayPreferenceStore.OverlayKey(
499 OverlayPreferenceStore.STRING,
500 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR));
501 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
502 OverlayPreferenceStore.BOOLEAN,
503 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE));
505 .add(new OverlayPreferenceStore.OverlayKey(
506 OverlayPreferenceStore.STRING,
507 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR));
509 .add(new OverlayPreferenceStore.OverlayKey(
510 OverlayPreferenceStore.INT,
511 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN));
512 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
513 OverlayPreferenceStore.BOOLEAN,
514 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN));
515 // overlayKeys.add(new
516 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
517 // PreferenceConstants.EDITOR_MARK_OCCURRENCES));
518 // overlayKeys.add(new
519 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
520 // PreferenceConstants.EDITOR_STICKY_OCCURRENCES));
521 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
522 OverlayPreferenceStore.STRING,
523 PreferenceConstants.EDITOR_FIND_SCOPE_COLOR));
524 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
525 OverlayPreferenceStore.STRING, PreferenceConstants.EDITOR_LINK_COLOR));
526 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
527 OverlayPreferenceStore.BOOLEAN,
528 PreferenceConstants.EDITOR_CORRECTION_INDICATION));
529 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
530 OverlayPreferenceStore.BOOLEAN,
531 PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS));
532 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
533 OverlayPreferenceStore.BOOLEAN,
534 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER));
536 .add(new OverlayPreferenceStore.OverlayKey(
537 OverlayPreferenceStore.STRING,
538 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER_COLOR));
540 .add(new OverlayPreferenceStore.OverlayKey(
541 OverlayPreferenceStore.BOOLEAN,
542 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER));
543 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
544 OverlayPreferenceStore.BOOLEAN,
545 PreferenceConstants.EDITOR_SPACES_FOR_TABS));
546 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
547 OverlayPreferenceStore.BOOLEAN,
548 PreferenceConstants.CODEASSIST_AUTOACTIVATION));
549 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
550 OverlayPreferenceStore.INT,
551 PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY));
552 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
553 OverlayPreferenceStore.BOOLEAN,
554 PreferenceConstants.CODEASSIST_AUTOINSERT));
555 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
556 OverlayPreferenceStore.STRING,
557 PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND));
558 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
559 OverlayPreferenceStore.STRING,
560 PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND));
561 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
562 OverlayPreferenceStore.STRING,
563 PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND));
564 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
565 OverlayPreferenceStore.STRING,
566 PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND));
567 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
568 OverlayPreferenceStore.STRING,
569 PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND));
570 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
571 OverlayPreferenceStore.STRING,
572 PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND));
573 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
574 OverlayPreferenceStore.STRING,
575 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA));
576 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
577 OverlayPreferenceStore.STRING,
578 PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC));
579 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
580 OverlayPreferenceStore.BOOLEAN,
581 PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS));
582 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
583 OverlayPreferenceStore.BOOLEAN,
584 PreferenceConstants.CODEASSIST_ORDER_PROPOSALS));
585 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
586 OverlayPreferenceStore.BOOLEAN,
587 PreferenceConstants.CODEASSIST_CASE_SENSITIVITY));
588 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
589 OverlayPreferenceStore.BOOLEAN,
590 PreferenceConstants.CODEASSIST_ADDIMPORT));
591 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
592 OverlayPreferenceStore.BOOLEAN,
593 PreferenceConstants.CODEASSIST_INSERT_COMPLETION));
594 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
595 OverlayPreferenceStore.BOOLEAN,
596 PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES));
597 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
598 OverlayPreferenceStore.BOOLEAN,
599 PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS));
601 .add(new OverlayPreferenceStore.OverlayKey(
602 OverlayPreferenceStore.BOOLEAN,
603 PreferenceConstants.EDITOR_SMART_PASTE));
604 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
605 OverlayPreferenceStore.BOOLEAN,
606 PreferenceConstants.EDITOR_CLOSE_STRINGS_PHP));
607 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
608 OverlayPreferenceStore.BOOLEAN,
609 PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP));
611 // .add(new OverlayPreferenceStore.OverlayKey(
612 // OverlayPreferenceStore.BOOLEAN,
613 // PreferenceConstants.EDITOR_CLOSE_BRACES));
614 // overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
615 // OverlayPreferenceStore.BOOLEAN,
616 // PreferenceConstants.EDITOR_CLOSE_JAVADOCS));
618 .add(new OverlayPreferenceStore.OverlayKey(
619 OverlayPreferenceStore.BOOLEAN,
620 PreferenceConstants.EDITOR_WRAP_STRINGS));
621 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
622 OverlayPreferenceStore.BOOLEAN,
623 PreferenceConstants.EDITOR_ESCAPE_STRINGS));
624 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
625 OverlayPreferenceStore.BOOLEAN,
626 PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS));
627 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
628 OverlayPreferenceStore.BOOLEAN,
629 PreferenceConstants.EDITOR_SMART_HOME_END));
630 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
631 OverlayPreferenceStore.BOOLEAN,
632 PreferenceConstants.EDITOR_SUB_WORD_NAVIGATION));
633 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
634 OverlayPreferenceStore.BOOLEAN,
635 PreferenceConstants.EDITOR_DISABLE_OVERWRITE_MODE));
636 // overlayKeys.add(new
637 // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
638 // PreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE));
639 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
640 OverlayPreferenceStore.STRING,
641 PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIERS));
642 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
643 OverlayPreferenceStore.STRING,
644 PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIER_MASKS));
645 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
646 OverlayPreferenceStore.BOOLEAN,
647 PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS));
648 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
649 OverlayPreferenceStore.STRING,
650 PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER));
651 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
652 OverlayPreferenceStore.STRING,
653 PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK));
654 while (e.hasNext()) {
655 AnnotationPreference info = (AnnotationPreference) e.next();
656 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
657 OverlayPreferenceStore.STRING, info.getColorPreferenceKey()));
658 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
659 OverlayPreferenceStore.BOOLEAN, info.getTextPreferenceKey()));
660 if (info.getHighlightPreferenceKey() != null)
661 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
662 OverlayPreferenceStore.BOOLEAN, info.getHighlightPreferenceKey()));
664 .add(new OverlayPreferenceStore.OverlayKey(
665 OverlayPreferenceStore.BOOLEAN, info
666 .getOverviewRulerPreferenceKey()));
667 if (info.getVerticalRulerPreferenceKey() != null)
668 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
669 OverlayPreferenceStore.BOOLEAN, info
670 .getVerticalRulerPreferenceKey()));
671 if (info.getTextStylePreferenceKey() != null)
672 overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
673 OverlayPreferenceStore.STRING, info.getTextStylePreferenceKey()));
675 OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys
677 overlayKeys.toArray(keys);
680 * @see IWorkbenchPreferencePage#init()
683 public void init(IWorkbench workbench) {
687 * @see PreferencePage#createControl(Composite)
689 public void createControl(Composite parent) {
690 super.createControl(parent);
691 WorkbenchHelp.setHelp(getControl(),
692 IJavaHelpContextIds.JAVA_EDITOR_PREFERENCE_PAGE);
695 private void handleSyntaxColorListSelection() {
696 int i = fSyntaxColorList.getSelectionIndex();
697 String key = fSyntaxColorListModel[i][1];
698 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
699 fSyntaxForegroundColorEditor.setColorValue(rgb);
700 fBoldCheckBox.setSelection(fOverlayStore.getBoolean(key + BOLD));
703 private void handleAppearanceColorListSelection() {
704 int i = fAppearanceColorList.getSelectionIndex();
705 String key = fAppearanceColorListModel[i][1];
706 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
707 fAppearanceColorEditor.setColorValue(rgb);
710 // private void handleAnnotationListSelection() {
711 // int i = fAnnotationList.getSelectionIndex();
712 // String key = fAnnotationColorListModel[i][1];
713 // RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
714 // fAnnotationForegroundColorEditor.setColorValue(rgb);
715 // key = fAnnotationColorListModel[i][2];
716 // boolean showInText = fOverlayStore.getBoolean(key);
717 // fShowInTextCheckBox.setSelection(showInText);
718 // key = fAnnotationColorListModel[i][6];
719 // if (key != null) {
720 // fDecorationStyleCombo.setEnabled(showInText);
721 // for (int j = 0; j < fAnnotationDecorationListModel.length; j++) {
722 // String value = fOverlayStore.getString(key);
723 // if (fAnnotationDecorationListModel[j][1].equals(value)) {
724 // fDecorationStyleCombo.setText(fAnnotationDecorationListModel[j][0]);
729 // fDecorationStyleCombo.setEnabled(false);
730 // fDecorationStyleCombo.setText(fAnnotationDecorationListModel[1][0]); // set
743 // key = fAnnotationColorListModel[i][3];
744 // fShowInOverviewRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
745 // key = fAnnotationColorListModel[i][4];
746 // if (key != null) {
747 // fHighlightInTextCheckBox.setSelection(fOverlayStore.getBoolean(key));
748 // fHighlightInTextCheckBox.setEnabled(true);
750 // fHighlightInTextCheckBox.setEnabled(false);
751 // key = fAnnotationColorListModel[i][5];
752 // if (key != null) {
753 // fShowInVerticalRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
754 // fShowInVerticalRulerCheckBox.setEnabled(true);
756 // fShowInVerticalRulerCheckBox.setSelection(true);
757 // fShowInVerticalRulerCheckBox.setEnabled(false);
760 private Control createSyntaxPage(Composite parent) {
761 Composite colorComposite = new Composite(parent, SWT.NULL);
762 colorComposite.setLayout(new GridLayout());
763 Group backgroundComposite = new Group(colorComposite, SWT.SHADOW_ETCHED_IN);
764 backgroundComposite.setLayout(new RowLayout());
765 backgroundComposite.setText(PreferencesMessages
766 .getString("JavaEditorPreferencePage.backgroundColor"));//$NON-NLS-1$
767 SelectionListener backgroundSelectionListener = new SelectionListener() {
768 public void widgetSelected(SelectionEvent e) {
769 boolean custom = fBackgroundCustomRadioButton.getSelection();
770 fBackgroundColorButton.setEnabled(custom);
771 fOverlayStore.setValue(
772 PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR, !custom);
775 public void widgetDefaultSelected(SelectionEvent e) {
778 fBackgroundDefaultRadioButton = new Button(backgroundComposite, SWT.RADIO
780 fBackgroundDefaultRadioButton.setText(PreferencesMessages
781 .getString("JavaEditorPreferencePage.systemDefault")); //$NON-NLS-1$
782 fBackgroundDefaultRadioButton
783 .addSelectionListener(backgroundSelectionListener);
784 fBackgroundCustomRadioButton = new Button(backgroundComposite, SWT.RADIO
786 fBackgroundCustomRadioButton.setText(PreferencesMessages
787 .getString("JavaEditorPreferencePage.custom")); //$NON-NLS-1$
788 fBackgroundCustomRadioButton
789 .addSelectionListener(backgroundSelectionListener);
790 fBackgroundColorEditor = new ColorEditor(backgroundComposite);
791 fBackgroundColorButton = fBackgroundColorEditor.getButton();
792 Label label = new Label(colorComposite, SWT.LEFT);
793 label.setText(PreferencesMessages
794 .getString("JavaEditorPreferencePage.foreground")); //$NON-NLS-1$
795 label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
796 Composite editorComposite = new Composite(colorComposite, SWT.NONE);
797 GridLayout layout = new GridLayout();
798 layout.numColumns = 2;
799 layout.marginHeight = 0;
800 layout.marginWidth = 0;
801 editorComposite.setLayout(layout);
802 GridData gd = new GridData(GridData.FILL_BOTH);
803 editorComposite.setLayoutData(gd);
804 fSyntaxColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
806 gd = new GridData(GridData.FILL_BOTH);
807 gd.heightHint = convertHeightInCharsToPixels(5);
808 fSyntaxColorList.setLayoutData(gd);
809 Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
810 layout = new GridLayout();
811 layout.marginHeight = 0;
812 layout.marginWidth = 0;
813 layout.numColumns = 2;
814 stylesComposite.setLayout(layout);
815 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
816 label = new Label(stylesComposite, SWT.LEFT);
817 label.setText(PreferencesMessages
818 .getString("JavaEditorPreferencePage.color")); //$NON-NLS-1$
820 gd.horizontalAlignment = GridData.BEGINNING;
821 label.setLayoutData(gd);
822 fSyntaxForegroundColorEditor = new ColorEditor(stylesComposite);
823 Button foregroundColorButton = fSyntaxForegroundColorEditor.getButton();
824 gd = new GridData(GridData.FILL_HORIZONTAL);
825 gd.horizontalAlignment = GridData.BEGINNING;
826 foregroundColorButton.setLayoutData(gd);
827 fBoldCheckBox = new Button(stylesComposite, SWT.CHECK);
828 fBoldCheckBox.setText(PreferencesMessages
829 .getString("JavaEditorPreferencePage.bold")); //$NON-NLS-1$
830 gd = new GridData(GridData.FILL_HORIZONTAL);
831 gd.horizontalAlignment = GridData.BEGINNING;
832 gd.horizontalSpan = 2;
833 fBoldCheckBox.setLayoutData(gd);
834 label = new Label(colorComposite, SWT.LEFT);
835 label.setText(PreferencesMessages
836 .getString("JavaEditorPreferencePage.preview")); //$NON-NLS-1$
837 label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
838 Control previewer = createPreviewer(colorComposite);
839 gd = new GridData(GridData.FILL_BOTH);
840 gd.widthHint = convertWidthInCharsToPixels(20);
841 gd.heightHint = convertHeightInCharsToPixels(5);
842 previewer.setLayoutData(gd);
843 fSyntaxColorList.addSelectionListener(new SelectionListener() {
844 public void widgetDefaultSelected(SelectionEvent e) {
848 public void widgetSelected(SelectionEvent e) {
849 handleSyntaxColorListSelection();
852 foregroundColorButton.addSelectionListener(new SelectionListener() {
853 public void widgetDefaultSelected(SelectionEvent e) {
857 public void widgetSelected(SelectionEvent e) {
858 int i = fSyntaxColorList.getSelectionIndex();
859 String key = fSyntaxColorListModel[i][1];
860 PreferenceConverter.setValue(fOverlayStore, key,
861 fSyntaxForegroundColorEditor.getColorValue());
864 fBackgroundColorButton.addSelectionListener(new SelectionListener() {
865 public void widgetDefaultSelected(SelectionEvent e) {
869 public void widgetSelected(SelectionEvent e) {
870 PreferenceConverter.setValue(fOverlayStore,
871 PreferenceConstants.EDITOR_BACKGROUND_COLOR, fBackgroundColorEditor
875 fBoldCheckBox.addSelectionListener(new SelectionListener() {
876 public void widgetDefaultSelected(SelectionEvent e) {
880 public void widgetSelected(SelectionEvent e) {
881 int i = fSyntaxColorList.getSelectionIndex();
882 String key = fSyntaxColorListModel[i][1];
883 fOverlayStore.setValue(key + BOLD, fBoldCheckBox.getSelection());
886 return colorComposite;
889 private Control createPreviewer(Composite parent) {
890 Preferences coreStore = createTemporaryCorePreferenceStore();
891 fJavaTextTools = new JavaTextTools(fOverlayStore, coreStore, false);
892 IPreferenceStore generalTextStore = EditorsUI.getPreferenceStore();
893 IPreferenceStore store = new ChainedPreferenceStore(new IPreferenceStore[] {
895 new PreferencesAdapter(createTemporaryCorePreferenceStore()),
898 fPreviewViewer = new JavaSourceViewer(parent, null, null, false,
899 SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER, store);
901 fPreviewViewer.configure(new PHPSourceViewerConfiguration(fJavaTextTools,
902 null, IPHPPartitions.PHP_PARTITIONING));
903 // Font font= JFaceResources.getFont(PreferenceConstants.EDITOR_TEXT_FONT);
904 // fPreviewViewer.getTextWidget().setFont(font);
905 fPreviewViewer.getTextWidget().setFont(
906 JFaceResources.getFontRegistry().get(JFaceResources.TEXT_FONT));
907 // new JavaSourcePreviewerUpdater(fPreviewViewer, fJavaTextTools);
908 fPreviewViewer.setEditable(false);
909 String content = loadPreviewContentFromFile("ColorSettingPreviewCode.txt"); //$NON-NLS-1$
910 IDocument document = new Document(content);
911 // fJavaTextTools.setupJavaDocumentPartitioner(document, ".php", null); //IJavaPartitions.JAVA_PARTITIONING);
912 fJavaTextTools.setupJavaDocumentPartitioner(document, IPHPPartitions.PHP_PARTITIONING);
913 fPreviewViewer.setDocument(document);
914 return fPreviewViewer.getControl();
917 private Preferences createTemporaryCorePreferenceStore() {
918 Preferences result = new Preferences();
919 result.setValue(COMPILER_TASK_TAGS, "TASK"); //$NON-NLS-1$
923 private Control createAppearancePage(Composite parent) {
924 Composite appearanceComposite = new Composite(parent, SWT.NONE);
925 GridLayout layout = new GridLayout();
926 layout.numColumns = 2;
927 appearanceComposite.setLayout(layout);
928 String label = PreferencesMessages
929 .getString("JavaEditorPreferencePage.displayedTabWidth"); //$NON-NLS-1$
930 addTextField(appearanceComposite, label,
931 PreferenceConstants.EDITOR_TAB_WIDTH, 3, 0, true);
932 label = PreferencesMessages
933 .getString("JavaEditorPreferencePage.printMarginColumn"); //$NON-NLS-1$
937 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN,
939 label = PreferencesMessages
940 .getString("JavaEditorPreferencePage.showOverviewRuler"); //$NON-NLS-1$
941 addCheckBox(appearanceComposite, label,
942 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER, 0);
943 label = PreferencesMessages
944 .getString("JavaEditorPreferencePage.showLineNumbers"); //$NON-NLS-1$
948 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_LINE_NUMBER_RULER,
950 label = PreferencesMessages
951 .getString("JavaEditorPreferencePage.highlightMatchingBrackets"); //$NON-NLS-1$
952 addCheckBox(appearanceComposite, label,
953 PreferenceConstants.EDITOR_MATCHING_BRACKETS, 0);
954 label = PreferencesMessages
955 .getString("JavaEditorPreferencePage.highlightCurrentLine"); //$NON-NLS-1$
956 addCheckBox(appearanceComposite, label,
957 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE, 0);
958 label = PreferencesMessages
959 .getString("JavaEditorPreferencePage.showPrintMargin"); //$NON-NLS-1$
960 addCheckBox(appearanceComposite, label,
961 AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN, 0);
962 label = PreferencesMessages
963 .getString("JavaEditorPreferencePage.markOccurrences"); //$NON-NLS-1$
964 // Button master= addCheckBox(appearanceComposite, label,
965 // PreferenceConstants.EDITOR_MARK_OCCURRENCES, 0); //$NON-NLS-1$
966 label = PreferencesMessages
967 .getString("JavaEditorPreferencePage.stickyOccurrences"); //$NON-NLS-1$
968 // fStickyOccurrencesButton= addCheckBox(appearanceComposite, label,
969 // PreferenceConstants.EDITOR_STICKY_OCCURRENCES, 0); //$NON-NLS-1$
970 // createDependency(master, fStickyOccurrencesButton);
971 Label l = new Label(appearanceComposite, SWT.LEFT);
972 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
973 gd.horizontalSpan = 2;
974 gd.heightHint = convertHeightInCharsToPixels(1) / 2;
976 l = new Label(appearanceComposite, SWT.LEFT);
977 l.setText(PreferencesMessages
978 .getString("JavaEditorPreferencePage.appearanceOptions")); //$NON-NLS-1$
979 gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
980 gd.horizontalSpan = 2;
982 Composite editorComposite = new Composite(appearanceComposite, SWT.NONE);
983 layout = new GridLayout();
984 layout.numColumns = 2;
985 layout.marginHeight = 0;
986 layout.marginWidth = 0;
987 editorComposite.setLayout(layout);
988 gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
989 gd.horizontalSpan = 2;
990 editorComposite.setLayoutData(gd);
991 fAppearanceColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
993 gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
994 | GridData.FILL_HORIZONTAL);
995 gd.heightHint = convertHeightInCharsToPixels(8);
996 fAppearanceColorList.setLayoutData(gd);
997 Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
998 layout = new GridLayout();
999 layout.marginHeight = 0;
1000 layout.marginWidth = 0;
1001 layout.numColumns = 2;
1002 stylesComposite.setLayout(layout);
1003 stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
1004 l = new Label(stylesComposite, SWT.LEFT);
1005 l.setText(PreferencesMessages.getString("JavaEditorPreferencePage.color")); //$NON-NLS-1$
1006 gd = new GridData();
1007 gd.horizontalAlignment = GridData.BEGINNING;
1008 l.setLayoutData(gd);
1009 fAppearanceColorEditor = new ColorEditor(stylesComposite);
1010 Button foregroundColorButton = fAppearanceColorEditor.getButton();
1011 gd = new GridData(GridData.FILL_HORIZONTAL);
1012 gd.horizontalAlignment = GridData.BEGINNING;
1013 foregroundColorButton.setLayoutData(gd);
1014 fAppearanceColorList.addSelectionListener(new SelectionListener() {
1015 public void widgetDefaultSelected(SelectionEvent e) {
1019 public void widgetSelected(SelectionEvent e) {
1020 handleAppearanceColorListSelection();
1023 foregroundColorButton.addSelectionListener(new SelectionListener() {
1024 public void widgetDefaultSelected(SelectionEvent e) {
1028 public void widgetSelected(SelectionEvent e) {
1029 int i = fAppearanceColorList.getSelectionIndex();
1030 String key = fAppearanceColorListModel[i][1];
1031 PreferenceConverter.setValue(fOverlayStore, key, fAppearanceColorEditor
1035 return appearanceComposite;
1038 // private Control createAnnotationsPage(Composite parent) {
1039 // Composite composite = new Composite(parent, SWT.NULL);
1040 // GridLayout layout = new GridLayout();
1041 // layout.numColumns = 2;
1042 // composite.setLayout(layout);
1043 // String text = PreferencesMessages
1044 // .getString("JavaEditorPreferencePage.analyseAnnotationsWhileTyping");
1046 // addCheckBox(composite, text,
1047 // PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS, 0);
1048 // text = PreferencesMessages
1049 // .getString("JavaEditorPreferencePage.showQuickFixables"); //$NON-NLS-1$
1050 // addCheckBox(composite, text,
1051 // PreferenceConstants.EDITOR_CORRECTION_INDICATION, 0);
1052 // addFiller(composite);
1053 // Label label = new Label(composite, SWT.LEFT);
1054 // label.setText(PreferencesMessages
1055 // .getString("JavaEditorPreferencePage.annotationPresentationOptions"));
1057 // GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1058 // gd.horizontalSpan = 2;
1059 // label.setLayoutData(gd);
1060 // Composite editorComposite = new Composite(composite, SWT.NONE);
1061 // layout = new GridLayout();
1062 // layout.numColumns = 2;
1063 // layout.marginHeight = 0;
1064 // layout.marginWidth = 0;
1065 // editorComposite.setLayout(layout);
1066 // gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.FILL_VERTICAL);
1067 // gd.horizontalSpan = 2;
1068 // editorComposite.setLayoutData(gd);
1069 // fAnnotationList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
1071 // gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
1072 // | GridData.FILL_HORIZONTAL);
1073 // gd.heightHint = convertHeightInCharsToPixels(10);
1074 // fAnnotationList.setLayoutData(gd);
1075 // Composite optionsComposite = new Composite(editorComposite, SWT.NONE);
1076 // layout = new GridLayout();
1077 // layout.marginHeight = 0;
1078 // layout.marginWidth = 0;
1079 // layout.numColumns = 2;
1080 // optionsComposite.setLayout(layout);
1081 // optionsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
1082 // fShowInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
1083 // fShowInTextCheckBox.setText(PreferencesMessages
1084 // .getString("JavaEditorPreferencePage.annotations.showInText"));
1086 // gd = new GridData(GridData.FILL_HORIZONTAL);
1087 // gd.horizontalAlignment = GridData.BEGINNING;
1088 // gd.horizontalSpan = 2;
1089 // fShowInTextCheckBox.setLayoutData(gd);
1090 // fDecorationStyleCombo = new Combo(optionsComposite, SWT.READ_ONLY);
1091 // for (int i = 0; i < fAnnotationDecorationListModel.length; i++)
1092 // fDecorationStyleCombo.add(fAnnotationDecorationListModel[i][0]);
1093 // gd = new GridData(GridData.FILL_HORIZONTAL);
1094 // gd.horizontalAlignment = GridData.BEGINNING;
1095 // gd.horizontalSpan = 2;
1096 // gd.horizontalIndent = 20;
1097 // fDecorationStyleCombo.setLayoutData(gd);
1098 // fHighlightInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
1099 // fHighlightInTextCheckBox.setText(PreferencesMessages
1100 // .getString("TextEditorPreferencePage.annotations.highlightInText"));
1102 // gd = new GridData(GridData.FILL_HORIZONTAL);
1103 // gd.horizontalAlignment = GridData.BEGINNING;
1104 // gd.horizontalSpan = 2;
1105 // fHighlightInTextCheckBox.setLayoutData(gd);
1106 // fShowInOverviewRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
1107 // fShowInOverviewRulerCheckBox.setText(PreferencesMessages
1108 // .getString("JavaEditorPreferencePage.annotations.showInOverviewRuler"));
1110 // gd = new GridData(GridData.FILL_HORIZONTAL);
1111 // gd.horizontalAlignment = GridData.BEGINNING;
1112 // gd.horizontalSpan = 2;
1113 // fShowInOverviewRulerCheckBox.setLayoutData(gd);
1114 // fShowInVerticalRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
1115 // fShowInVerticalRulerCheckBox.setText(PreferencesMessages
1116 // .getString("JavaEditorPreferencePage.annotations.showInVerticalRuler"));
1118 // gd = new GridData(GridData.FILL_HORIZONTAL);
1119 // gd.horizontalAlignment = GridData.BEGINNING;
1120 // gd.horizontalSpan = 2;
1121 // fShowInVerticalRulerCheckBox.setLayoutData(gd);
1122 // label = new Label(optionsComposite, SWT.LEFT);
1123 // label.setText(PreferencesMessages
1124 // .getString("JavaEditorPreferencePage.annotations.color")); //$NON-NLS-1$
1125 // gd = new GridData();
1126 // gd.horizontalAlignment = GridData.BEGINNING;
1127 // label.setLayoutData(gd);
1128 // fAnnotationForegroundColorEditor = new ColorEditor(optionsComposite);
1129 // Button foregroundColorButton =
1130 // fAnnotationForegroundColorEditor.getButton();
1131 // gd = new GridData(GridData.FILL_HORIZONTAL);
1132 // gd.horizontalAlignment = GridData.BEGINNING;
1133 // foregroundColorButton.setLayoutData(gd);
1134 // fAnnotationList.addSelectionListener(new SelectionListener() {
1135 // public void widgetDefaultSelected(SelectionEvent e) {
1138 // public void widgetSelected(SelectionEvent e) {
1139 // handleAnnotationListSelection();
1142 // fShowInTextCheckBox.addSelectionListener(new SelectionListener() {
1143 // public void widgetDefaultSelected(SelectionEvent e) {
1146 // public void widgetSelected(SelectionEvent e) {
1147 // int i = fAnnotationList.getSelectionIndex();
1148 // String key = fAnnotationColorListModel[i][2];
1149 // fOverlayStore.setValue(key, fShowInTextCheckBox.getSelection());
1150 // String decorationKey = fAnnotationColorListModel[i][6];
1151 // fDecorationStyleCombo.setEnabled(decorationKey != null
1152 // && fShowInTextCheckBox.getSelection());
1155 // fHighlightInTextCheckBox.addSelectionListener(new SelectionListener() {
1156 // public void widgetDefaultSelected(SelectionEvent e) {
1159 // public void widgetSelected(SelectionEvent e) {
1160 // int i = fAnnotationList.getSelectionIndex();
1161 // String key = fAnnotationColorListModel[i][4];
1162 // fOverlayStore.setValue(key, fHighlightInTextCheckBox.getSelection());
1165 // fShowInOverviewRulerCheckBox.addSelectionListener(new SelectionListener() {
1166 // public void widgetDefaultSelected(SelectionEvent e) {
1169 // public void widgetSelected(SelectionEvent e) {
1170 // int i = fAnnotationList.getSelectionIndex();
1171 // String key = fAnnotationColorListModel[i][3];
1173 // .setValue(key, fShowInOverviewRulerCheckBox.getSelection());
1176 // fShowInVerticalRulerCheckBox.addSelectionListener(new SelectionListener() {
1177 // public void widgetDefaultSelected(SelectionEvent e) {
1180 // public void widgetSelected(SelectionEvent e) {
1181 // int i = fAnnotationList.getSelectionIndex();
1182 // String key = fAnnotationColorListModel[i][5];
1184 // .setValue(key, fShowInVerticalRulerCheckBox.getSelection());
1187 // foregroundColorButton.addSelectionListener(new SelectionListener() {
1188 // public void widgetDefaultSelected(SelectionEvent e) {
1191 // public void widgetSelected(SelectionEvent e) {
1192 // int i = fAnnotationList.getSelectionIndex();
1193 // String key = fAnnotationColorListModel[i][1];
1194 // PreferenceConverter.setValue(fOverlayStore, key,
1195 // fAnnotationForegroundColorEditor.getColorValue());
1198 // fDecorationStyleCombo.addSelectionListener(new SelectionListener() {
1202 // public void widgetDefaultSelected(SelectionEvent e) {
1208 // public void widgetSelected(SelectionEvent e) {
1209 // int i = fAnnotationList.getSelectionIndex();
1210 // String key = fAnnotationColorListModel[i][6];
1211 // if (key != null) {
1212 // for (int j = 0; j < fAnnotationDecorationListModel.length; j++) {
1213 // if (fAnnotationDecorationListModel[j][0]
1214 // .equals(fDecorationStyleCombo.getText())) {
1215 // fOverlayStore.setValue(key, fAnnotationDecorationListModel[j][1]);
1222 // return composite;
1224 private String[][] createAnnotationTypeListModel(
1225 MarkerAnnotationPreferences preferences) {
1226 ArrayList listModelItems = new ArrayList();
1227 SortedSet sortedPreferences = new TreeSet(new Comparator() {
1229 * @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
1231 public int compare(Object o1, Object o2) {
1232 if (!(o2 instanceof AnnotationPreference))
1234 if (!(o1 instanceof AnnotationPreference))
1236 AnnotationPreference a1 = (AnnotationPreference) o1;
1237 AnnotationPreference a2 = (AnnotationPreference) o2;
1238 return Collator.getInstance().compare(a1.getPreferenceLabel(),
1239 a2.getPreferenceLabel());
1242 sortedPreferences.addAll(preferences.getAnnotationPreferences());
1243 Iterator e = sortedPreferences.iterator();
1244 while (e.hasNext()) {
1245 AnnotationPreference info = (AnnotationPreference) e.next();
1246 listModelItems.add(new String[] { info.getPreferenceLabel(),
1247 info.getColorPreferenceKey(), info.getTextPreferenceKey(),
1248 info.getOverviewRulerPreferenceKey(),
1249 info.getHighlightPreferenceKey(),
1250 info.getVerticalRulerPreferenceKey(),
1251 info.getTextStylePreferenceKey() });
1253 String[][] items = new String[listModelItems.size()][];
1254 listModelItems.toArray(items);
1258 private Control createTypingPage(Composite parent) {
1259 Composite composite = new Composite(parent, SWT.NONE);
1260 GridLayout layout = new GridLayout();
1261 layout.numColumns = 1;
1262 composite.setLayout(layout);
1264 // label = PreferencesMessages
1265 // .getString("JavaEditorPreferencePage.overwriteMode");
1267 // addCheckBox(composite, label,
1268 // PreferenceConstants.EDITOR_DISABLE_OVERWRITE_MODE, 1);
1269 // addFiller(composite);
1271 // label = PreferencesMessages
1272 // .getString("JavaEditorPreferencePage.smartHomeEnd");
1274 // addCheckBox(composite, label, PreferenceConstants.EDITOR_SMART_HOME_END, 1);
1276 // label = PreferencesMessages
1277 // .getString("JavaEditorPreferencePage.subWordNavigation");
1279 // addCheckBox(composite, label,
1280 // PreferenceConstants.EDITOR_SUB_WORD_NAVIGATION, 1);
1281 // addFiller(composite);
1282 Group group = new Group(composite, SWT.NONE);
1283 layout = new GridLayout();
1284 layout.numColumns = 2;
1285 group.setLayout(layout);
1286 group.setText(PreferencesMessages
1287 .getString("JavaEditorPreferencePage.typing.description")); //$NON-NLS-1$
1289 label = PreferencesMessages
1290 .getString("JavaEditorPreferencePage.wrapStrings");
1292 Button button = addCheckBox(group, label,
1293 PreferenceConstants.EDITOR_WRAP_STRINGS, 1);
1295 label = PreferencesMessages
1296 .getString("JavaEditorPreferencePage.escapeStrings");
1298 fEscapeStringsButton = addCheckBox(group, label,
1299 PreferenceConstants.EDITOR_ESCAPE_STRINGS, 1);
1300 createDependency(button, fEscapeStringsButton);
1302 label = PreferencesMessages
1303 .getString("JavaEditorPreferencePage.smartPaste");
1305 addCheckBox(group, label, PreferenceConstants.EDITOR_SMART_PASTE, 1);
1307 label = PreferencesMessages
1308 .getString("JavaEditorPreferencePage.insertSpaceForTabs");
1310 addCheckBox(group, label, PreferenceConstants.EDITOR_SPACES_FOR_TABS, 1);
1312 label = PreferencesMessages
1313 .getString("JavaEditorPreferencePage.closeStrings");
1315 addCheckBox(group, label, PreferenceConstants.EDITOR_CLOSE_STRINGS_PHP, 1);
1317 label = PreferencesMessages
1318 .getString("JavaEditorPreferencePage.closeBrackets");
1320 addCheckBox(group, label, PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP, 1);
1322 // label = PreferencesMessages
1323 // .getString("JavaEditorPreferencePage.closeBraces");
1325 // addCheckBox(group, label, PreferenceConstants.EDITOR_CLOSE_BRACES, 1);
1327 // label = PreferencesMessages
1328 // .getString("JavaEditorPreferencePage.closeJavaDocs");
1330 // button = addCheckBox(group, label,
1331 // PreferenceConstants.EDITOR_CLOSE_JAVADOCS, 1);
1333 // label = PreferencesMessages
1334 // .getString("JavaEditorPreferencePage.addJavaDocTags");
1336 // fAddJavaDocTagsButton = addCheckBox(group, label,
1337 // PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS, 1);
1338 // createDependency(button, fAddJavaDocTagsButton);
1342 private void addFiller(Composite composite) {
1343 Label filler = new Label(composite, SWT.LEFT);
1344 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
1345 gd.horizontalSpan = 2;
1346 gd.heightHint = convertHeightInCharsToPixels(1) / 2;
1347 filler.setLayoutData(gd);
1350 private static void indent(Control control) {
1351 GridData gridData = new GridData();
1352 gridData.horizontalIndent = 20;
1353 control.setLayoutData(gridData);
1356 private static void createDependency(final Button master, final Control slave) {
1358 master.addSelectionListener(new SelectionListener() {
1359 public void widgetSelected(SelectionEvent e) {
1360 slave.setEnabled(master.getSelection());
1363 public void widgetDefaultSelected(SelectionEvent e) {
1368 private void addCompletionRadioButtons(Composite contentAssistComposite) {
1369 Composite completionComposite = new Composite(contentAssistComposite,
1371 GridData ccgd = new GridData();
1372 ccgd.horizontalSpan = 2;
1373 completionComposite.setLayoutData(ccgd);
1374 GridLayout ccgl = new GridLayout();
1375 ccgl.marginWidth = 0;
1376 ccgl.numColumns = 2;
1377 completionComposite.setLayout(ccgl);
1378 // SelectionListener completionSelectionListener= new SelectionAdapter() {
1379 // public void widgetSelected(SelectionEvent e) {
1380 // boolean insert= fCompletionInsertsRadioButton.getSelection();
1381 // fOverlayStore.setValue(PreferenceConstants.CODEASSIST_INSERT_COMPLETION,
1386 // fCompletionInsertsRadioButton= new Button(completionComposite, SWT.RADIO
1388 // fCompletionInsertsRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionInserts"));
1390 // fCompletionInsertsRadioButton.setLayoutData(new GridData());
1391 // fCompletionInsertsRadioButton.addSelectionListener(completionSelectionListener);
1393 // fCompletionOverwritesRadioButton= new Button(completionComposite,
1394 // SWT.RADIO | SWT.LEFT);
1395 // fCompletionOverwritesRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionOverwrites"));
1397 // fCompletionOverwritesRadioButton.setLayoutData(new GridData());
1398 // fCompletionOverwritesRadioButton.addSelectionListener(completionSelectionListener);
1401 private Control createNavigationPage(Composite parent) {
1402 Composite composite = new Composite(parent, SWT.NULL);
1403 GridLayout layout = new GridLayout();
1404 layout.numColumns = 2;
1405 composite.setLayout(layout);
1407 // PreferencesMessages.getString("JavaEditorPreferencePage.navigation.browserLikeLinks");
1409 // fBrowserLikeLinksCheckBox= addCheckBox(composite, text,
1410 // PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS, 0);
1411 // fBrowserLikeLinksCheckBox.addSelectionListener(new SelectionListener() {
1412 // public void widgetSelected(SelectionEvent e) {
1413 // boolean state= fBrowserLikeLinksCheckBox.getSelection();
1414 // fBrowserLikeLinksKeyModifierText.setEnabled(state);
1415 // handleBrowserLikeLinksKeyModifierModified();
1417 // public void widgetDefaultSelected(SelectionEvent e) {
1420 // Text field for modifier string
1422 // PreferencesMessages.getString("JavaEditorPreferencePage.navigation.browserLikeLinksKeyModifier");
1424 // fBrowserLikeLinksKeyModifierText= addTextField(composite, text,
1425 // PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER, 20, 0,
1427 // fBrowserLikeLinksKeyModifierText.setTextLimit(Text.LIMIT);
1430 // (computeStateMask(fOverlayStore.getString(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER))
1432 // // Fix possible illegal modifier string
1434 // fOverlayStore.getInt(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK);
1435 // if (stateMask == -1)
1436 // fBrowserLikeLinksKeyModifierText.setText(""); //$NON-NLS-1$
1438 // fBrowserLikeLinksKeyModifierText.setText(EditorUtility.getModifierString(stateMask));
1440 // fBrowserLikeLinksKeyModifierText.addKeyListener(new KeyListener() {
1441 // private boolean isModifierCandidate;
1442 // public void keyPressed(KeyEvent e) {
1443 // isModifierCandidate= e.keyCode > 0 && e.character == 0 && e.stateMask ==
1447 // public void keyReleased(KeyEvent e) {
1448 // if (isModifierCandidate && e.stateMask > 0 && e.stateMask == e.stateMask
1449 // && e.character == 0) {// && e.time -time < 1000) {
1450 // String modifierString= fBrowserLikeLinksKeyModifierText.getText();
1451 // Point selection= fBrowserLikeLinksKeyModifierText.getSelection();
1452 // int i= selection.x - 1;
1453 // while (i > -1 && Character.isWhitespace(modifierString.charAt(i))) {
1456 // boolean needsPrefixDelimiter= i > -1 &&
1457 // !String.valueOf(modifierString.charAt(i)).equals(DELIMITER);
1460 // while (i < modifierString.length() &&
1461 // Character.isWhitespace(modifierString.charAt(i))) {
1464 // boolean needsPostfixDelimiter= i < modifierString.length() &&
1465 // !String.valueOf(modifierString.charAt(i)).equals(DELIMITER);
1467 // String insertString;
1469 // if (needsPrefixDelimiter && needsPostfixDelimiter)
1471 // PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertDelimiterAndModifierAndDelimiter",
1472 // new String[] {Action.findModifierString(e.stateMask)}); //$NON-NLS-1$
1473 // else if (needsPrefixDelimiter)
1475 // PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertDelimiterAndModifier",
1476 // new String[] {Action.findModifierString(e.stateMask)}); //$NON-NLS-1$
1477 // else if (needsPostfixDelimiter)
1479 // PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.insertModifierAndDelimiter",
1480 // new String[] {Action.findModifierString(e.stateMask)}); //$NON-NLS-1$
1482 // insertString= Action.findModifierString(e.stateMask);
1484 // fBrowserLikeLinksKeyModifierText.insert(insertString);
1489 // fBrowserLikeLinksKeyModifierText.addModifyListener(new ModifyListener()
1491 // public void modifyText(ModifyEvent e) {
1492 // handleBrowserLikeLinksKeyModifierModified();
1498 private void handleBrowserLikeLinksKeyModifierModified() {
1499 // String modifiers= fBrowserLikeLinksKeyModifierText.getText();
1500 // int stateMask= computeStateMask(modifiers);
1501 // if (fBrowserLikeLinksCheckBox.getSelection() && (stateMask == -1 ||
1502 // (stateMask & SWT.SHIFT) != 0)) {
1503 // if (stateMask == -1)
1504 // fBrowserLikeLinksKeyModifierStatus= new StatusInfo(IStatus.ERROR,
1505 // PreferencesMessages.getFormattedString("JavaEditorPreferencePage.navigation.modifierIsNotValid",
1506 // modifiers)); //$NON-NLS-1$
1508 // fBrowserLikeLinksKeyModifierStatus= new StatusInfo(IStatus.ERROR,
1509 // PreferencesMessages.getString("JavaEditorPreferencePage.navigation.shiftIsDisabled"));
1512 // StatusUtil.applyToStatusLine(this, fBrowserLikeLinksKeyModifierStatus);
1514 // fBrowserLikeLinksKeyModifierStatus= new StatusInfo();
1515 // updateStatus(fBrowserLikeLinksKeyModifierStatus);
1519 // private IStatus getBrowserLikeLinksKeyModifierStatus() {
1520 // if (fBrowserLikeLinksKeyModifierStatus == null)
1521 // fBrowserLikeLinksKeyModifierStatus= new StatusInfo();
1522 // return fBrowserLikeLinksKeyModifierStatus;
1525 * Computes the state mask for the given modifier string.
1528 * the string with the modifiers, separated by '+', '-', ';', ',' or
1530 * @return the state mask or -1 if the input is invalid
1532 private int computeStateMask(String modifiers) {
1533 if (modifiers == null)
1535 if (modifiers.length() == 0)
1538 StringTokenizer modifierTokenizer = new StringTokenizer(modifiers,
1539 ",;.:+-* "); //$NON-NLS-1$
1540 while (modifierTokenizer.hasMoreTokens()) {
1541 int modifier = EditorUtility.findLocalizedModifier(modifierTokenizer
1543 if (modifier == 0 || (stateMask & modifier) == modifier)
1545 stateMask = stateMask | modifier;
1551 * @see PreferencePage#createContents(Composite)
1553 protected Control createContents(Composite parent) {
1554 initializeDefaultColors();
1555 fFoldingConfigurationBlock = new FoldingConfigurationBlock(fOverlayStore);
1556 fOverlayStore.load();
1557 fOverlayStore.start();
1558 TabFolder folder = new TabFolder(parent, SWT.NONE);
1559 folder.setLayout(new TabFolderLayout());
1560 folder.setLayoutData(new GridData(GridData.FILL_BOTH));
1561 TabItem item = new TabItem(folder, SWT.NONE);
1562 item.setText(PreferencesMessages
1563 .getString("JavaEditorPreferencePage.general")); //$NON-NLS-1$
1564 item.setControl(createAppearancePage(folder));
1565 item = new TabItem(folder, SWT.NONE);
1566 item.setText(PreferencesMessages
1567 .getString("JavaEditorPreferencePage.colors")); //$NON-NLS-1$
1568 item.setControl(createSyntaxPage(folder));
1570 // item = new TabItem(folder, SWT.NONE);
1571 // item.setText(PreferencesMessages
1572 // .getString("JavaEditorPreferencePage.annotationsTab.title"));
1574 // item.setControl(createAnnotationsPage(folder));
1575 item = new TabItem(folder, SWT.NONE);
1576 item.setText(PreferencesMessages
1577 .getString("JavaEditorPreferencePage.typing.tabTitle"));
1579 item.setControl(createTypingPage(folder));
1581 item = new TabItem(folder, SWT.NONE);
1582 item.setText(PreferencesMessages
1583 .getString("JavaEditorPreferencePage.hoverTab.title"));
1585 fJavaEditorHoverConfigurationBlock = new JavaEditorHoverConfigurationBlock(
1586 this, fOverlayStore);
1587 item.setControl(fJavaEditorHoverConfigurationBlock.createControl(folder));
1588 // item= new TabItem(folder, SWT.NONE);
1589 // item.setText(PreferencesMessages.getString("JavaEditorPreferencePage.navigationTab.title"));
1591 // item.setControl(createNavigationPage(folder));
1592 item = new TabItem(folder, SWT.NONE);
1593 item.setText(PreferencesMessages
1594 .getString("JavaEditorPreferencePage.folding.title")); //$NON-NLS-1$
1595 item.setControl(fFoldingConfigurationBlock.createControl(folder));
1598 Dialog.applyDialogFont(folder);
1602 private void initialize() {
1604 for (int i = 0; i < fSyntaxColorListModel.length; i++)
1605 fSyntaxColorList.add(fSyntaxColorListModel[i][0]);
1606 fSyntaxColorList.getDisplay().asyncExec(new Runnable() {
1608 if (fSyntaxColorList != null && !fSyntaxColorList.isDisposed()) {
1609 fSyntaxColorList.select(0);
1610 handleSyntaxColorListSelection();
1614 for (int i = 0; i < fAppearanceColorListModel.length; i++)
1615 fAppearanceColorList.add(fAppearanceColorListModel[i][0]);
1616 fAppearanceColorList.getDisplay().asyncExec(new Runnable() {
1618 if (fAppearanceColorList != null && !fAppearanceColorList.isDisposed()) {
1619 fAppearanceColorList.select(0);
1620 handleAppearanceColorListSelection();
1624 // for (int i = 0; i < fAnnotationColorListModel.length; i++)
1625 // fAnnotationList.add(fAnnotationColorListModel[i][0]);
1626 // fAnnotationList.getDisplay().asyncExec(new Runnable() {
1627 // public void run() {
1628 // if (fAnnotationList != null && !fAnnotationList.isDisposed()) {
1629 // fAnnotationList.select(0);
1630 // handleAnnotationListSelection();
1634 // for (int i= 0; i < fContentAssistColorListModel.length; i++)
1635 // fContentAssistColorList.add(fContentAssistColorListModel[i][0]);
1636 // fContentAssistColorList.getDisplay().asyncExec(new Runnable() {
1637 // public void run() {
1638 // if (fContentAssistColorList != null &&
1639 // !fContentAssistColorList.isDisposed()) {
1640 // fContentAssistColorList.select(0);
1641 // handleContentAssistColorListSelection();
1645 fFoldingConfigurationBlock.initialize();
1648 private void initializeFields() {
1649 Iterator e = fColorButtons.keySet().iterator();
1650 while (e.hasNext()) {
1651 ColorEditor c = (ColorEditor) e.next();
1652 String key = (String) fColorButtons.get(c);
1653 RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
1654 c.setColorValue(rgb);
1656 e = fCheckBoxes.keySet().iterator();
1657 while (e.hasNext()) {
1658 Button b = (Button) e.next();
1659 String key = (String) fCheckBoxes.get(b);
1660 b.setSelection(fOverlayStore.getBoolean(key));
1662 e = fTextFields.keySet().iterator();
1663 while (e.hasNext()) {
1664 Text t = (Text) e.next();
1665 String key = (String) fTextFields.get(t);
1666 t.setText(fOverlayStore.getString(key));
1668 RGB rgb = PreferenceConverter.getColor(fOverlayStore,
1669 PreferenceConstants.EDITOR_BACKGROUND_COLOR);
1670 fBackgroundColorEditor.setColorValue(rgb);
1671 boolean default_ = fOverlayStore
1672 .getBoolean(PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR);
1673 fBackgroundDefaultRadioButton.setSelection(default_);
1674 fBackgroundCustomRadioButton.setSelection(!default_);
1675 fBackgroundColorButton.setEnabled(!default_);
1676 // boolean closeJavaDocs = fOverlayStore
1677 // .getBoolean(PreferenceConstants.EDITOR_CLOSE_JAVADOCS);
1678 // fAddJavaDocTagsButton.setEnabled(closeJavaDocs);
1679 fEscapeStringsButton.setEnabled(fOverlayStore
1680 .getBoolean(PreferenceConstants.EDITOR_WRAP_STRINGS));
1681 // boolean fillMethodArguments=
1682 // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES);
1683 // fGuessMethodArgumentsButton.setEnabled(fillMethodArguments);
1684 // boolean completionInserts=
1685 // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_INSERT_COMPLETION);
1686 // fCompletionInsertsRadioButton.setSelection(completionInserts);
1687 // fCompletionOverwritesRadioButton.setSelection(! completionInserts);
1689 // fBrowserLikeLinksKeyModifierText.setEnabled(fBrowserLikeLinksCheckBox.getSelection());
1690 // boolean markOccurrences=
1691 // fOverlayStore.getBoolean(PreferenceConstants.EDITOR_MARK_OCCURRENCES);
1692 // fStickyOccurrencesButton.setEnabled(markOccurrences);
1693 updateAutoactivationControls();
1696 private void initializeDefaultColors() {
1697 if (!getPreferenceStore().contains(
1698 PreferenceConstants.EDITOR_BACKGROUND_COLOR)) {
1699 RGB rgb = getControl().getDisplay().getSystemColor(
1700 SWT.COLOR_LIST_BACKGROUND).getRGB();
1701 PreferenceConverter.setDefault(fOverlayStore,
1702 PreferenceConstants.EDITOR_BACKGROUND_COLOR, rgb);
1703 PreferenceConverter.setDefault(getPreferenceStore(),
1704 PreferenceConstants.EDITOR_BACKGROUND_COLOR, rgb);
1706 if (!getPreferenceStore().contains(
1707 PreferenceConstants.EDITOR_FOREGROUND_COLOR)) {
1708 RGB rgb = getControl().getDisplay().getSystemColor(
1709 SWT.COLOR_LIST_FOREGROUND).getRGB();
1710 PreferenceConverter.setDefault(fOverlayStore,
1711 PreferenceConstants.EDITOR_FOREGROUND_COLOR, rgb);
1712 PreferenceConverter.setDefault(getPreferenceStore(),
1713 PreferenceConstants.EDITOR_FOREGROUND_COLOR, rgb);
1717 private void updateAutoactivationControls() {
1718 // boolean autoactivation=
1719 // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_AUTOACTIVATION);
1720 // fAutoInsertDelayText.setEnabled(autoactivation);
1721 // fAutoInsertDelayLabel.setEnabled(autoactivation);
1722 // fAutoInsertJavaTriggerText.setEnabled(autoactivation);
1723 // fAutoInsertJavaTriggerLabel.setEnabled(autoactivation);
1725 // fAutoInsertJavaDocTriggerText.setEnabled(autoactivation);
1726 // fAutoInsertJavaDocTriggerLabel.setEnabled(autoactivation);
1730 * @see PreferencePage#performOk()
1732 public boolean performOk() {
1733 // fJavaEditorHoverConfigurationBlock.performOk();
1734 fFoldingConfigurationBlock.performOk();
1735 // fOverlayStore.setValue(PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK,
1736 // computeStateMask(fBrowserLikeLinksKeyModifierText.getText()));
1737 fOverlayStore.propagate();
1738 PHPeclipsePlugin.getDefault().savePluginPreferences();
1743 * @see PreferencePage#performDefaults()
1745 protected void performDefaults() {
1746 fOverlayStore.loadDefaults();
1748 handleSyntaxColorListSelection();
1749 handleAppearanceColorListSelection();
1750 // handleAnnotationListSelection();
1751 // handleContentAssistColorListSelection();
1752 // fJavaEditorHoverConfigurationBlock.performDefaults();
1753 fFoldingConfigurationBlock.performDefaults();
1754 super.performDefaults();
1755 fPreviewViewer.invalidateTextPresentation();
1759 * @see DialogPage#dispose()
1761 public void dispose() {
1762 fFoldingConfigurationBlock.dispose();
1764 if (fJavaTextTools != null) {
1765 fJavaTextTools.dispose();
1766 fJavaTextTools = null;
1768 if (fOverlayStore != null) {
1769 fOverlayStore.stop();
1770 fOverlayStore = null;
1772 if (fBackgroundColor != null && !fBackgroundColor.isDisposed())
1773 fBackgroundColor.dispose();
1777 private Button addCheckBox(Composite parent, String label, String key,
1779 Button checkBox = new Button(parent, SWT.CHECK);
1780 checkBox.setText(label);
1781 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1782 gd.horizontalIndent = indentation;
1783 gd.horizontalSpan = 2;
1784 checkBox.setLayoutData(gd);
1785 checkBox.addSelectionListener(fCheckBoxListener);
1786 fCheckBoxes.put(checkBox, key);
1790 private Text addTextField(Composite composite, String label, String key,
1791 int textLimit, int indentation, boolean isNumber) {
1792 return getTextControl(addLabelledTextField(composite, label, key,
1793 textLimit, indentation, isNumber));
1796 private static Label getLabelControl(Control[] labelledTextField) {
1797 return (Label) labelledTextField[0];
1800 private static Text getTextControl(Control[] labelledTextField) {
1801 return (Text) labelledTextField[1];
1805 * Returns an array of size 2: - first element is of type <code>Label</code>-
1806 * second element is of type <code>Text</code> Use
1807 * <code>getLabelControl</code> and <code>getTextControl</code> to get the
1810 private Control[] addLabelledTextField(Composite composite, String label,
1811 String key, int textLimit, int indentation, boolean isNumber) {
1812 Label labelControl = new Label(composite, SWT.NONE);
1813 labelControl.setText(label);
1814 GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1815 gd.horizontalIndent = indentation;
1816 labelControl.setLayoutData(gd);
1817 Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE);
1818 gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
1819 gd.widthHint = convertWidthInCharsToPixels(textLimit + 1);
1820 textControl.setLayoutData(gd);
1821 textControl.setTextLimit(textLimit);
1822 fTextFields.put(textControl, key);
1824 fNumberFields.add(textControl);
1825 textControl.addModifyListener(fNumberFieldListener);
1827 textControl.addModifyListener(fTextFieldListener);
1829 return new Control[] { labelControl, textControl };
1832 private String loadPreviewContentFromFile(String filename) {
1834 String separator = System.getProperty("line.separator"); //$NON-NLS-1$
1835 StringBuffer buffer = new StringBuffer(512);
1836 BufferedReader reader = null;
1838 reader = new BufferedReader(new InputStreamReader(getClass()
1839 .getResourceAsStream(filename)));
1840 while ((line = reader.readLine()) != null) {
1841 buffer.append(line);
1842 buffer.append(separator);
1844 } catch (IOException io) {
1845 PHPeclipsePlugin.log(io);
1847 if (reader != null) {
1850 } catch (IOException e) {
1854 return buffer.toString();
1857 private void numberFieldChanged(Text textControl) {
1858 String number = textControl.getText();
1859 IStatus status = validatePositiveNumber(number);
1860 if (!status.matches(IStatus.ERROR))
1861 fOverlayStore.setValue((String) fTextFields.get(textControl), number);
1862 updateStatus(status);
1865 private IStatus validatePositiveNumber(String number) {
1866 StatusInfo status = new StatusInfo();
1867 if (number.length() == 0) {
1868 status.setError(PreferencesMessages
1869 .getString("JavaEditorPreferencePage.empty_input")); //$NON-NLS-1$
1872 int value = Integer.parseInt(number);
1874 status.setError(PreferencesMessages.getFormattedString(
1875 "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
1876 } catch (NumberFormatException e) {
1877 status.setError(PreferencesMessages.getFormattedString(
1878 "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
1884 void updateStatus(IStatus status) {
1885 if (!status.matches(IStatus.ERROR)) {
1886 for (int i = 0; i < fNumberFields.size(); i++) {
1887 Text text = (Text) fNumberFields.get(i);
1888 IStatus s = validatePositiveNumber(text.getText());
1889 status = StatusUtil.getMoreSevere(s, status);
1893 // StatusUtil.getMoreSevere(fJavaEditorHoverConfigurationBlock.getStatus(),
1895 // status= StatusUtil.getMoreSevere(getBrowserLikeLinksKeyModifierStatus(),
1897 setValid(!status.matches(IStatus.ERROR));
1898 StatusUtil.applyToStatusLine(this, status);