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 / CssEditorSyntaxConfigurationBlock.java
diff --git a/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/CssEditorSyntaxConfigurationBlock.java b/archive/net.sourceforge.phpeclipse.css.ui/src/net/sourceforge/phpeclipse/css/ui/internal/preferences/CssEditorSyntaxConfigurationBlock.java
new file mode 100644 (file)
index 0000000..fb1e101
--- /dev/null
@@ -0,0 +1,255 @@
+/*
+ * 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: CssEditorSyntaxConfigurationBlock.java,v 1.1 2004-09-02 18:11:50 jsurfer Exp $
+ */
+
+package net.sourceforge.phpeclipse.css.ui.internal.preferences;
+
+import net.sourceforge.phpeclipse.css.ui.internal.CssUIMessages;
+import net.sourceforge.phpeclipse.css.ui.internal.CssUIPreferences;
+
+import org.eclipse.jface.preference.ColorSelector;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+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.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Group;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.List;
+
+/**
+ * 
+ */
+final class CssEditorSyntaxConfigurationBlock
+       extends AbstractConfigurationBlock {
+
+       // Instance Variables ------------------------------------------------------
+
+       private Button fBackgroundDefaultRadioButton;
+       private Button fBackgroundCustomRadioButton;
+       private ColorSelector fBackgroundColorSelector;
+       private List fColorList;
+       private final String[][] fColorListModel = new String[][] {
+               { getString("commentColor"), //$NON-NLS-1$
+                 CssUIPreferences.EDITOR_COMMENT_COLOR,
+                 CssUIPreferences.EDITOR_COMMENT_BOLD },
+               { getString("stringColor"), //$NON-NLS-1$
+                 CssUIPreferences.EDITOR_STRING_COLOR,
+                 CssUIPreferences.EDITOR_STRING_BOLD },
+               { getString("propertyNameColor"), //$NON-NLS-1$
+                 CssUIPreferences.EDITOR_PROPERTY_COLOR,
+                 CssUIPreferences.EDITOR_PROPERTY_BOLD },
+               { getString("atKeywordColor"), //$NON-NLS-1$
+                 CssUIPreferences.EDITOR_AT_KEYWORD_COLOR,
+                 CssUIPreferences.EDITOR_AT_KEYWORD_BOLD },
+               { getString("pseudoClassColor"), //$NON-NLS-1$
+                 CssUIPreferences.EDITOR_PSEUDO_CLASS_COLOR,
+                 CssUIPreferences.EDITOR_PSEUDO_CLASS_BOLD },
+               { getString("defaultColor"), //$NON-NLS-1$
+                 CssUIPreferences.EDITOR_DEFAULT_COLOR,
+                 CssUIPreferences.EDITOR_DEFAULT_BOLD },
+       };
+       private ColorSelector fColorSelector;
+       private Button fBoldCheckbox;
+
+       // Constructors ------------------------------------------------------------
+
+       public CssEditorSyntaxConfigurationBlock(IPreferenceStore store) {
+               super(store);
+       }
+
+       // Public Methods ----------------------------------------------------------
+
+       public Control createControl(Composite parent) {
+
+               Composite composite = new Composite(parent, SWT.NONE);
+               composite.setLayout(new GridLayout());
+
+               Group backgroundComposite = new Group(composite, SWT.SHADOW_ETCHED_IN);
+               backgroundComposite.setLayout(new RowLayout());
+               backgroundComposite.setText(getString("backgroundColor")); //$NON-NLS-1$
+               SelectionListener backgroundSelectionListener =
+                       new SelectionListener() {
+                               public void widgetSelected(SelectionEvent e) {                          
+                                       boolean custom =
+                                               fBackgroundCustomRadioButton.getSelection();
+                                       fBackgroundColorSelector.setEnabled(custom);
+                                       getPreferenceStore().setValue(
+                                               CssUIPreferences.EDITOR_BACKGROUND_DEFAULT_COLOR,
+                                               !custom);
+                               }
+                               public void widgetDefaultSelected(SelectionEvent e) { }
+                       };
+               fBackgroundDefaultRadioButton = new Button(backgroundComposite,
+                       SWT.RADIO | SWT.LEFT);
+               fBackgroundDefaultRadioButton.setText(getString(
+                       "backgroundColorSystemDefault")); //$NON-NLS-1$
+               fBackgroundDefaultRadioButton.addSelectionListener(
+                       backgroundSelectionListener);
+               fBackgroundCustomRadioButton = new Button(backgroundComposite,
+                       SWT.RADIO | SWT.LEFT);
+               fBackgroundCustomRadioButton.setText(getString(
+                       "backgroundColorCustom")); //$NON-NLS-1$
+               fBackgroundCustomRadioButton.addSelectionListener(
+                       backgroundSelectionListener);
+
+               fBackgroundColorSelector = new ColorSelector(backgroundComposite);
+               Button backgroundColorButton = fBackgroundColorSelector.getButton();
+               backgroundColorButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) { }
+                       public void widgetSelected(SelectionEvent e) {
+                               PreferenceConverter.setValue(getPreferenceStore(),
+                                       CssUIPreferences.EDITOR_BACKGROUND_COLOR,
+                                       fBackgroundColorSelector.getColorValue());
+                       }
+               });
+
+               Label label = new Label(composite, SWT.LEFT);
+               label.setText(getString("foregroundColor")); //$NON-NLS-1$
+               label.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+               Composite editorComposite = new Composite(composite, SWT.NONE);
+               GridLayout layout = new GridLayout();
+               layout.numColumns = 2;
+               layout.marginHeight = 0;
+               layout.marginWidth = 0;
+               editorComposite.setLayout(layout);
+               GridData gridData = new GridData(GridData.FILL_BOTH);
+               editorComposite.setLayoutData(gridData);          
+
+               fColorList = new List(editorComposite,
+                       SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER);
+               gridData = new GridData(GridData.FILL_BOTH);
+               gridData.heightHint = convertHeightInCharsToPixels(composite, 5);
+               fColorList.setLayoutData(gridData);
+               fColorList.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               handleSyntaxColorListSelection();
+                       }
+               });
+
+               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(getString("color")); //$NON-NLS-1$
+               gridData = new GridData();
+               gridData.horizontalAlignment = GridData.BEGINNING;
+               label.setLayoutData(gridData);
+
+               fColorSelector = new ColorSelector(stylesComposite);
+               Button foregroundColorButton = fColorSelector.getButton();
+               gridData = new GridData(GridData.FILL_HORIZONTAL);
+               gridData.horizontalAlignment = GridData.BEGINNING;
+               foregroundColorButton.setLayoutData(gridData);
+               foregroundColorButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) { }
+                       public void widgetSelected(SelectionEvent e) {
+                               int i = fColorList.getSelectionIndex();
+                               String key = fColorListModel[i][1];
+                               PreferenceConverter.setValue(getPreferenceStore(), key,
+                                       fColorSelector.getColorValue());
+                       }
+               });
+               
+               fBoldCheckbox = new Button(stylesComposite, SWT.CHECK);
+               fBoldCheckbox.setText(getString("bold")); //$NON-NLS-1$
+               gridData = new GridData(GridData.FILL_HORIZONTAL);
+               gridData.horizontalAlignment = GridData.BEGINNING;
+               gridData.horizontalSpan = 2;
+               fBoldCheckbox.setLayoutData(gridData);
+               fBoldCheckbox.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) { }
+                       public void widgetSelected(SelectionEvent e) {
+                               int i = fColorList.getSelectionIndex();
+                               String key = fColorListModel[i][2];
+                               getPreferenceStore().setValue(key,
+                                       fBoldCheckbox.getSelection());
+                       }
+               });
+
+               Control previewer =
+                       new SyntaxPreviewer(composite, getPreferenceStore()).getControl();
+               gridData = new GridData(GridData.FILL_BOTH);
+               gridData.widthHint = convertWidthInCharsToPixels(composite, 20);
+               gridData.heightHint = convertHeightInCharsToPixels(composite, 5);
+               previewer.setLayoutData(gridData);
+
+               initialize();
+
+               return composite;
+       }
+
+       /**
+        * @see AbstractConfigurationBlock#initializeFields()
+        */
+       public void initializeFields() {
+               super.initializeFields();
+               RGB rgb = PreferenceConverter.getColor(getPreferenceStore(),
+                       CssUIPreferences.EDITOR_BACKGROUND_COLOR);
+               fBackgroundColorSelector.setColorValue(rgb);
+               boolean defaultBackgroud = getPreferenceStore().getBoolean(
+                       CssUIPreferences.EDITOR_BACKGROUND_DEFAULT_COLOR);
+               fBackgroundDefaultRadioButton.setSelection(defaultBackgroud);
+               fBackgroundCustomRadioButton.setSelection(!defaultBackgroud);
+               fBackgroundColorSelector.setEnabled(!defaultBackgroud);
+       }
+
+       // Event Handlers ----------------------------------------------------------
+
+       void handleSyntaxColorListSelection() {
+               int i = fColorList.getSelectionIndex();
+               String key = fColorListModel[i][1];
+               RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), key);
+               fColorSelector.setColorValue(rgb);
+               key = fColorListModel[i][2];
+               fBoldCheckbox.setSelection(getPreferenceStore().getBoolean(key));
+       }
+
+       // Private Methods ---------------------------------------------------------
+
+       private static String getString(String key) {
+               return CssUIMessages.getString(
+                       "CssEditorPreferencePage.syntax." + key); //$NON-NLS-1$
+       }
+
+       private void initialize() {
+               for (int i = 0; i < fColorListModel.length; i++) {
+                       fColorList.add(fColorListModel[i][0]);
+               }
+               fColorList.getDisplay().asyncExec(new Runnable() {
+                       public void run() {
+                               if ((fColorList != null)
+                                && !fColorList.isDisposed()) {
+                                       fColorList.select(0);
+                                       handleSyntaxColorListSelection();
+                               }
+                       }
+               });
+               initializeFields();
+       }
+
+}