initial quantum version
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / preferences / SQLEditorPreferences.java
diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/preferences/SQLEditorPreferences.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/preferences/SQLEditorPreferences.java
new file mode 100644 (file)
index 0000000..b1697ba
--- /dev/null
@@ -0,0 +1,339 @@
+package com.quantum.preferences;
+
+
+import com.quantum.Messages;
+import com.quantum.QuantumPlugin;
+import com.quantum.editors.ColorManager;
+import com.quantum.editors.SQLColorConstants;
+import com.quantum.util.versioning.VersioningHelper;
+
+import org.eclipse.jface.preference.ColorFieldEditor;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.preference.PreferencePage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.RGB;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.FontDialog;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+public class SQLEditorPreferences extends PreferencePage
+       implements IWorkbenchPreferencePage {
+       FontDialog fontDialog;
+       ColorFieldEditor backgroundColorEditor;
+       
+       ColorFieldEditor textColorEditor;
+       boolean textFlag;
+       ColorFieldEditor keywordColorEditor;
+       boolean keywordFlag;
+       ColorFieldEditor stringColorEditor;
+       boolean stringFlag;
+       ColorFieldEditor numericColorEditor;
+       boolean numericFlag;
+       ColorFieldEditor commentColorEditor;
+       boolean commentFlag;
+       
+       Button boldText;
+       Button boldKeyword;
+       Button boldString;
+       Button boldNumeric;
+       Button boldComment;
+       
+       IWorkbench workbench;
+       FontData fontData;
+       Label fontDisplay;
+       public void init(IWorkbench workbench) {
+               //Initialize the preference store
+               this.workbench = workbench;
+               setPreferenceStore(QuantumPlugin.getDefault().getPreferenceStore());
+               initializeColorDefaults(getPreferenceStore());
+       }
+
+       private void initializeColorDefaults(IPreferenceStore store) {
+               RGB BACKGROUND = new RGB(255, 255, 255);
+               RGB COMMENT = new RGB(88, 148, 64);
+               RGB KEYWORD = new RGB(126, 0, 75);
+               RGB STRING = new RGB(0, 0, 255);
+               RGB NUMERIC = new RGB(255, 0, 0);
+               RGB DEFAULT = new RGB(0, 0, 0);
+               PreferenceConverter.setDefault(store,
+                       "quantum.background.color", BACKGROUND); //$NON-NLS-1$
+               PreferenceConverter.setDefault(store,
+                       "quantum.text.color", DEFAULT); //$NON-NLS-1$
+               PreferenceConverter.setDefault(store,
+                       "quantum.keyword.color", KEYWORD); //$NON-NLS-1$
+               PreferenceConverter.setDefault(store,
+                       "quantum.comment.color", COMMENT); //$NON-NLS-1$
+               PreferenceConverter.setDefault(store,
+                       "quantum.string.color", STRING); //$NON-NLS-1$
+               PreferenceConverter.setDefault(store,
+                       "quantum.numeric.color", NUMERIC); //$NON-NLS-1$
+       }
+
+       protected void performDefaults() {
+               fontData = null;
+               updateFontDisplay();
+               textFlag = false;
+               keywordFlag = true;
+               stringFlag = false;
+               numericFlag = false;
+               commentFlag = false;
+               updateFlags();
+               backgroundColorEditor.loadDefault();
+               textColorEditor.loadDefault();
+               keywordColorEditor.loadDefault();
+               stringColorEditor.loadDefault();
+               commentColorEditor.loadDefault();
+               numericColorEditor.loadDefault();
+       }
+       /** 
+        * Save the preferences to the preference store.
+        */
+       public boolean performOk() {
+               PreferenceConverter.setValue(getPreferenceStore(), "quantum.font", fontData); //$NON-NLS-1$
+               getPreferenceStore().setValue("quantum.text.bold", textFlag); //$NON-NLS-1$
+               getPreferenceStore().setValue("quantum.keyword.bold", keywordFlag); //$NON-NLS-1$
+               getPreferenceStore().setValue("quantum.string.bold", stringFlag); //$NON-NLS-1$
+               getPreferenceStore().setValue("quantum.comment.bold", commentFlag); //$NON-NLS-1$
+               getPreferenceStore().setValue("quantum.numeric.bold", numericFlag); //$NON-NLS-1$
+               backgroundColorEditor.store();
+               textColorEditor.store();
+               keywordColorEditor.store();
+               stringColorEditor.store();
+               commentColorEditor.store();
+               numericColorEditor.store();
+               return super.performOk();
+       }
+       protected Control createContents(Composite parent) {
+               Composite main = new Composite(parent, SWT.NULL);
+               
+               GridLayout innerLayout = new GridLayout();
+               innerLayout.numColumns = 4;
+               main.setLayout(innerLayout);
+
+               fontData = PreferenceConverter.getFontData(getPreferenceStore(), "quantum.font"); //$NON-NLS-1$
+               textFlag = getPreferenceStore().getBoolean("quantum.text.bold"); //$NON-NLS-1$
+               keywordFlag = getPreferenceStore().getBoolean("quantum.keyword.bold"); //$NON-NLS-1$
+               stringFlag = getPreferenceStore().getBoolean("quantum.string.bold"); //$NON-NLS-1$
+               commentFlag = getPreferenceStore().getBoolean("quantum.comment.bold"); //$NON-NLS-1$
+               numericFlag = getPreferenceStore().getBoolean("quantum.numeric.bold"); //$NON-NLS-1$
+               
+               fontDialog = new FontDialog(workbench.getActiveWorkbenchWindow().getShell());
+               Button fontButton = new Button(main, SWT.PUSH);
+               fontButton.setText(Messages.getString("PreferencesPage.PickFont")); //$NON-NLS-1$
+               fontButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               if (fontData != null) {
+                    VersioningHelper.setFont(fontDialog, new FontData[] { fontData} );
+                               }
+                               FontData data = fontDialog.open();
+                               if (data != null) {
+                                       fontData = data;
+                                       updateFontDisplay();
+                               }
+                       }
+               });
+               Button defaultButton = new Button(main, SWT.PUSH);
+               defaultButton.setText(Messages.getString("PreferencesPage.DefaultFont")); //$NON-NLS-1$
+               defaultButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               fontData = null;
+                               updateFontDisplay();
+                       }
+               });
+
+               fontDisplay = new Label(main, SWT.NULL);
+               GridData data = new GridData(GridData.FILL_HORIZONTAL);
+               data.grabExcessHorizontalSpace = true;
+               fontDisplay.setLayoutData(data);
+               updateFontDisplay();
+
+               ColorManager manager = new ColorManager();
+
+               Composite comp = new Composite(main, SWT.NULL);
+               GridData layoutData = new GridData();
+               layoutData.horizontalSpan = 2;
+               comp.setLayoutData(layoutData);
+               
+               manager.getColor(SQLColorConstants.DEFAULT);
+               backgroundColorEditor =
+                       new ColorFieldEditor(
+                               "quantum.background.color", //$NON-NLS-1$
+                               Messages.getString("PreferencesPage.BackgroundColor"), //$NON-NLS-1$
+                               comp);                          
+
+               Composite temp = new Composite(main, SWT.NULL);
+               temp.setSize(0, 0);
+               
+               comp = new Composite(main, SWT.NULL);
+               layoutData = new GridData();
+               layoutData.horizontalSpan = 2;
+               comp.setLayoutData(layoutData);
+               
+               textColorEditor =
+                       new ColorFieldEditor(
+                               "quantum.text.color", //$NON-NLS-1$
+                               Messages.getString("PreferencesPage.DefaultTextColor"), //$NON-NLS-1$
+                               comp);                          
+
+               boldText = new Button(main, SWT.CHECK);
+               boldText.setSelection(textFlag);
+               boldText.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldText.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               textFlag = boldText.getSelection();
+                       }
+               });
+
+               comp = new Composite(main, SWT.NULL);
+               layoutData = new GridData();
+               layoutData.horizontalSpan = 2;
+               comp.setLayoutData(layoutData);
+
+               keywordColorEditor =
+                       new ColorFieldEditor(
+                               Messages.getString("PreferencesPage.quantum.keyword.color_26"), //$NON-NLS-1$
+                               Messages.getString("PreferencesPage.KeywordTextColor"), //$NON-NLS-1$
+                               comp);
+
+               boldKeyword = new Button(main, SWT.CHECK);
+               boldKeyword.setSelection(keywordFlag);
+               boldKeyword.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldKeyword.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               keywordFlag = boldKeyword.getSelection();
+                       }
+               });
+
+               comp = new Composite(main, SWT.NULL);
+               layoutData = new GridData();
+               layoutData.horizontalSpan = 2;
+               comp.setLayoutData(layoutData);
+
+               commentColorEditor =
+                       new ColorFieldEditor(
+                               "quantum.comment.color", //$NON-NLS-1$
+                               Messages.getString("PreferencesPage.CommentTextColor"), //$NON-NLS-1$
+                               comp);
+
+               boldComment = new Button(main, SWT.CHECK);
+               boldComment.setSelection(commentFlag);
+               boldComment.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldComment.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               commentFlag = boldComment.getSelection();
+                       }
+               });
+
+               comp = new Composite(main, SWT.NULL);
+               layoutData = new GridData();
+               layoutData.horizontalSpan = 2;
+               comp.setLayoutData(layoutData);
+
+               stringColorEditor =
+                       new ColorFieldEditor(
+                               "quantum.string.color", //$NON-NLS-1$
+                               Messages.getString("PreferencesPage.StringTextColor"), //$NON-NLS-1$
+                               comp);
+
+               boldString = new Button(main, SWT.CHECK);
+               boldString.setSelection(stringFlag);
+               boldString.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldString.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               stringFlag = boldString.getSelection();
+                       }
+               });
+
+               comp = new Composite(main, SWT.NULL);
+               layoutData = new GridData();
+               layoutData.horizontalSpan = 2;
+               comp.setLayoutData(layoutData);
+
+               numericColorEditor =
+                       new ColorFieldEditor(
+                               "quantum.numeric.color", //$NON-NLS-1$
+                               Messages.getString("PreferencesPage.NumericTextColor"), //$NON-NLS-1$
+                               comp);
+
+               boldNumeric = new Button(main, SWT.CHECK);
+               boldNumeric.setSelection(numericFlag);
+               boldNumeric.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldNumeric.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               numericFlag = boldNumeric.getSelection();
+                       }
+               });
+
+               backgroundColorEditor.setPreferencePage(this);
+               backgroundColorEditor.setPreferenceStore(getPreferenceStore());
+               backgroundColorEditor.load();
+               
+               textColorEditor.setPreferencePage(this);
+               textColorEditor.setPreferenceStore(getPreferenceStore());
+               textColorEditor.load();
+               
+               keywordColorEditor.setPreferencePage(this);
+               keywordColorEditor.setPreferenceStore(getPreferenceStore());
+               keywordColorEditor.load();
+               
+               commentColorEditor.setPreferencePage(this);
+               commentColorEditor.setPreferenceStore(getPreferenceStore());
+               commentColorEditor.load();
+               
+               stringColorEditor.setPreferencePage(this);
+               stringColorEditor.setPreferenceStore(getPreferenceStore());
+               stringColorEditor.load();
+
+               numericColorEditor.setPreferencePage(this);
+               numericColorEditor.setPreferenceStore(getPreferenceStore());
+               numericColorEditor.load();
+
+               return main;
+       }
+       public void updateFontDisplay() {
+               if (fontData == null) {
+                       fontDisplay.setText(Messages.getString("PreferencesPage.Font_Default")); //$NON-NLS-1$
+               } else {
+                       String style = Messages.getString("PreferencesPage.regular"); //$NON-NLS-1$
+                       if (fontData.getStyle() == SWT.BOLD) {
+                               style = Messages.getString("PreferencesPage.bold"); //$NON-NLS-1$
+                       } else if (fontData.getStyle() == SWT.ITALIC) {
+                               style = Messages.getString("PreferencesPage.italic"); //$NON-NLS-1$
+                       } else if (fontData.getStyle() == (SWT.BOLD | SWT.ITALIC)) {
+                               style = Messages.getString("PreferencesPage.boldItalic"); //$NON-NLS-1$
+                       }
+                       fontDisplay.setText(Messages.getString("PreferencesPage.FontPrompt") + fontData.getName() + '-' + style + '-' + fontData.getHeight()); //$NON-NLS-1$
+               }
+       }
+       public void updateFlags() {
+               boldText.setSelection(textFlag);
+               boldKeyword.setSelection(keywordFlag);
+               boldString.setSelection(stringFlag);
+               boldNumeric.setSelection(numericFlag);
+               boldComment.setSelection(commentFlag);
+       }
+}