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); } }