1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / preferences / JavaEditorPreferencePage.java
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
new file mode 100644 (file)
index 0000000..f6e9da8
--- /dev/null
@@ -0,0 +1,2049 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2003 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ *     IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package net.sourceforge.phpdt.internal.ui.preferences;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+//import java.text.Collator;
+import java.util.ArrayList;
+//import java.util.Comparator;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+//import java.util.SortedSet;
+import java.util.StringTokenizer;
+//import java.util.TreeSet;
+
+import net.sourceforge.phpdt.core.JavaCore;
+import net.sourceforge.phpdt.internal.ui.IJavaHelpContextIds;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusInfo;
+import net.sourceforge.phpdt.internal.ui.dialogs.StatusUtil;
+import net.sourceforge.phpdt.internal.ui.text.IPHPPartitions;
+import net.sourceforge.phpdt.internal.ui.text.PreferencesAdapter;
+import net.sourceforge.phpdt.internal.ui.util.TabFolderLayout;
+import net.sourceforge.phpdt.ui.PreferenceConstants;
+import net.sourceforge.phpdt.ui.text.JavaTextTools;
+import net.sourceforge.phpdt.ui.text.PHPSourceViewerConfiguration;
+import net.sourceforge.phpeclipse.PHPeclipsePlugin;
+import net.sourceforge.phpeclipse.phpeditor.EditorUtility;
+import net.sourceforge.phpeclipse.phpeditor.JavaSourceViewer;
+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;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.jface.resource.JFaceResources;
+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;
+import org.eclipse.swt.layout.RowLayout;
+import org.eclipse.swt.widgets.Button;
+//import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Link;
+import org.eclipse.swt.widgets.List;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.PreferencesUtil;
+import org.eclipse.ui.editors.text.EditorsUI;
+import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
+import org.eclipse.ui.texteditor.AnnotationPreference;
+import org.eclipse.ui.texteditor.ChainedPreferenceStore;
+import org.eclipse.ui.texteditor.MarkerAnnotationPreferences;
+
+
+/**
+ * The page for setting the editor options.
+ */
+public class JavaEditorPreferencePage extends PreferencePage implements
+               IWorkbenchPreferencePage {
+       private static final String BOLD = PreferenceConstants.EDITOR_BOLD_SUFFIX;
+
+       private static final String COMPILER_TASK_TAGS = JavaCore.COMPILER_TASK_TAGS;
+
+       private static final String DELIMITER = PreferencesMessages
+                       .getString("JavaEditorPreferencePage.navigation.delimiter"); //$NON-NLS-1$
+
+       /** The keys of the overlay store. */
+       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.tags"),
+                                       PreferenceConstants.EDITOR_PHP_TAG_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.keywords"),
+                                       PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR },
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.functionNames"),
+                                       PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.variables"),
+                                       PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.variables_dollar"),
+                                       PreferenceConstants.EDITOR_PHP_VARIABLE_DOLLAR_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.constants"),
+                                       PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR },
+                       //$NON-NLS-1$
+                       { PreferencesMessages.getString("JavaEditorPreferencePage.types"),
+                                       PreferenceConstants.EDITOR_PHP_TYPE_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.strings_dq"),
+                                       PreferenceConstants.EDITOR_STRING_COLOR_DQ },
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.strings_sq"),
+                                       PreferenceConstants.EDITOR_STRING_COLOR_SQ },
+                       //$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 },
+                       { PreferencesMessages.getString("JavaEditorPreferencePage.braces"),
+                                       PreferenceConstants.EDITOR_PHP_BRACE_OPERATOR_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.phpDocKeywords"),
+                                       PreferenceConstants.EDITOR_JAVADOC_KEYWORD_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.phpDocHtmlTags"),
+                                       PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.phpDocLinks"),
+                                       PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.phpDocOthers"), PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR } //$NON-NLS-1$
+       };
+
+       private final String[][] fAppearanceColorListModel = new String[][] {
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.matchingBracketsHighlightColor2"),
+                                       PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.currentLineHighlighColor"),
+                                       AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.printMarginColor2"),
+                                       AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.findScopeColor2"),
+                                       PreferenceConstants.EDITOR_FIND_SCOPE_COLOR },
+                       //$NON-NLS-1$
+                       {
+                                       PreferencesMessages
+                                                       .getString("JavaEditorPreferencePage.linkColor2"), PreferenceConstants.EDITOR_LINK_COLOR }, //$NON-NLS-1$
+       };
+
+       // private final String[][] fAnnotationColorListModel;
+
+       // private final String[][] fAnnotationDecorationListModel = new String[][]{
+       // {
+       // PreferencesMessages
+       // .getString("JavaEditorPreferencePage.AnnotationDecoration.NONE"),
+       // AnnotationPreference.STYLE_NONE},
+       // //$NON-NLS-1$
+       // {
+       // PreferencesMessages
+       // .getString("JavaEditorPreferencePage.AnnotationDecoration.SQUIGGLIES"),
+       // AnnotationPreference.STYLE_SQUIGGLIES},
+       // //$NON-NLS-1$
+       // {
+       // PreferencesMessages
+       // .getString("JavaEditorPreferencePage.AnnotationDecoration.UNDERLINE"),
+       // AnnotationPreference.STYLE_UNDERLINE},
+       // //$NON-NLS-1$
+       // {
+       // PreferencesMessages
+       // .getString("JavaEditorPreferencePage.AnnotationDecoration.BOX"),
+       // AnnotationPreference.STYLE_BOX},
+       // //$NON-NLS-1$
+       // {
+       // PreferencesMessages
+       // .getString("JavaEditorPreferencePage.AnnotationDecoration.IBEAM"),
+       // AnnotationPreference.STYLE_IBEAM} //$NON-NLS-1$
+       // };
+       private OverlayPreferenceStore fOverlayStore;
+
+       private JavaTextTools fJavaTextTools;
+
+       private JavaEditorHoverConfigurationBlock fJavaEditorHoverConfigurationBlock;
+
+       private FoldingConfigurationBlock fFoldingConfigurationBlock;
+
+       private Map fColorButtons = new HashMap();
+
+       private Map fCheckBoxes = new HashMap();
+
+       private SelectionListener fCheckBoxListener = new SelectionListener() {
+               public void widgetDefaultSelected(SelectionEvent e) {
+               }
+
+               public void widgetSelected(SelectionEvent e) {
+                       Button button = (Button) e.widget;
+                       fOverlayStore.setValue((String) fCheckBoxes.get(button), button
+                                       .getSelection());
+               }
+       };
+
+       private Map fTextFields = new HashMap();
+
+       private ModifyListener fTextFieldListener = new ModifyListener() {
+               public void modifyText(ModifyEvent e) {
+                       Text text = (Text) e.widget;
+                       fOverlayStore.setValue((String) fTextFields.get(text), text
+                                       .getText());
+               }
+       };
+
+       private ArrayList fNumberFields = new ArrayList();
+
+       private ModifyListener fNumberFieldListener = new ModifyListener() {
+               public void modifyText(ModifyEvent e) {
+                       numberFieldChanged((Text) e.widget);
+               }
+       };
+
+       private List fSyntaxColorList;
+
+       private List fAppearanceColorList;
+
+       // private List fContentAssistColorList;
+       //private List fAnnotationList;
+
+       private ColorEditor fSyntaxForegroundColorEditor;
+
+       private ColorEditor fAppearanceColorEditor;
+
+       //private ColorEditor fAnnotationForegroundColorEditor;
+
+       //private ColorEditor fContentAssistColorEditor;
+
+       private ColorEditor fBackgroundColorEditor;
+
+       private Button fBackgroundDefaultRadioButton;
+
+       private Button fBackgroundCustomRadioButton;
+
+       private Button fBackgroundColorButton;
+
+       private Button fBoldCheckBox;
+
+       // private Button fAddJavaDocTagsButton;
+
+       private Button fEscapeStringsButtonDQ;
+
+       private Button fEscapeStringsButtonSQ;
+
+       // private Button fGuessMethodArgumentsButton;
+       private SourceViewer fPreviewViewer;
+
+       private Color fBackgroundColor;
+
+       //private Control fAutoInsertDelayText;
+
+       //private Control fAutoInsertJavaTriggerText;
+
+       //private Control fAutoInsertJavaDocTriggerText;
+
+       //private Label fAutoInsertDelayLabel;
+
+       //private Label fAutoInsertJavaTriggerLabel;
+
+       //private Label fAutoInsertJavaDocTriggerLabel;
+
+       //private Button;
+
+       //private Combo fDecorationStyleCombo;
+
+       //private Button fHighlightInTextCheckBox;
+
+       //private Button fShowInOverviewRulerCheckBox;
+
+       //private Button fShowInVerticalRulerCheckBox;
+
+       private Text fBrowserLikeLinksKeyModifierText;
+
+       private Button fBrowserLikeLinksCheckBox;
+
+       private StatusInfo fBrowserLikeLinksKeyModifierStatus;
+
+       // private Button fCompletionInsertsRadioButton;
+       // private Button fCompletionOverwritesRadioButton;
+       // private Button fStickyOccurrencesButton;
+       /**
+        * Creates a new preference page.
+        */
+       public JavaEditorPreferencePage() {
+               setDescription(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.description")); //$NON-NLS-1$
+               setPreferenceStore(PHPeclipsePlugin.getDefault().getPreferenceStore());
+               MarkerAnnotationPreferences markerAnnotationPreferences = new MarkerAnnotationPreferences();
+               fKeys = createOverlayStoreKeys(markerAnnotationPreferences);
+               fOverlayStore = new OverlayPreferenceStore(getPreferenceStore(), fKeys);
+               // fAnnotationColorListModel =
+               // createAnnotationTypeListModel(markerAnnotationPreferences);
+       }
+
+       private OverlayPreferenceStore.OverlayKey[] createOverlayStoreKeys(
+                       MarkerAnnotationPreferences preferences) {
+               ArrayList overlayKeys = new ArrayList();
+               Iterator e = preferences.getAnnotationPreferences().iterator();
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_FOREGROUND_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_FOREGROUND_DEFAULT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_BACKGROUND_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.INT,
+                               PreferenceConstants.EDITOR_TAB_WIDTH));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_MULTI_LINE_COMMENT_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_SINGLE_LINE_COMMENT_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_JAVA_KEYWORD_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_JAVA_KEYWORD_BOLD));
+
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_TAG_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_TAG_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_FUNCTIONNAME_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_VARIABLE_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_VARIABLE_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_VARIABLE_DOLLAR_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_VARIABLE_DOLLAR_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_CONSTANT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_CONSTANT_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_TYPE_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_TYPE_BOLD));
+
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_STRING_COLOR_DQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_STRING_BOLD_DQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_STRING_COLOR_SQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_STRING_BOLD_SQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_JAVA_DEFAULT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_JAVA_DEFAULT_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_TASK_TAG_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_TASK_TAG_BOLD));
+               // overlayKeys.add(new
+               // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.STRING_DQ,
+               // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_COLOR));
+               // overlayKeys.add(new
+               // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+               // PreferenceConstants.EDITOR_JAVA_METHOD_NAME_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_OPERATOR_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_PHP_OPERATOR_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_PHP_KEYWORD_RETURN_COLOR));
+               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));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_JAVADOC_TAG_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_JAVADOC_TAG_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_JAVADOC_LINKS_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_JAVADOC_LINKS_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_JAVADOC_DEFAULT_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_JAVADOC_DEFAULT_BOLD));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_MATCHING_BRACKETS));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.STRING,
+                                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE_COLOR));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.BOOLEAN,
+                                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.STRING,
+                                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLOR));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.INT,
+                                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.BOOLEAN,
+                                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN));
+               // overlayKeys.add(new
+               // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+               // PreferenceConstants.EDITOR_MARK_OCCURRENCES));
+               // overlayKeys.add(new
+               // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+               // PreferenceConstants.EDITOR_STICKY_OCCURRENCES));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_FIND_SCOPE_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_LINK_COLOR));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_CORRECTION_INDICATION));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.BOOLEAN,
+                                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_SPACES_FOR_TABS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_AUTOACTIVATION));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.INT,
+                               PreferenceConstants.CODEASSIST_AUTOACTIVATION_DELAY));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_AUTOINSERT));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_PROPOSALS_BACKGROUND));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_PROPOSALS_FOREGROUND));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_PARAMETERS_BACKGROUND));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_PARAMETERS_FOREGROUND));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_REPLACEMENT_BACKGROUND));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_REPLACEMENT_FOREGROUND));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVA));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.STRING,
+                                               PreferenceConstants.CODEASSIST_AUTOACTIVATION_TRIGGERS_JAVADOC));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_SHOW_VISIBLE_PROPOSALS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_ORDER_PROPOSALS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_CASE_SENSITIVITY));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_ADDIMPORT));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_INSERT_COMPLETION));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_FILL_ARGUMENT_NAMES));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.CODEASSIST_GUESS_METHOD_ARGUMENTS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_SMART_PASTE));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_CLOSE_STRINGS_DQ_PHP));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_CLOSE_STRINGS_SQ_PHP));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP));
+               // overlayKeys
+               // .add(new OverlayPreferenceStore.OverlayKey(
+               // OverlayPreferenceStore.BOOLEAN,
+               // PreferenceConstants.EDITOR_CLOSE_BRACES));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_CLOSE_JAVADOCS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_WRAP_WORDS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_WRAP_STRINGS_DQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_ESCAPE_STRINGS_DQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_WRAP_STRINGS_SQ));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_ESCAPE_STRINGS_SQ));
+
+               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,
+                               PreferenceConstants.EDITOR_SUB_WORD_NAVIGATION));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_DISABLE_OVERWRITE_MODE));
+               // overlayKeys.add(new
+               // OverlayPreferenceStore.OverlayKey(OverlayPreferenceStore.BOOLEAN,
+               // PreferenceConstants.EDITOR_SHOW_TEXT_HOVER_AFFORDANCE));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIERS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_TEXT_HOVER_MODIFIER_MASKS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.BOOLEAN,
+                               PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS));
+               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                               OverlayPreferenceStore.STRING,
+                               PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER));
+               overlayKeys
+                               .add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.STRING,
+                                               PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK));
+               while (e.hasNext()) {
+                       AnnotationPreference info = (AnnotationPreference) e.next();
+                       overlayKeys
+                                       .add(new OverlayPreferenceStore.OverlayKey(
+                                                       OverlayPreferenceStore.STRING, info
+                                                                       .getColorPreferenceKey()));
+                       overlayKeys
+                                       .add(new OverlayPreferenceStore.OverlayKey(
+                                                       OverlayPreferenceStore.BOOLEAN, info
+                                                                       .getTextPreferenceKey()));
+                       if (info.getHighlightPreferenceKey() != null)
+                               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.BOOLEAN, info
+                                                               .getHighlightPreferenceKey()));
+                       overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                                       OverlayPreferenceStore.BOOLEAN, info
+                                                       .getOverviewRulerPreferenceKey()));
+                       if (info.getVerticalRulerPreferenceKey() != null)
+                               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.BOOLEAN, info
+                                                               .getVerticalRulerPreferenceKey()));
+                       if (info.getTextStylePreferenceKey() != null)
+                               overlayKeys.add(new OverlayPreferenceStore.OverlayKey(
+                                               OverlayPreferenceStore.STRING, info
+                                                               .getTextStylePreferenceKey()));
+               }
+               OverlayPreferenceStore.OverlayKey[] keys = new OverlayPreferenceStore.OverlayKey[overlayKeys
+                               .size()];
+               overlayKeys.toArray(keys);
+               return keys;
+       } /*
+                * @see IWorkbenchPreferencePage#init()
+                */
+
+       public void init(IWorkbench workbench) {
+       }
+
+       /*
+        * @see PreferencePage#createControl(Composite)
+        */
+       public void createControl(Composite parent) {
+               super.createControl(parent);
+               PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(),
+                               IJavaHelpContextIds.JAVA_EDITOR_PREFERENCE_PAGE);
+       }
+
+       private void handleSyntaxColorListSelection() {
+               int i = fSyntaxColorList.getSelectionIndex();
+               String key = fSyntaxColorListModel[i][1];
+               RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+               fSyntaxForegroundColorEditor.setColorValue(rgb);
+               fBoldCheckBox.setSelection(fOverlayStore.getBoolean(key + BOLD));
+       }
+
+       private void handleAppearanceColorListSelection() {
+               int i = fAppearanceColorList.getSelectionIndex();
+               String key = fAppearanceColorListModel[i][1];
+               RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+               fAppearanceColorEditor.setColorValue(rgb);
+       }
+
+       // private void handleAnnotationListSelection() {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][1];
+       // RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+       // fAnnotationForegroundColorEditor.setColorValue(rgb);
+       // key = fAnnotationColorListModel[i][2];
+       // boolean showInText = fOverlayStore.getBoolean(key);
+       // fShowInTextCheckBox.setSelection(showInText);
+       // key = fAnnotationColorListModel[i][6];
+       // if (key != null) {
+       // fDecorationStyleCombo.setEnabled(showInText);
+       // for (int j = 0; j < fAnnotationDecorationListModel.length; j++) {
+       // String value = fOverlayStore.getString(key);
+       // if (fAnnotationDecorationListModel[j][1].equals(value)) {
+       // fDecorationStyleCombo.setText(fAnnotationDecorationListModel[j][0]);
+       // break;
+       // }
+       // }
+       // } else {
+       // fDecorationStyleCombo.setEnabled(false);
+       // fDecorationStyleCombo.setText(fAnnotationDecorationListModel[1][0]); //
+       // set
+       // // selection
+       // // to
+       // // squigglies
+       // // if
+       // // the
+       // // key
+       // // is
+       // // not
+       // // there
+       // // (legacy
+       // // support)
+       // }
+       // key = fAnnotationColorListModel[i][3];
+       // fShowInOverviewRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
+       // key = fAnnotationColorListModel[i][4];
+       // if (key != null) {
+       // fHighlightInTextCheckBox.setSelection(fOverlayStore.getBoolean(key));
+       // fHighlightInTextCheckBox.setEnabled(true);
+       // } else
+       // fHighlightInTextCheckBox.setEnabled(false);
+       // key = fAnnotationColorListModel[i][5];
+       // if (key != null) {
+       // fShowInVerticalRulerCheckBox.setSelection(fOverlayStore.getBoolean(key));
+       // fShowInVerticalRulerCheckBox.setEnabled(true);
+       // } else {
+       // fShowInVerticalRulerCheckBox.setSelection(true);
+       // fShowInVerticalRulerCheckBox.setEnabled(false);
+       // }
+       // }
+       private Control createSyntaxPage(Composite parent) {
+               Composite colorComposite = new Composite(parent, SWT.NULL);
+               colorComposite.setLayout(new GridLayout());
+               Group backgroundComposite = new Group(colorComposite,
+                               SWT.SHADOW_ETCHED_IN);
+               backgroundComposite.setLayout(new RowLayout());
+               backgroundComposite.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.backgroundColor"));//$NON-NLS-1$
+               SelectionListener backgroundSelectionListener = new SelectionListener() {
+                       public void widgetSelected(SelectionEvent e) {
+                               boolean custom = fBackgroundCustomRadioButton.getSelection();
+                               fBackgroundColorButton.setEnabled(custom);
+                               fOverlayStore.setValue(
+                                               PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR,
+                                               !custom);
+                       }
+
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+               };
+               fBackgroundDefaultRadioButton = new Button(backgroundComposite,
+                               SWT.RADIO | SWT.LEFT);
+               fBackgroundDefaultRadioButton.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.systemDefault")); //$NON-NLS-1$
+               fBackgroundDefaultRadioButton
+                               .addSelectionListener(backgroundSelectionListener);
+               fBackgroundCustomRadioButton = new Button(backgroundComposite,
+                               SWT.RADIO | SWT.LEFT);
+               fBackgroundCustomRadioButton.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.custom")); //$NON-NLS-1$
+               fBackgroundCustomRadioButton
+                               .addSelectionListener(backgroundSelectionListener);
+               fBackgroundColorEditor = new ColorEditor(backgroundComposite);
+               fBackgroundColorButton = fBackgroundColorEditor.getButton();
+               Label label = new Label(colorComposite, SWT.LEFT);
+               label.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.foreground")); //$NON-NLS-1$
+               label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+               Composite editorComposite = new Composite(colorComposite, SWT.NONE);
+               GridLayout layout = new GridLayout();
+               layout.numColumns = 2;
+               layout.marginHeight = 0;
+               layout.marginWidth = 0;
+               editorComposite.setLayout(layout);
+               GridData gd = new GridData(GridData.FILL_BOTH);
+               editorComposite.setLayoutData(gd);
+               fSyntaxColorList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
+                               | SWT.BORDER);
+               gd = new GridData(GridData.FILL_BOTH);
+               gd.heightHint = convertHeightInCharsToPixels(5);
+               fSyntaxColorList.setLayoutData(gd);
+               Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
+               layout = new GridLayout();
+               layout.marginHeight = 0;
+               layout.marginWidth = 0;
+               layout.numColumns = 2;
+               stylesComposite.setLayout(layout);
+               stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+               label = new Label(stylesComposite, SWT.LEFT);
+               label.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.color")); //$NON-NLS-1$
+               gd = new GridData();
+               gd.horizontalAlignment = GridData.BEGINNING;
+               label.setLayoutData(gd);
+               fSyntaxForegroundColorEditor = new ColorEditor(stylesComposite);
+               Button foregroundColorButton = fSyntaxForegroundColorEditor.getButton();
+               gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.horizontalAlignment = GridData.BEGINNING;
+               foregroundColorButton.setLayoutData(gd);
+               fBoldCheckBox = new Button(stylesComposite, SWT.CHECK);
+               fBoldCheckBox.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.bold")); //$NON-NLS-1$
+               gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.horizontalAlignment = GridData.BEGINNING;
+               gd.horizontalSpan = 2;
+               fBoldCheckBox.setLayoutData(gd);
+               label = new Label(colorComposite, SWT.LEFT);
+               label.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.preview")); //$NON-NLS-1$
+               label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+               Control previewer = createPreviewer(colorComposite);
+               gd = new GridData(GridData.FILL_BOTH);
+               gd.widthHint = convertWidthInCharsToPixels(20);
+               gd.heightHint = convertHeightInCharsToPixels(5);
+               previewer.setLayoutData(gd);
+               fSyntaxColorList.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                               // do nothing
+                       }
+
+                       public void widgetSelected(SelectionEvent e) {
+                               handleSyntaxColorListSelection();
+                       }
+               });
+               foregroundColorButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                               // do nothing
+                       }
+
+                       public void widgetSelected(SelectionEvent e) {
+                               int i = fSyntaxColorList.getSelectionIndex();
+                               String key = fSyntaxColorListModel[i][1];
+                               PreferenceConverter.setValue(fOverlayStore, key,
+                                               fSyntaxForegroundColorEditor.getColorValue());
+                       }
+               });
+               fBackgroundColorButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                               // do nothing
+                       }
+
+                       public void widgetSelected(SelectionEvent e) {
+                               PreferenceConverter.setValue(fOverlayStore,
+                                               PreferenceConstants.EDITOR_BACKGROUND_COLOR,
+                                               fBackgroundColorEditor.getColorValue());
+                       }
+               });
+               fBoldCheckBox.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                               // do nothing
+                       }
+
+                       public void widgetSelected(SelectionEvent e) {
+                               int i = fSyntaxColorList.getSelectionIndex();
+                               String key = fSyntaxColorListModel[i][1];
+                               fOverlayStore
+                                               .setValue(key + BOLD, fBoldCheckBox.getSelection());
+                       }
+               });
+               return colorComposite;
+       }
+
+       private Control createPreviewer(Composite parent) {
+               Preferences coreStore = createTemporaryCorePreferenceStore();
+               fJavaTextTools = new JavaTextTools(fOverlayStore, coreStore, false);
+               IPreferenceStore generalTextStore = EditorsUI.getPreferenceStore();
+               IPreferenceStore store = new ChainedPreferenceStore(
+                               new IPreferenceStore[] {
+                                               fOverlayStore,
+                                               new PreferencesAdapter(
+                                                               createTemporaryCorePreferenceStore()),
+                                               generalTextStore });
+
+               fPreviewViewer = new JavaSourceViewer(parent, null, null, false,
+                               SWT.V_SCROLL | SWT.H_SCROLL | SWT.BORDER, store);
+               JavaTextTools tools = PHPeclipsePlugin.getDefault().getJavaTextTools();
+               PHPSourceViewerConfiguration configuration = new PHPSourceViewerConfiguration(
+                               tools.getColorManager(), store, null,
+                               IPHPPartitions.PHP_PARTITIONING);
+               // PHPSourceViewerConfiguration configuration =new
+               // PHPSourceViewerConfiguration(fJavaTextTools, null,
+               // IPHPPartitions.PHP_PARTITIONING);
+               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,
+                               IPHPPartitions.PHP_PARTITIONING);
+               fPreviewViewer.setDocument(document);
+               return fPreviewViewer.getControl();
+       }
+
+       private Preferences createTemporaryCorePreferenceStore() {
+               Preferences result = new Preferences();
+               result.setValue(COMPILER_TASK_TAGS, "TASK"); //$NON-NLS-1$
+               return result;
+       }
+
+       private Control createAppearancePage(Composite parent) {
+               Composite appearanceComposite = new Composite(parent, SWT.NONE);
+               GridLayout layout = new GridLayout();
+               layout.numColumns = 2;
+               appearanceComposite.setLayout(layout);
+               
+               // Inserts a hyper-link to the General Editor preferences page
+               // TODO Can probably be removed post 1.5.0?
+               String label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.appearanceTabLink");
+               Link link = new Link(appearanceComposite, SWT.NONE);
+               GridData gridPosition = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+               gridPosition.horizontalSpan = 2;
+               link.setLayoutData(gridPosition);
+               
+               link.setText(label);
+               link.addListener(SWT.Selection, new Listener () {
+                       public void handleEvent(Event event) {
+                               String u = event.text;
+                               PreferencesUtil.createPreferenceDialogOn(getShell(), u, null, null);
+                       }
+               });
+               String tooltip = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.appearanceTabTooltip");
+               link.setToolTipText(tooltip);           
+                       
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.displayedTabWidth"); //$NON-NLS-1$
+               addTextField(appearanceComposite, label,
+                               PreferenceConstants.EDITOR_TAB_WIDTH, 3, 0, true);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.printMarginColumn"); //$NON-NLS-1$
+               addTextField(
+                               appearanceComposite,
+                               label,
+                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN,
+                               3, 0, true);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.showOverviewRuler"); //$NON-NLS-1$
+               addCheckBox(
+                               appearanceComposite,
+                               label,
+                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_OVERVIEW_RULER,
+                               0);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.highlightMatchingBrackets"); //$NON-NLS-1$
+               addCheckBox(appearanceComposite, label,
+                               PreferenceConstants.EDITOR_MATCHING_BRACKETS, 0);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.highlightCurrentLine"); //$NON-NLS-1$
+               addCheckBox(
+                               appearanceComposite,
+                               label,
+                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_CURRENT_LINE,
+                               0);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.showPrintMargin"); //$NON-NLS-1$
+               addCheckBox(
+                               appearanceComposite,
+                               label,
+                               AbstractDecoratedTextEditorPreferenceConstants.EDITOR_PRINT_MARGIN,
+                               0);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.markOccurrences"); //$NON-NLS-1$
+               // Button master= addCheckBox(appearanceComposite, label,
+               // PreferenceConstants.EDITOR_MARK_OCCURRENCES, 0); //$NON-NLS-1$
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.stickyOccurrences"); //$NON-NLS-1$
+               // fStickyOccurrencesButton= addCheckBox(appearanceComposite, label,
+               // PreferenceConstants.EDITOR_STICKY_OCCURRENCES, 0); //$NON-NLS-1$
+               // createDependency(master, fStickyOccurrencesButton);
+               Label l = new Label(appearanceComposite, SWT.LEFT);
+               GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+               gd.horizontalSpan = 2;
+               gd.heightHint = convertHeightInCharsToPixels(1) / 2;
+               l.setLayoutData(gd);
+               l = new Label(appearanceComposite, SWT.LEFT);
+               l.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.appearanceOptions")); //$NON-NLS-1$
+               gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+               gd.horizontalSpan = 2;
+               l.setLayoutData(gd);
+               Composite editorComposite = new Composite(appearanceComposite, SWT.NONE);
+               layout = new GridLayout();
+               layout.numColumns = 2;
+               layout.marginHeight = 0;
+               layout.marginWidth = 0;
+               editorComposite.setLayout(layout);
+               gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL
+                               | GridData.FILL_VERTICAL);
+               gd.horizontalSpan = 2;
+               editorComposite.setLayoutData(gd);
+               fAppearanceColorList = new List(editorComposite, SWT.SINGLE
+                               | SWT.V_SCROLL | SWT.BORDER);
+               gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
+                               | GridData.FILL_HORIZONTAL);
+               gd.heightHint = convertHeightInCharsToPixels(8);
+               fAppearanceColorList.setLayoutData(gd);
+               Composite stylesComposite = new Composite(editorComposite, SWT.NONE);
+               layout = new GridLayout();
+               layout.marginHeight = 0;
+               layout.marginWidth = 0;
+               layout.numColumns = 2;
+               stylesComposite.setLayout(layout);
+               stylesComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+               l = new Label(stylesComposite, SWT.LEFT);
+               l.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.color")); //$NON-NLS-1$
+               gd = new GridData();
+               gd.horizontalAlignment = GridData.BEGINNING;
+               l.setLayoutData(gd);
+               fAppearanceColorEditor = new ColorEditor(stylesComposite);
+               Button foregroundColorButton = fAppearanceColorEditor.getButton();
+               gd = new GridData(GridData.FILL_HORIZONTAL);
+               gd.horizontalAlignment = GridData.BEGINNING;
+               foregroundColorButton.setLayoutData(gd);
+               fAppearanceColorList.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                               // do nothing
+                       }
+
+                       public void widgetSelected(SelectionEvent e) {
+                               handleAppearanceColorListSelection();
+                       }
+               });
+               foregroundColorButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                               // do nothing
+                       }
+
+                       public void widgetSelected(SelectionEvent e) {
+                               int i = fAppearanceColorList.getSelectionIndex();
+                               String key = fAppearanceColorListModel[i][1];
+                               PreferenceConverter.setValue(fOverlayStore, key,
+                                               fAppearanceColorEditor.getColorValue());
+                       }
+               });
+               return appearanceComposite;
+       }
+
+       // private Control createAnnotationsPage(Composite parent) {
+       // Composite composite = new Composite(parent, SWT.NULL);
+       // GridLayout layout = new GridLayout();
+       // layout.numColumns = 2;
+       // composite.setLayout(layout);
+       // String text = PreferencesMessages
+       // .getString("JavaEditorPreferencePage.analyseAnnotationsWhileTyping");
+       // //$NON-NLS-1$
+       // addCheckBox(composite, text,
+       // PreferenceConstants.EDITOR_EVALUTE_TEMPORARY_PROBLEMS, 0);
+       // text = PreferencesMessages
+       // .getString("JavaEditorPreferencePage.showQuickFixables"); //$NON-NLS-1$
+       // addCheckBox(composite, text,
+       // PreferenceConstants.EDITOR_CORRECTION_INDICATION, 0);
+       // addFiller(composite);
+       // Label label = new Label(composite, SWT.LEFT);
+       // label.setText(PreferencesMessages
+       // .getString("JavaEditorPreferencePage.annotationPresentationOptions"));
+       // //$NON-NLS-1$
+       // GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+       // gd.horizontalSpan = 2;
+       // label.setLayoutData(gd);
+       // Composite editorComposite = new Composite(composite, SWT.NONE);
+       // layout = new GridLayout();
+       // layout.numColumns = 2;
+       // layout.marginHeight = 0;
+       // layout.marginWidth = 0;
+       // editorComposite.setLayout(layout);
+       // gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL |
+       // GridData.FILL_VERTICAL);
+       // gd.horizontalSpan = 2;
+       // editorComposite.setLayoutData(gd);
+       // fAnnotationList = new List(editorComposite, SWT.SINGLE | SWT.V_SCROLL
+       // | SWT.BORDER);
+       // gd = new GridData(GridData.VERTICAL_ALIGN_BEGINNING
+       // | GridData.FILL_HORIZONTAL);
+       // gd.heightHint = convertHeightInCharsToPixels(10);
+       // fAnnotationList.setLayoutData(gd);
+       // Composite optionsComposite = new Composite(editorComposite, SWT.NONE);
+       // layout = new GridLayout();
+       // layout.marginHeight = 0;
+       // layout.marginWidth = 0;
+       // layout.numColumns = 2;
+       // optionsComposite.setLayout(layout);
+       // optionsComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
+       // fShowInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
+       // fShowInTextCheckBox.setText(PreferencesMessages
+       // .getString("JavaEditorPreferencePage.annotations.showInText"));
+       // //$NON-NLS-1$
+       // gd = new GridData(GridData.FILL_HORIZONTAL);
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // gd.horizontalSpan = 2;
+       // fShowInTextCheckBox.setLayoutData(gd);
+       // fDecorationStyleCombo = new Combo(optionsComposite, SWT.READ_ONLY);
+       // for (int i = 0; i < fAnnotationDecorationListModel.length; i++)
+       // fDecorationStyleCombo.add(fAnnotationDecorationListModel[i][0]);
+       // gd = new GridData(GridData.FILL_HORIZONTAL);
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // gd.horizontalSpan = 2;
+       // gd.horizontalIndent = 20;
+       // fDecorationStyleCombo.setLayoutData(gd);
+       // fHighlightInTextCheckBox = new Button(optionsComposite, SWT.CHECK);
+       // fHighlightInTextCheckBox.setText(PreferencesMessages
+       // .getString("TextEditorPreferencePage.annotations.highlightInText"));
+       // //$NON-NLS-1$
+       // gd = new GridData(GridData.FILL_HORIZONTAL);
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // gd.horizontalSpan = 2;
+       // fHighlightInTextCheckBox.setLayoutData(gd);
+       // fShowInOverviewRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
+       // fShowInOverviewRulerCheckBox.setText(PreferencesMessages
+       // .getString("JavaEditorPreferencePage.annotations.showInOverviewRuler"));
+       // //$NON-NLS-1$
+       // gd = new GridData(GridData.FILL_HORIZONTAL);
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // gd.horizontalSpan = 2;
+       // fShowInOverviewRulerCheckBox.setLayoutData(gd);
+       // fShowInVerticalRulerCheckBox = new Button(optionsComposite, SWT.CHECK);
+       // fShowInVerticalRulerCheckBox.setText(PreferencesMessages
+       // .getString("JavaEditorPreferencePage.annotations.showInVerticalRuler"));
+       // //$NON-NLS-1$
+       // gd = new GridData(GridData.FILL_HORIZONTAL);
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // gd.horizontalSpan = 2;
+       // fShowInVerticalRulerCheckBox.setLayoutData(gd);
+       // label = new Label(optionsComposite, SWT.LEFT);
+       // label.setText(PreferencesMessages
+       // .getString("JavaEditorPreferencePage.annotations.color")); //$NON-NLS-1$
+       // gd = new GridData();
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // label.setLayoutData(gd);
+       // fAnnotationForegroundColorEditor = new ColorEditor(optionsComposite);
+       // Button foregroundColorButton =
+       // fAnnotationForegroundColorEditor.getButton();
+       // gd = new GridData(GridData.FILL_HORIZONTAL);
+       // gd.horizontalAlignment = GridData.BEGINNING;
+       // foregroundColorButton.setLayoutData(gd);
+       // fAnnotationList.addSelectionListener(new SelectionListener() {
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // public void widgetSelected(SelectionEvent e) {
+       // handleAnnotationListSelection();
+       // }
+       // });
+       // fShowInTextCheckBox.addSelectionListener(new SelectionListener() {
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // public void widgetSelected(SelectionEvent e) {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][2];
+       // fOverlayStore.setValue(key, fShowInTextCheckBox.getSelection());
+       // String decorationKey = fAnnotationColorListModel[i][6];
+       // fDecorationStyleCombo.setEnabled(decorationKey != null
+       // && fShowInTextCheckBox.getSelection());
+       // }
+       // });
+       // fHighlightInTextCheckBox.addSelectionListener(new SelectionListener() {
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // public void widgetSelected(SelectionEvent e) {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][4];
+       // fOverlayStore.setValue(key, fHighlightInTextCheckBox.getSelection());
+       // }
+       // });
+       // fShowInOverviewRulerCheckBox.addSelectionListener(new SelectionListener()
+       // {
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // public void widgetSelected(SelectionEvent e) {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][3];
+       // fOverlayStore
+       // .setValue(key, fShowInOverviewRulerCheckBox.getSelection());
+       // }
+       // });
+       // fShowInVerticalRulerCheckBox.addSelectionListener(new SelectionListener()
+       // {
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // public void widgetSelected(SelectionEvent e) {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][5];
+       // fOverlayStore
+       // .setValue(key, fShowInVerticalRulerCheckBox.getSelection());
+       // }
+       // });
+       // foregroundColorButton.addSelectionListener(new SelectionListener() {
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // public void widgetSelected(SelectionEvent e) {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][1];
+       // PreferenceConverter.setValue(fOverlayStore, key,
+       // fAnnotationForegroundColorEditor.getColorValue());
+       // }
+       // });
+       // fDecorationStyleCombo.addSelectionListener(new SelectionListener() {
+       // /**
+       // * {@inheritdoc}
+       // */
+       // public void widgetDefaultSelected(SelectionEvent e) {
+       // // do nothing
+       // }
+       // /**
+       // * {@inheritdoc}
+       // */
+       // public void widgetSelected(SelectionEvent e) {
+       // int i = fAnnotationList.getSelectionIndex();
+       // String key = fAnnotationColorListModel[i][6];
+       // if (key != null) {
+       // for (int j = 0; j < fAnnotationDecorationListModel.length; j++) {
+       // if (fAnnotationDecorationListModel[j][0]
+       // .equals(fDecorationStyleCombo.getText())) {
+       // fOverlayStore.setValue(key, fAnnotationDecorationListModel[j][1]);
+       // break;
+       // }
+       // }
+       // }
+       // }
+       // });
+       // return composite;
+       // }
+//     private String[][] createAnnotationTypeListModel(
+//                     MarkerAnnotationPreferences preferences) {
+//             ArrayList listModelItems = new ArrayList();
+//             SortedSet sortedPreferences = new TreeSet(new Comparator() {
+//                     /*
+//                      * @see java.util.Comparator#compare(java.lang.Object,
+//                      *      java.lang.Object)
+//                      */
+//                     public int compare(Object o1, Object o2) {
+//                             if (!(o2 instanceof AnnotationPreference))
+//                                     return -1;
+//                             if (!(o1 instanceof AnnotationPreference))
+//                                     return 1;
+//                             AnnotationPreference a1 = (AnnotationPreference) o1;
+//                             AnnotationPreference a2 = (AnnotationPreference) o2;
+//                             return Collator.getInstance().compare(a1.getPreferenceLabel(),
+//                                             a2.getPreferenceLabel());
+//                     }
+//             });
+//             sortedPreferences.addAll(preferences.getAnnotationPreferences());
+//             Iterator e = sortedPreferences.iterator();
+//             while (e.hasNext()) {
+//                     AnnotationPreference info = (AnnotationPreference) e.next();
+//                     listModelItems.add(new String[] { info.getPreferenceLabel(),
+//                                     info.getColorPreferenceKey(), info.getTextPreferenceKey(),
+//                                     info.getOverviewRulerPreferenceKey(),
+//                                     info.getHighlightPreferenceKey(),
+//                                     info.getVerticalRulerPreferenceKey(),
+//                                     info.getTextStylePreferenceKey() });
+//             }
+//             String[][] items = new String[listModelItems.size()][];
+//             listModelItems.toArray(items);
+//             return items;
+//     }
+
+       private Control createTypingPage(Composite parent) {
+               Composite composite = new Composite(parent, SWT.NONE);
+               GridLayout layout = new GridLayout();
+               layout.numColumns = 1;
+               composite.setLayout(layout);
+               String label;
+               // label = PreferencesMessages
+               // .getString("JavaEditorPreferencePage.overwriteMode");
+               // //$NON-NLS-1$
+               // addCheckBox(composite, label,
+               // PreferenceConstants.EDITOR_DISABLE_OVERWRITE_MODE, 1);
+               // addFiller(composite);
+               //
+               // label = PreferencesMessages
+               // .getString("JavaEditorPreferencePage.smartHomeEnd");
+               // //$NON-NLS-1$
+               // addCheckBox(composite, label,
+               // PreferenceConstants.EDITOR_SMART_HOME_END, 1);
+               //
+               // label = PreferencesMessages
+               // .getString("JavaEditorPreferencePage.subWordNavigation");
+               // //$NON-NLS-1$
+               // addCheckBox(composite, label,
+               // PreferenceConstants.EDITOR_SUB_WORD_NAVIGATION, 1);
+               // addFiller(composite);
+               Group group = new Group(composite, SWT.NONE);
+               layout = new GridLayout();
+               layout.numColumns = 2;
+               group.setLayout(layout);
+               group.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.typing.description")); //$NON-NLS-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.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$
+               button = 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);
+
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.insertSpaceForTabs");
+               //$NON-NLS-1$
+               addCheckBox(group, label, PreferenceConstants.EDITOR_SPACES_FOR_TABS, 1);
+
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.closeStringsDQ");
+               //$NON-NLS-1$
+               addCheckBox(group, label,
+                               PreferenceConstants.EDITOR_CLOSE_STRINGS_DQ_PHP, 1);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.closeStringsSQ");
+               //$NON-NLS-1$
+               addCheckBox(group, label,
+                               PreferenceConstants.EDITOR_CLOSE_STRINGS_SQ_PHP, 1);
+
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.closeBrackets");
+               //$NON-NLS-1$
+               addCheckBox(group, label,
+                               PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP, 1);
+
+               // label = PreferencesMessages
+               // .getString("JavaEditorPreferencePage.closeBraces");
+               // //$NON-NLS-1$
+               // addCheckBox(group, label, PreferenceConstants.EDITOR_CLOSE_BRACES,
+               // 1);
+
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.closeJavaDocs");
+               //$NON-NLS-1$
+               button = addCheckBox(group, label,
+                               PreferenceConstants.EDITOR_CLOSE_JAVADOCS, 1);
+               label = PreferencesMessages
+                               .getString("JavaEditorPreferencePage.formatJavaDocs");
+               //$NON-NLS-1$
+               button = addCheckBox(group, label,
+                               PreferenceConstants.EDITOR_FORMAT_JAVADOCS, 1);
+
+               //
+               // label = PreferencesMessages
+               // .getString("JavaEditorPreferencePage.addJavaDocTags");
+               // //$NON-NLS-1$
+               // fAddJavaDocTagsButton = addCheckBox(group, label,
+               // PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS, 1);
+               // createDependency(button, fAddJavaDocTagsButton);
+               return composite;
+       }
+
+//     private void addFiller(Composite composite) {
+//             Label filler = new Label(composite, SWT.LEFT);
+//             GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_FILL);
+//             gd.horizontalSpan = 2;
+//             gd.heightHint = convertHeightInCharsToPixels(1) / 2;
+//             filler.setLayoutData(gd);
+//     }
+
+       private static void indent(Control control) {
+               GridData gridData = new GridData();
+               gridData.horizontalIndent = 20;
+               control.setLayoutData(gridData);
+       }
+
+       private static void createDependency(final Button master,
+                       final Control slave) {
+               indent(slave);
+               master.addSelectionListener(new SelectionListener() {
+                       public void widgetSelected(SelectionEvent e) {
+                               slave.setEnabled(master.getSelection());
+                       }
+
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+               });
+       }
+
+//     private void addCompletionRadioButtons(Composite contentAssistComposite) {
+//             Composite completionComposite = new Composite(contentAssistComposite,
+//                             SWT.NONE);
+//             GridData ccgd = new GridData();
+//             ccgd.horizontalSpan = 2;
+//             completionComposite.setLayoutData(ccgd);
+//             GridLayout ccgl = new GridLayout();
+//             ccgl.marginWidth = 0;
+//             ccgl.numColumns = 2;
+//             completionComposite.setLayout(ccgl);
+//             // SelectionListener completionSelectionListener= new SelectionAdapter()
+//             // {
+//             // public void widgetSelected(SelectionEvent e) {
+//             // boolean insert= fCompletionInsertsRadioButton.getSelection();
+//             // fOverlayStore.setValue(PreferenceConstants.CODEASSIST_INSERT_COMPLETION,
+//             // insert);
+//             // }
+//             // };
+//             //
+//             // fCompletionInsertsRadioButton= new Button(completionComposite,
+//             // SWT.RADIO
+//             // | SWT.LEFT);
+//             // fCompletionInsertsRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionInserts"));
+//             // //$NON-NLS-1$
+//             // fCompletionInsertsRadioButton.setLayoutData(new GridData());
+//             // fCompletionInsertsRadioButton.addSelectionListener(completionSelectionListener);
+//             //
+//             // fCompletionOverwritesRadioButton= new Button(completionComposite,
+//             // SWT.RADIO | SWT.LEFT);
+//             // fCompletionOverwritesRadioButton.setText(PreferencesMessages.getString("JavaEditorPreferencePage.completionOverwrites"));
+//             // //$NON-NLS-1$
+//             // fCompletionOverwritesRadioButton.setLayoutData(new GridData());
+//             // fCompletionOverwritesRadioButton.addSelectionListener(completionSelectionListener);
+//     }
+
+       private Control createNavigationPage(Composite parent) {
+               Composite composite = new Composite(parent, SWT.NULL);
+               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();
+                                       }
+                               });
+               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);
+               }
+       }
+
+//     private IStatus getBrowserLikeLinksKeyModifierStatus() {
+//             if (fBrowserLikeLinksKeyModifierStatus == null)
+//                     fBrowserLikeLinksKeyModifierStatus = new StatusInfo();
+//             return fBrowserLikeLinksKeyModifierStatus;
+//     }
+
+       /**
+        * Computes the state mask for the given modifier string.
+        * 
+        * @param modifiers
+        *            the string with the modifiers, separated by '+', '-', ';', ','
+        *            or '.'
+        * @return the state mask or -1 if the input is invalid
+        */
+       private int computeStateMask(String modifiers) {
+               if (modifiers == null)
+                       return -1;
+               if (modifiers.length() == 0)
+                       return SWT.NONE;
+               int stateMask = 0;
+               StringTokenizer modifierTokenizer = new StringTokenizer(modifiers,
+                               ",;.:+-* "); //$NON-NLS-1$
+               while (modifierTokenizer.hasMoreTokens()) {
+                       int modifier = EditorUtility
+                                       .findLocalizedModifier(modifierTokenizer.nextToken());
+                       if (modifier == 0 || (stateMask & modifier) == modifier)
+                               return -1;
+                       stateMask = stateMask | modifier;
+               }
+               return stateMask;
+       }
+
+       /*
+        * @see PreferencePage#createContents(Composite)
+        */
+       protected Control createContents(Composite parent) {
+               initializeDefaultColors();
+               fFoldingConfigurationBlock = new FoldingConfigurationBlock(
+                               fOverlayStore);
+               fOverlayStore.load();
+               fOverlayStore.start();
+               TabFolder folder = new TabFolder(parent, SWT.NONE);
+               folder.setLayout(new TabFolderLayout());
+               folder.setLayoutData(new GridData(GridData.FILL_BOTH));
+               TabItem item = new TabItem(folder, SWT.NONE);
+               item.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.general")); //$NON-NLS-1$
+               item.setControl(createAppearancePage(folder));
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.colors")); //$NON-NLS-1$
+               item.setControl(createSyntaxPage(folder));
+
+               // item = new TabItem(folder, SWT.NONE);
+               // item.setText(PreferencesMessages
+               // .getString("JavaEditorPreferencePage.annotationsTab.title"));
+               // //$NON-NLS-1$
+               // item.setControl(createAnnotationsPage(folder));
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.typing.tabTitle"));
+               //$NON-NLS-1$
+               item.setControl(createTypingPage(folder));
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(PreferencesMessages
+                               .getString("JavaEditorPreferencePage.hoverTab.title"));
+               //$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"));
+               // //$NON-NLS-1$
+               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));
+
+               initialize();
+               Dialog.applyDialogFont(folder);
+               return folder;
+       }
+
+       private void initialize() {
+               initializeFields();
+               for (int i = 0; i < fSyntaxColorListModel.length; i++)
+                       fSyntaxColorList.add(fSyntaxColorListModel[i][0]);
+               fSyntaxColorList.getDisplay().asyncExec(new Runnable() {
+                       public void run() {
+                               if (fSyntaxColorList != null && !fSyntaxColorList.isDisposed()) {
+                                       fSyntaxColorList.select(0);
+                                       handleSyntaxColorListSelection();
+                               }
+                       }
+               });
+               for (int i = 0; i < fAppearanceColorListModel.length; i++)
+                       fAppearanceColorList.add(fAppearanceColorListModel[i][0]);
+               fAppearanceColorList.getDisplay().asyncExec(new Runnable() {
+                       public void run() {
+                               if (fAppearanceColorList != null
+                                               && !fAppearanceColorList.isDisposed()) {
+                                       fAppearanceColorList.select(0);
+                                       handleAppearanceColorListSelection();
+                               }
+                       }
+               });
+               // for (int i = 0; i < fAnnotationColorListModel.length; i++)
+               // fAnnotationList.add(fAnnotationColorListModel[i][0]);
+               // fAnnotationList.getDisplay().asyncExec(new Runnable() {
+               // public void run() {
+               // if (fAnnotationList != null && !fAnnotationList.isDisposed()) {
+               // fAnnotationList.select(0);
+               // handleAnnotationListSelection();
+               // }
+               // }
+               // });
+               // for (int i= 0; i < fContentAssistColorListModel.length; i++)
+               // fContentAssistColorList.add(fContentAssistColorListModel[i][0]);
+               // fContentAssistColorList.getDisplay().asyncExec(new Runnable() {
+               // public void run() {
+               // if (fContentAssistColorList != null &&
+               // !fContentAssistColorList.isDisposed()) {
+               // fContentAssistColorList.select(0);
+               // handleContentAssistColorListSelection();
+               // }
+               // }
+               // });
+               fFoldingConfigurationBlock.initialize();
+       }
+
+       private void initializeFields() {
+               Iterator e = fColorButtons.keySet().iterator();
+               while (e.hasNext()) {
+                       ColorEditor c = (ColorEditor) e.next();
+                       String key = (String) fColorButtons.get(c);
+                       RGB rgb = PreferenceConverter.getColor(fOverlayStore, key);
+                       c.setColorValue(rgb);
+               }
+               e = fCheckBoxes.keySet().iterator();
+               while (e.hasNext()) {
+                       Button b = (Button) e.next();
+                       String key = (String) fCheckBoxes.get(b);
+                       b.setSelection(fOverlayStore.getBoolean(key));
+               }
+               e = fTextFields.keySet().iterator();
+               while (e.hasNext()) {
+                       Text t = (Text) e.next();
+                       String key = (String) fTextFields.get(t);
+                       t.setText(fOverlayStore.getString(key));
+               }
+               RGB rgb = PreferenceConverter.getColor(fOverlayStore,
+                               PreferenceConstants.EDITOR_BACKGROUND_COLOR);
+               fBackgroundColorEditor.setColorValue(rgb);
+               boolean default_ = fOverlayStore
+                               .getBoolean(PreferenceConstants.EDITOR_BACKGROUND_DEFAULT_COLOR);
+               fBackgroundDefaultRadioButton.setSelection(default_);
+               fBackgroundCustomRadioButton.setSelection(!default_);
+               fBackgroundColorButton.setEnabled(!default_);
+//             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);
+               // boolean completionInserts=
+               // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_INSERT_COMPLETION);
+               // fCompletionInsertsRadioButton.setSelection(completionInserts);
+               // fCompletionOverwritesRadioButton.setSelection(! completionInserts);
+               //
+               fBrowserLikeLinksKeyModifierText.setEnabled(fBrowserLikeLinksCheckBox
+                               .getSelection());
+               // boolean markOccurrences=
+               // fOverlayStore.getBoolean(PreferenceConstants.EDITOR_MARK_OCCURRENCES);
+               // fStickyOccurrencesButton.setEnabled(markOccurrences);
+               updateAutoactivationControls();
+       }
+
+       private void initializeDefaultColors() {
+               if (!getPreferenceStore().contains(
+                               PreferenceConstants.EDITOR_BACKGROUND_COLOR)) {
+                       RGB rgb = getControl().getDisplay().getSystemColor(
+                                       SWT.COLOR_LIST_BACKGROUND).getRGB();
+                       PreferenceConverter.setDefault(fOverlayStore,
+                                       PreferenceConstants.EDITOR_BACKGROUND_COLOR, rgb);
+                       PreferenceConverter.setDefault(getPreferenceStore(),
+                                       PreferenceConstants.EDITOR_BACKGROUND_COLOR, rgb);
+               }
+               if (!getPreferenceStore().contains(
+                               PreferenceConstants.EDITOR_FOREGROUND_COLOR)) {
+                       RGB rgb = getControl().getDisplay().getSystemColor(
+                                       SWT.COLOR_LIST_FOREGROUND).getRGB();
+                       PreferenceConverter.setDefault(fOverlayStore,
+                                       PreferenceConstants.EDITOR_FOREGROUND_COLOR, rgb);
+                       PreferenceConverter.setDefault(getPreferenceStore(),
+                                       PreferenceConstants.EDITOR_FOREGROUND_COLOR, rgb);
+               }
+       }
+
+       private void updateAutoactivationControls() {
+               // boolean autoactivation=
+               // fOverlayStore.getBoolean(PreferenceConstants.CODEASSIST_AUTOACTIVATION);
+               // fAutoInsertDelayText.setEnabled(autoactivation);
+               // fAutoInsertDelayLabel.setEnabled(autoactivation);
+               // fAutoInsertJavaTriggerText.setEnabled(autoactivation);
+               // fAutoInsertJavaTriggerLabel.setEnabled(autoactivation);
+               //
+               // fAutoInsertJavaDocTriggerText.setEnabled(autoactivation);
+               // fAutoInsertJavaDocTriggerLabel.setEnabled(autoactivation);
+       }
+
+       /*
+        * @see PreferencePage#performOk()
+        */
+       public boolean performOk() {
+               // fJavaEditorHoverConfigurationBlock.performOk();
+               fFoldingConfigurationBlock.performOk();
+               fOverlayStore
+                               .setValue(
+                                               PreferenceConstants.EDITOR_BROWSER_LIKE_LINKS_KEY_MODIFIER_MASK,
+                                               computeStateMask(fBrowserLikeLinksKeyModifierText
+                                                               .getText()));
+               fOverlayStore.propagate();
+               PHPeclipsePlugin.getDefault().savePluginPreferences();
+               return true;
+       }
+
+       /*
+        * @see PreferencePage#performDefaults()
+        */
+       protected void performDefaults() {
+               fOverlayStore.loadDefaults();
+               initializeFields();
+               handleSyntaxColorListSelection();
+               handleAppearanceColorListSelection();
+               // handleAnnotationListSelection();
+               // handleContentAssistColorListSelection();
+               // fJavaEditorHoverConfigurationBlock.performDefaults();
+               fFoldingConfigurationBlock.performDefaults();
+               super.performDefaults();
+               fPreviewViewer.invalidateTextPresentation();
+       }
+
+       /*
+        * @see DialogPage#dispose()
+        */
+       public void dispose() {
+               fFoldingConfigurationBlock.dispose();
+
+               if (fJavaTextTools != null) {
+                       fJavaTextTools.dispose();
+                       fJavaTextTools = null;
+               }
+               if (fOverlayStore != null) {
+                       fOverlayStore.stop();
+                       fOverlayStore = null;
+               }
+               if (fBackgroundColor != null && !fBackgroundColor.isDisposed())
+                       fBackgroundColor.dispose();
+               super.dispose();
+       }
+
+       private Button addCheckBox(Composite parent, String label, String key,
+                       int indentation) {
+               Button checkBox = new Button(parent, SWT.CHECK);
+               checkBox.setText(label);
+               GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+               gd.horizontalIndent = indentation;
+               gd.horizontalSpan = 2;
+               checkBox.setLayoutData(gd);
+               checkBox.addSelectionListener(fCheckBoxListener);
+               fCheckBoxes.put(checkBox, key);
+               return checkBox;
+       }
+
+       private Text addTextField(Composite composite, String label, String key,
+                       int textLimit, int indentation, boolean isNumber) {
+               return getTextControl(addLabelledTextField(composite, label, key,
+                               textLimit, indentation, isNumber));
+       }
+
+//     private static Label getLabelControl(Control[] labelledTextField) {
+//             return (Label) labelledTextField[0];
+//     }
+
+       private static Text getTextControl(Control[] labelledTextField) {
+               return (Text) labelledTextField[1];
+       }
+
+       /**
+        * Returns an array of size 2: - first element is of type <code>Label</code>-
+        * second element is of type <code>Text</code> Use
+        * <code>getLabelControl</code> and <code>getTextControl</code> to get
+        * the 2 controls.
+        */
+       private Control[] addLabelledTextField(Composite composite, String label,
+                       String key, int textLimit, int indentation, boolean isNumber) {
+               Label labelControl = new Label(composite, SWT.NONE);
+               labelControl.setText(label);
+               GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+               gd.horizontalIndent = indentation;
+               labelControl.setLayoutData(gd);
+               Text textControl = new Text(composite, SWT.BORDER | SWT.SINGLE);
+               gd = new GridData(GridData.HORIZONTAL_ALIGN_BEGINNING);
+               gd.widthHint = convertWidthInCharsToPixels(textLimit + 1);
+               textControl.setLayoutData(gd);
+               textControl.setTextLimit(textLimit);
+               fTextFields.put(textControl, key);
+               if (isNumber) {
+                       fNumberFields.add(textControl);
+                       textControl.setText("0");
+                       textControl.addModifyListener(fNumberFieldListener);
+               } else {
+                       textControl.addModifyListener(fTextFieldListener);
+               }
+               return new Control[] { labelControl, textControl };
+       }
+
+       private String loadPreviewContentFromFile(String filename) {
+               String line;
+               String separator = System.getProperty("line.separator"); //$NON-NLS-1$
+               StringBuffer buffer = new StringBuffer(512);
+               BufferedReader reader = null;
+               try {
+                       reader = new BufferedReader(new InputStreamReader(getClass()
+                                       .getResourceAsStream(filename)));
+                       while ((line = reader.readLine()) != null) {
+                               buffer.append(line);
+                               buffer.append(separator);
+                       }
+               } catch (IOException io) {
+                       PHPeclipsePlugin.log(io);
+               } finally {
+                       if (reader != null) {
+                               try {
+                                       reader.close();
+                               } catch (IOException e) {
+                               }
+                       }
+               }
+               return buffer.toString();
+       }
+
+       private void numberFieldChanged(Text textControl) {
+               String number = textControl.getText();
+               IStatus status = validatePositiveNumber(number);
+               if (!status.matches(IStatus.ERROR))
+                       fOverlayStore.setValue((String) fTextFields.get(textControl),
+                                       number);
+               updateStatus(status);
+       }
+
+       private IStatus validatePositiveNumber(String number) {
+               StatusInfo status = new StatusInfo();
+               if (number.length() == 0) {
+                       status.setError(PreferencesMessages
+                                       .getString("JavaEditorPreferencePage.empty_input")); //$NON-NLS-1$
+               } else {
+                       try {
+                               int value = Integer.parseInt(number);
+                               if (value < 0)
+                                       status.setError(PreferencesMessages.getFormattedString(
+                                                       "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
+                       } catch (NumberFormatException e) {
+                               status.setError(PreferencesMessages.getFormattedString(
+                                               "JavaEditorPreferencePage.invalid_input", number)); //$NON-NLS-1$
+                       }
+               }
+               return status;
+       }
+
+       void updateStatus(IStatus status) {
+               if (!status.matches(IStatus.ERROR)) {
+                       for (int i = 0; i < fNumberFields.size(); i++) {
+                               Text text = (Text) fNumberFields.get(i);
+                               IStatus s = validatePositiveNumber(text.getText());
+                               status = StatusUtil.getMoreSevere(s, status);
+                       }
+               }
+               // status=
+               // StatusUtil.getMoreSevere(fJavaEditorHoverConfigurationBlock.getStatus(),
+               // status);
+               // status=
+               // StatusUtil.getMoreSevere(getBrowserLikeLinksKeyModifierStatus(),
+               // status);
+               setValid(!status.matches(IStatus.ERROR));
+               StatusUtil.applyToStatusLine(this, status);
+       }
+}
\ No newline at end of file