intial source from ttp://www.sf.net/projects/wdte
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.css.ui / src / net / sourceforge / phpeclipse / css / ui / internal / preferences / CssEditorPreferencePage.java
diff --git a/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/CssEditorPreferencePage.java b/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/CssEditorPreferencePage.java
new file mode 100644 (file)
index 0000000..8b5ae6d
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2003-2004 Christopher Lenz 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:
+ *     Christopher Lenz - initial API and implementation
+ * 
+ * $Id: CssEditorPreferencePage.java,v 1.1 2004-09-02 18:11:50 jsurfer Exp $
+ */
+
+package net.sourceforge.phpeclipse.css.ui.internal.preferences;
+
+import java.util.Iterator;
+
+import net.sourceforge.phpeclipse.css.ui.CssUI;
+import net.sourceforge.phpeclipse.css.ui.internal.CssUIMessages;
+import net.sourceforge.phpeclipse.css.ui.internal.CssUIPreferences;
+
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.TabFolder;
+import org.eclipse.swt.widgets.TabItem;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.texteditor.AnnotationPreference;
+import org.eclipse.ui.texteditor.MarkerAnnotationPreferences;
+
+/**
+ * Implements the CSS editor preference page.
+ */
+public class CssEditorPreferencePage extends PreferencePage
+       implements IWorkbenchPreferencePage {
+
+       // Instance Variables ------------------------------------------------------
+
+       private OverlayPreferenceStore overlayStore;
+
+       private CssEditorAppearanceConfigurationBlock appearanceBlock;
+       private CssEditorSyntaxConfigurationBlock syntaxBlock;
+       private CssEditorContentAssistConfigurationBlock contentAssistBlock;
+       private CssEditorAnnotationsConfigurationBlock annotationsBlock;
+       private CssEditorTypingConfigurationBlock typingBlock;
+
+       // PreferencePage Implementation -------------------------------------------
+
+       /**
+        * @see PreferencePage#createContents(Composite)
+        */
+       protected Control createContents(Composite parent) {
+
+               TabFolder folder = new TabFolder(parent, SWT.NONE);
+               TabItem item;
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(getString("appearance")); //$NON-NLS-1$
+               item.setControl(createAppearancePage(folder));
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(getString("syntax")); //$NON-NLS-1$
+               item.setControl(createSyntaxPage(folder));
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(getString("contentAssist")); //$NON-NLS-1$
+               item.setControl(createCodeAssistPage(folder));
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(getString("annotations")); //$NON-NLS-1$
+               item.setControl(createAnnotationsPage(folder));
+
+               item = new TabItem(folder, SWT.NONE);
+               item.setText(getString("typing")); //$NON-NLS-1$
+               item.setControl(createTypingPage(folder));
+
+               return folder;
+       }
+
+       /**
+        * @see PreferencePage#dispose()
+        */
+       public void dispose() {
+               if (overlayStore != null) {
+                       overlayStore.stopListening();
+                       overlayStore = null;
+               }
+               super.dispose();
+       }
+
+       /**
+        * @see PreferencePage#performOk()
+        */
+       public boolean performOk() {
+               overlayStore.propagate();
+               CssUI.getDefault().savePluginPreferences();
+               return true;
+       }
+
+       /**
+        * @see PreferencePage#performDefaults()
+        */
+       protected void performDefaults() {
+               overlayStore.loadDefaults();
+               super.performDefaults();
+       }
+       
+       // IWorkbenchPreferencePage Implementation ---------------------------------
+
+       /**
+        * @see IWorkbenchPreferencePage#init(IWorkbench)
+        */
+       public void init(IWorkbench workbench) {
+               setDescription(getString("description")); //$NON-NLS-1$
+               setPreferenceStore(CssUI.getDefault().getPreferenceStore());
+
+               MarkerAnnotationPreferences preferences =
+                       new MarkerAnnotationPreferences();
+               overlayStore = createOverlayStore(preferences);
+               overlayStore.load();
+               overlayStore.startListening();
+       }
+
+       // Private Methods ---------------------------------------------------------
+
+       private OverlayPreferenceStore createOverlayStore(
+               MarkerAnnotationPreferences preferences) {
+
+               OverlayPreferenceStore store = 
+                       new OverlayPreferenceStore(getPreferenceStore());
+
+               Iterator e = preferences.getAnnotationPreferences().iterator();
+               while (e.hasNext()) {
+                       AnnotationPreference info = (AnnotationPreference) e.next();
+                       store.addStringKey(info.getColorPreferenceKey());
+                       store.addBooleanKey(info.getTextPreferenceKey());
+                       store.addBooleanKey(info.getOverviewRulerPreferenceKey());
+               }
+
+               // Appearance
+               store.addIntKey(CssUIPreferences.EDITOR_TAB_WIDTH);
+               store.addBooleanKey(CssUIPreferences.EDITOR_CURRENT_LINE);
+               store.addStringKey(CssUIPreferences.EDITOR_CURRENT_LINE_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_MATCHING_BRACKETS);
+               store.addStringKey(CssUIPreferences.EDITOR_MATCHING_BRACKETS_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_PRINT_MARGIN);
+               store.addStringKey(CssUIPreferences.EDITOR_PRINT_MARGIN_COLOR);
+               store.addIntKey(CssUIPreferences.EDITOR_PRINT_MARGIN_COLUMN);
+               store.addBooleanKey(CssUIPreferences.EDITOR_OVERVIEW_RULER);
+               store.addStringKey(CssUIPreferences.EDITOR_LINE_NUMBER_RULER_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_LINE_NUMBER_RULER);
+
+               // Syntax coloring
+               store.addStringKey(CssUIPreferences.EDITOR_FOREGROUND_COLOR);
+               store.addBooleanKey(
+                       CssUIPreferences.EDITOR_FOREGROUND_DEFAULT_COLOR);
+               store.addStringKey(CssUIPreferences.EDITOR_BACKGROUND_COLOR);
+               store.addBooleanKey(
+                       CssUIPreferences.EDITOR_BACKGROUND_DEFAULT_COLOR);
+               store.addStringKey(CssUIPreferences.EDITOR_COMMENT_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_COMMENT_BOLD);
+               store.addStringKey(CssUIPreferences.EDITOR_STRING_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_STRING_BOLD);
+               store.addStringKey(CssUIPreferences.EDITOR_PROPERTY_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_PROPERTY_BOLD);
+               store.addStringKey(CssUIPreferences.EDITOR_AT_KEYWORD_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_AT_KEYWORD_BOLD);
+               store.addStringKey(CssUIPreferences.EDITOR_PSEUDO_CLASS_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_PSEUDO_CLASS_BOLD);
+               store.addStringKey(CssUIPreferences.EDITOR_DEFAULT_COLOR);
+               store.addBooleanKey(CssUIPreferences.EDITOR_DEFAULT_BOLD);
+
+               // Content assist
+               store.addBooleanKey(CssUIPreferences.CONTENTASSIST_AUTOINSERT);
+               store.addBooleanKey(CssUIPreferences.CONTENTASSIST_ORDER_PROPOSALS);
+               store.addBooleanKey(CssUIPreferences.CONTENTASSIST_AUTOACTIVATION);
+               store.addIntKey(
+                       CssUIPreferences.CONTENTASSIST_AUTOACTIVATION_DELAY);
+               store.addStringKey(
+                       CssUIPreferences.CONTENTASSIST_AUTOACTIVATION_TRIGGERS);
+               store.addStringKey(
+                       CssUIPreferences.CONTENTASSIST_PROPOSALS_BACKGROUND);
+               store.addStringKey(
+                       CssUIPreferences.CONTENTASSIST_PROPOSALS_FOREGROUND);
+
+               // Typing
+               store.addBooleanKey(CssUIPreferences.EDITOR_SPACES_FOR_TABS);
+               store.addBooleanKey(CssUIPreferences.EDITOR_CLOSE_STRINGS);
+               store.addBooleanKey(
+                       CssUIPreferences.EDITOR_CLOSE_BRACKETS_AND_PARENS);
+               store.addBooleanKey(CssUIPreferences.EDITOR_CLOSE_BRACES);
+
+               return store;
+       }
+       
+       private Control createAppearancePage(Composite parent) {
+               appearanceBlock =
+                       new CssEditorAppearanceConfigurationBlock(overlayStore); 
+               return appearanceBlock.createControl(parent);
+       }
+
+       private Control createSyntaxPage(Composite parent) {
+               syntaxBlock = new CssEditorSyntaxConfigurationBlock(overlayStore); 
+               return syntaxBlock.createControl(parent);
+       }
+
+       private Control createCodeAssistPage(Composite parent) {
+               contentAssistBlock =
+                       new CssEditorContentAssistConfigurationBlock(overlayStore);
+               return contentAssistBlock.createControl(parent);
+       }
+
+       private Control createAnnotationsPage(Composite parent) {
+               annotationsBlock =
+                       new CssEditorAnnotationsConfigurationBlock(overlayStore); 
+               return annotationsBlock.createControl(parent);
+       }
+
+       private Control createTypingPage(Composite parent) {
+               typingBlock = new CssEditorTypingConfigurationBlock(overlayStore); 
+               return typingBlock.createControl(parent);
+       }
+
+       private static String getString(String key) {
+               return CssUIMessages.getString(
+                       "CssEditorPreferencePage." + key); //$NON-NLS-1$
+       }
+
+}