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