Merging code from trunk that fixes #774, this work was done by incastrix
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / preferences / SQLEditorPreferences.java
index daf8164..ec0c7e1 100644 (file)
@@ -1,93 +1,74 @@
 package com.quantum.preferences;
 
-
 import com.quantum.Messages;
+import com.quantum.PluginPreferences;
 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.jface.resource.JFaceResources;
 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.Group;
 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;
+
+/**
+ * A preference page for font and colour preferences for the SQL
+ * Editor.  
+ * 
+ * @author Tom Schneider
+ */
+public class SQLEditorPreferences extends PreferencePage 
+               implements IWorkbenchPreferencePage {
+
+    private FontDialog fontDialog;
+
+    private ColorFieldEditor backgroundColorEditor;
+    private ColorFieldEditor textColorEditor;
+    private ColorFieldEditor keywordColorEditor;
+    private ColorFieldEditor stringColorEditor;
+    private ColorFieldEditor numericColorEditor;
+    private ColorFieldEditor commentColorEditor;
+
+    private boolean textFlag;
+    private boolean keywordFlag;
+    private boolean stringFlag;
+    private boolean numericFlag;
+    private boolean commentFlag;
        
-       ColorFieldEditor textColorEditor;
-       boolean textFlag;
-       ColorFieldEditor keywordColorEditor;
-       boolean keywordFlag;
-       ColorFieldEditor stringColorEditor;
-       boolean stringFlag;
-       ColorFieldEditor numericColorEditor;
-       boolean numericFlag;
-       ColorFieldEditor commentColorEditor;
-       boolean commentFlag;
+    private Button boldText;
+    private Button boldKeyword;
+    private Button boldString;
+    private Button boldNumeric;
+    private Button boldComment;
        
-       Button boldText;
-       Button boldKeyword;
-       Button boldString;
-       Button boldNumeric;
-       Button boldComment;
+       private FontData fontData;
+       private Label fontDisplay;
        
-       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;
+               fontData = PluginPreferences.getDefaultFont();
                updateFontDisplay();
-               textFlag = false;
-               keywordFlag = true;
-               stringFlag = false;
-               numericFlag = false;
-               commentFlag = false;
+               this.textFlag = false;
+               this.keywordFlag = true;
+               this.stringFlag = false;
+               this.numericFlag = false;
+               this.commentFlag = false;
                updateFlags();
                backgroundColorEditor.loadDefault();
                textColorEditor.loadDefault();
@@ -114,87 +95,62 @@ public class SQLEditorPreferences extends PreferencePage
                numericColorEditor.store();
                return super.performOk();
        }
+       
        protected Control createContents(Composite parent) {
                Composite main = new Composite(parent, SWT.NULL);
+               main.setLayout(new GridLayout());
                
-               GridLayout innerLayout = new GridLayout();
-               innerLayout.numColumns = 4;
-               main.setLayout(innerLayout);
+        createFontSelectionArea(main);
+        Label label = new Label(main, SWT.NONE);
+        label.setText("");
+        
+               createColorSelectionArea(main);
 
-               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[] temp =  JFaceResources.getTextFont().getFontData();
-                               fontData = temp == null || temp.length == 0 ? null : temp[0];
-                               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();
+               return main;
+       }
+       /**
+     * @param main
+     * @return
+     */
+    private void createColorSelectionArea(Composite parent) {
+        Composite main = new Composite(parent, SWT.NULL);
 
-               Composite comp = new Composite(main, SWT.NULL);
-               GridData layoutData = new GridData();
-               layoutData.horizontalSpan = 2;
-               comp.setLayoutData(layoutData);
+               this.textFlag = getPreferenceStore().getBoolean("quantum.text.bold"); //$NON-NLS-1$
+               this.keywordFlag = getPreferenceStore().getBoolean("quantum.keyword.bold"); //$NON-NLS-1$
+               this.stringFlag = getPreferenceStore().getBoolean("quantum.string.bold"); //$NON-NLS-1$
+               this.commentFlag = getPreferenceStore().getBoolean("quantum.comment.bold"); //$NON-NLS-1$
+               this.numericFlag = getPreferenceStore().getBoolean("quantum.numeric.bold"); //$NON-NLS-1$
+               
+        
+        GridLayout layout = new GridLayout();
+               
+               // the colour preference chooser really, really wants to take up a whole
+               // row, so we need to pretend that our row is only two cells wide, then
+               // pull a switcheroo later...
+               layout.numColumns = 2;
+               main.setLayout(layout);
                
-               manager.getColor(SQLColorConstants.DEFAULT);
                backgroundColorEditor =
                        new ColorFieldEditor(
-                               "quantum.background.color", //$NON-NLS-1$
-                               Messages.getString("PreferencesPage.BackgroundColor"), //$NON-NLS-1$
-                               comp);                          
+                               PluginPreferences.BACKGROUND_COLOR,
+                               Messages.getString(getClass(), "backgroundColor"), //$NON-NLS-1$
+                               main);  
 
-               Composite temp = new Composite(main, SWT.NULL);
-               temp.setSize(0, 0);
+               Label emptyLabel = new Label(main, SWT.NULL);
+               emptyLabel.setText("");
                
-               comp = new Composite(main, SWT.NULL);
-               layoutData = new GridData();
-               layoutData.horizontalSpan = 2;
-               comp.setLayoutData(layoutData);
+               createEmptyRow(main);
                
-               textColorEditor =
+               this.textColorEditor =
                        new ColorFieldEditor(
-                               "quantum.text.color", //$NON-NLS-1$
-                               Messages.getString("PreferencesPage.DefaultTextColor"), //$NON-NLS-1$
-                               comp);                          
+                               PluginPreferences.TEXT_COLOR,
+                               Messages.getString(getClass(), "defaultTextColor"), //$NON-NLS-1$
+                               main);                          
 
-               boldText = new Button(main, SWT.CHECK);
-               boldText.setSelection(textFlag);
-               boldText.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
-               boldText.addSelectionListener(new SelectionListener() {
+               this.boldText = new Button(main, SWT.CHECK);
+               this.boldText.setSelection(textFlag);
+               this.boldText.setText(Messages.getString(getClass(), "bold")); //$NON-NLS-1$
+               this.boldText.addSelectionListener(new SelectionListener() {
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
                        public void widgetSelected(SelectionEvent e) {
@@ -202,20 +158,15 @@ public class SQLEditorPreferences extends PreferencePage
                        }
                });
 
-               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);
+                               PluginPreferences.KEYWORD_COLOR,
+                               Messages.getString(getClass(), "keywordTextColor"), //$NON-NLS-1$
+                               main);
 
                boldKeyword = new Button(main, SWT.CHECK);
                boldKeyword.setSelection(keywordFlag);
-               boldKeyword.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldKeyword.setText(Messages.getString(getClass(), "bold")); //$NON-NLS-1$
                boldKeyword.addSelectionListener(new SelectionListener() {
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
@@ -224,20 +175,15 @@ public class SQLEditorPreferences extends PreferencePage
                        }
                });
 
-               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);
+                               PluginPreferences.COMMENT_COLOR,
+                               Messages.getString(getClass(), "commentTextColor"), //$NON-NLS-1$
+                               main);
 
                boldComment = new Button(main, SWT.CHECK);
                boldComment.setSelection(commentFlag);
-               boldComment.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldComment.setText(Messages.getString(getClass(), "bold")); //$NON-NLS-1$
                boldComment.addSelectionListener(new SelectionListener() {
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
@@ -246,20 +192,15 @@ public class SQLEditorPreferences extends PreferencePage
                        }
                });
 
-               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);
+                               PluginPreferences.STRING_COLOR,
+                               Messages.getString(getClass(), "stringTextColor"), //$NON-NLS-1$
+                               main);
 
                boldString = new Button(main, SWT.CHECK);
                boldString.setSelection(stringFlag);
-               boldString.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldString.setText(Messages.getString(getClass(), "bold")); //$NON-NLS-1$
                boldString.addSelectionListener(new SelectionListener() {
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
@@ -268,20 +209,15 @@ public class SQLEditorPreferences extends PreferencePage
                        }
                });
 
-               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);
+                               PluginPreferences.NUMERIC_COLOR,
+                               Messages.getString(getClass(), "numericTextColor"), //$NON-NLS-1$
+                               main);
 
                boldNumeric = new Button(main, SWT.CHECK);
                boldNumeric.setSelection(numericFlag);
-               boldNumeric.setText(Messages.getString("PreferencesPage.Bold")); //$NON-NLS-1$
+               boldNumeric.setText(Messages.getString(getClass(), "bold")); //$NON-NLS-1$
                boldNumeric.addSelectionListener(new SelectionListener() {
                        public void widgetDefaultSelected(SelectionEvent e) {
                        }
@@ -313,29 +249,95 @@ public class SQLEditorPreferences extends PreferencePage
                numericColorEditor.setPreferencePage(this);
                numericColorEditor.setPreferenceStore(getPreferenceStore());
                numericColorEditor.load();
+               
+               // now for the switcheroo...
+               // reset the number of columns to 3
+               GridLayout innerLayout = new GridLayout();
+               innerLayout.numColumns = 3;
+               main.setLayout(innerLayout);
+    }
 
-               return main;
-       }
-       public void updateFontDisplay() {
+    /**
+     * @param main
+     */
+    private void createFontSelectionArea(Composite main) {
+        Group group = new Group(main, SWT.NONE);
+        group.setText(Messages.getString(getClass(), "font"));
+        GridLayout innerLayout = new GridLayout();
+               innerLayout.numColumns = 2;
+               group.setLayout(innerLayout);
+               group.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
+
+               fontDisplay = new Label(group, SWT.NULL);
+               GridData data = new GridData(GridData.FILL_HORIZONTAL);
+               data.horizontalSpan = 2;
+               fontDisplay.setLayoutData(data);
+               
+               fontData = PreferenceConverter.getFontData(getPreferenceStore(), "quantum.font"); //$NON-NLS-1$
+               fontDialog = new FontDialog(getShell());
+               Button fontButton = new Button(group, SWT.PUSH);
+               fontButton.setText(Messages.getString(getClass(), "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(group, SWT.PUSH);
+               defaultButton.setText(Messages.getString(getClass(), "defaultFont")); //$NON-NLS-1$
+               defaultButton.addSelectionListener(new SelectionListener() {
+                       public void widgetDefaultSelected(SelectionEvent e) {
+                       }
+                       public void widgetSelected(SelectionEvent e) {
+                               fontData = PluginPreferences.getDefaultFont();
+                               updateFontDisplay();
+                       }
+               });
+
+               updateFontDisplay();
+    }
+
+    /**
+     * @param main
+     */
+    private void createEmptyRow(Composite main) {
+        Label emptyLabel = new Label(main, SWT.NULL);
+               emptyLabel.setText("");
+               GridData gridData = new GridData();
+               gridData.horizontalSpan = 3;
+               emptyLabel.setLayoutData(gridData);
+    }
+
+    protected void updateFontDisplay() {
                if (fontData == null) {
-                       fontDisplay.setText(Messages.getString("PreferencesPage.Font_Default")); //$NON-NLS-1$
+                       fontDisplay.setText(Messages.getString(getClass(), "default")); //$NON-NLS-1$
                } else {
-                       String style = Messages.getString("PreferencesPage.regular"); //$NON-NLS-1$
+                       Object[] parameters = new Object[] { 
+                                       fontData.getName(), new Integer(fontData.getHeight()) };
+                       String style = Messages.getString(getClass(), "regularFont", parameters); //$NON-NLS-1$
                        if (fontData.getStyle() == SWT.BOLD) {
-                               style = Messages.getString("PreferencesPage.bold"); //$NON-NLS-1$
+                               style = Messages.getString(getClass(), "boldFont", parameters); //$NON-NLS-1$
                        } else if (fontData.getStyle() == SWT.ITALIC) {
-                               style = Messages.getString("PreferencesPage.italic"); //$NON-NLS-1$
+                               style = Messages.getString(getClass(), "italicFont", parameters); //$NON-NLS-1$
                        } else if (fontData.getStyle() == (SWT.BOLD | SWT.ITALIC)) {
-                               style = Messages.getString("PreferencesPage.boldItalic"); //$NON-NLS-1$
+                               style = Messages.getString(getClass(), "boldItalicFont", parameters); //$NON-NLS-1$
                        }
-                       fontDisplay.setText(Messages.getString("PreferencesPage.FontPrompt") + fontData.getName() + '-' + style + '-' + fontData.getHeight()); //$NON-NLS-1$
+                       fontDisplay.setText(style); //$NON-NLS-1$
                }
        }
-       public void updateFlags() {
-               boldText.setSelection(textFlag);
-               boldKeyword.setSelection(keywordFlag);
-               boldString.setSelection(stringFlag);
-               boldNumeric.setSelection(numericFlag);
-               boldComment.setSelection(commentFlag);
+       protected void updateFlags() {
+               this.boldText.setSelection(this.textFlag);
+               this.boldKeyword.setSelection(this.keywordFlag);
+               this.boldString.setSelection(this.stringFlag);
+               this.boldNumeric.setSelection(this.numericFlag);
+               this.boldComment.setSelection(this.commentFlag);
        }
 }