--- /dev/null
+package net.sourceforge.phpdt.sql.preferences;
+
+
+import net.sourceforge.phpdt.sql.PHPEclipseSQLPlugin;
+
+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.Color;
+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;
+
+import net.sourceforge.phpdt.sql.editors.ColorManager;
+import net.sourceforge.phpdt.sql.editors.SQLColorConstants;
+
+public class PreferencesPage 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(PHPEclipseSQLPlugin.getDefault().getPreferenceStore());
+ initializeColorDefaults(getPreferenceStore());
+ }
+
+ private void initializeColorDefaults(IPreferenceStore store) {
+ RGB BACKGROUND = new RGB(255, 255, 255);
+ RGB COMMENT = new RGB(88, 148, 64);
+ RGB IDENTIFIER = new RGB(0, 0, 0);
+ 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);
+ PreferenceConverter.setDefault(store,
+ "quantum.text.color", DEFAULT);
+ PreferenceConverter.setDefault(store,
+ "quantum.keyword.color", KEYWORD);
+ PreferenceConverter.setDefault(store,
+ "quantum.comment.color", COMMENT);
+ PreferenceConverter.setDefault(store,
+ "quantum.string.color", STRING);
+ PreferenceConverter.setDefault(store,
+ "quantum.numeric.color", NUMERIC);
+ }
+
+ 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);
+ getPreferenceStore().setValue("quantum.text.bold", textFlag);
+ getPreferenceStore().setValue("quantum.keyword.bold", keywordFlag);
+ getPreferenceStore().setValue("quantum.string.bold", stringFlag);
+ getPreferenceStore().setValue("quantum.comment.bold", commentFlag);
+ getPreferenceStore().setValue("quantum.numeric.bold", numericFlag);
+ 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");
+ textFlag = getPreferenceStore().getBoolean("quantum.text.bold");
+ keywordFlag = getPreferenceStore().getBoolean("quantum.keyword.bold");
+ stringFlag = getPreferenceStore().getBoolean("quantum.string.bold");
+ commentFlag = getPreferenceStore().getBoolean("quantum.comment.bold");
+ numericFlag = getPreferenceStore().getBoolean("quantum.numeric.bold");
+
+ fontDialog = new FontDialog(workbench.getActiveWorkbenchWindow().getShell());
+ Button fontButton = new Button(main, SWT.PUSH);
+ fontButton.setText("Pick Font");
+ fontButton.addSelectionListener(new SelectionListener() {
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ public void widgetSelected(SelectionEvent e) {
+ if (fontData != null) {
+ fontDialog.setFontData(fontData);
+ }
+ FontData data = fontDialog.open();
+ if (data != null) {
+ fontData = data;
+ updateFontDisplay();
+ }
+ }
+ });
+ Button defaultButton = new Button(main, SWT.PUSH);
+ defaultButton.setText("Default Font");
+ 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);
+
+ Color defaultColor = manager.getColor(SQLColorConstants.DEFAULT);
+ backgroundColorEditor =
+ new ColorFieldEditor(
+ "quantum.background.color",
+ "Background Color",
+ 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",
+ "Default Text Color",
+ comp);
+
+ boldText = new Button(main, SWT.CHECK);
+ boldText.setSelection(textFlag);
+ boldText.setText("Bold");
+ 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(
+ "quantum.keyword.color",
+ "Keyword Text Color",
+ comp);
+
+ boldKeyword = new Button(main, SWT.CHECK);
+ boldKeyword.setSelection(keywordFlag);
+ boldKeyword.setText("Bold");
+ 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",
+ "Comment Text Color",
+ comp);
+
+ boldComment = new Button(main, SWT.CHECK);
+ boldComment.setSelection(commentFlag);
+ boldComment.setText("Bold");
+ 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",
+ "String Text Color",
+ comp);
+
+ boldString = new Button(main, SWT.CHECK);
+ boldString.setSelection(stringFlag);
+ boldString.setText("Bold");
+ 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",
+ "Numeric Text Color",
+ comp);
+
+ boldNumeric = new Button(main, SWT.CHECK);
+ boldNumeric.setSelection(numericFlag);
+ boldNumeric.setText("Bold");
+ 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("Font: default");
+ } else {
+ String style = "regular";
+ if (fontData.getStyle() == SWT.BOLD) {
+ style = "bold";
+ } else if (fontData.getStyle() == SWT.ITALIC) {
+ style = "italic";
+ } else if (fontData.getStyle() == (SWT.BOLD | SWT.ITALIC)) {
+ style = "bold italic";
+ }
+ fontDisplay.setText("Font: " + fontData.getName() + '-' + style + '-' + fontData.getHeight());
+ }
+ }
+ public void updateFlags() {
+ boldText.setSelection(textFlag);
+ boldKeyword.setSelection(keywordFlag);
+ boldString.setSelection(stringFlag);
+ boldNumeric.setSelection(numericFlag);
+ boldComment.setSelection(commentFlag);
+ }
+}