--- /dev/null
+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);
+ }
+}