]> gerrit.simantics Code Review - simantics/3d.git/blobdiff - org.simantics.g3d/src/org/simantics/proconf/g3d/preferences/G3DPreferencesPage.java
git-svn-id: https://www.simantics.org/svn/simantics/3d/trunk@22280 ac1ea38d-2e2b...
[simantics/3d.git] / org.simantics.g3d / src / org / simantics / proconf / g3d / preferences / G3DPreferencesPage.java
diff --git a/org.simantics.g3d/src/org/simantics/proconf/g3d/preferences/G3DPreferencesPage.java b/org.simantics.g3d/src/org/simantics/proconf/g3d/preferences/G3DPreferencesPage.java
new file mode 100644 (file)
index 0000000..185e959
--- /dev/null
@@ -0,0 +1,121 @@
+/*******************************************************************************\r
+ * Copyright (c) 2007- VTT Technical Research Centre of Finland.\r
+ * All rights reserved. This program and the accompanying materials\r
+ * are made available under the terms of the Eclipse Public License v1.0\r
+ * which accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ *\r
+ * Contributors:\r
+ *     VTT Technical Research Centre of Finland - initial API and implementation\r
+ *******************************************************************************/\r
+package org.simantics.proconf.g3d.preferences;
+
+import org.eclipse.jface.preference.*;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.eclipse.ui.IWorkbench;
+import org.simantics.proconf.g3d.Activator;
+
+
+/**
+ * This class represents a preference page that
+ * is contributed to the Preferences dialog. By 
+ * subclassing <samp>FieldEditorPreferencePage</samp>, we
+ * can use the field support built into JFace that allows
+ * us to create a page that is small and knows how to 
+ * save, restore and apply itself.
+ * <p>
+ * This page is used to modify preferences only. They
+ * are stored in the preference store that belongs to
+ * the main plug-in class. That way, preferences can
+ * be accessed directly via the preference store.
+ */
+
+public class G3DPreferencesPage
+       extends FieldEditorPreferencePage
+       implements IWorkbenchPreferencePage {
+
+       public G3DPreferencesPage() {
+               super(GRID);
+               setPreferenceStore(Activator.getDefault().getPreferenceStore());
+               setDescription("A demonstration of a preference page implementation");
+       }
+       
+       /**
+        * Creates the field editors. Field editors are abstractions of
+        * the common GUI blocks needed to manipulate various types
+        * of preferences. Each field editor knows how to save and
+        * restore itself.
+        */
+       public void createFieldEditors() {
+//             addField(new DirectoryFieldEditor(PreferenceConstants.P_PATH, 
+//                             "&Directory preference:", getFieldEditorParent()));
+//             addField(
+//                     new BooleanFieldEditor(
+//                             PreferenceConstants.P_BOOLEAN,
+//                             "&An example of a boolean preference",
+//                             getFieldEditorParent()));
+//
+//             addField(new RadioGroupFieldEditor(
+//                             PreferenceConstants.P_CHOICE,
+//                     "An example of a multiple-choice preference",
+//                     1,
+//                     new String[][] { { "&Choice 1", "choice1" }, {
+//                             "C&hoice 2", "choice2" }
+//             }, getFieldEditorParent()));
+//             addField(
+//                     new StringFieldEditor(PreferenceConstants.P_STRING, "A &text preference:", getFieldEditorParent()));
+               addField(new BooleanFieldEditor(PreferenceConstants.SHADOWS,"Use Shadows",getFieldEditorParent()));
+               addField(new RadioGroupFieldEditor(PreferenceConstants.POST_PROCESS, "Post Processing", 1,
+                               new String[][] { { "None", "none" }, 
+                                                                { "Sketch", "sketch" },
+                                                                { "Bloom", "bloom" }}, 
+                                                                getFieldEditorParent()));
+               addField(new ScaleFieldEditor(PreferenceConstants.GIZMO_SCALE,"Gizmo scale",getFieldEditorParent(),5,100,1,10) {
+                       private double oldValue;
+                       
+                       @Override
+                       protected void doStore() {
+                               getPreferenceStore()
+                .setValue(getPreferenceName(), scale.getSelection()*0.1);
+                       }
+                       
+                       @Override
+                       protected void doLoadDefault() {
+                               if (scale != null) {
+                           double value = getPreferenceStore().getDefaultDouble(getPreferenceName());
+                           scale.setSelection((int)(value*10.0));
+                       }
+                       valueChanged();
+                       }
+                       
+                       @Override
+                       protected void doLoad() {
+                               if (scale != null) {
+                                       double value = getPreferenceStore().getDouble(getPreferenceName());
+                           scale.setSelection((int)(value*10.0));
+                           oldValue = value;
+                       };
+                       }
+                       
+                       @Override
+                       protected void valueChanged() {
+                       setPresentsDefaultValue(false);
+
+                       double newValue = scale.getSelection()*0.1;
+                       if (newValue != oldValue) {
+                           fireStateChanged(IS_VALID, false, true);
+                           fireValueChanged(VALUE, new Double(oldValue),
+                                   new Double(newValue));
+                           oldValue = newValue;
+                       }
+                   }
+               });
+       }
+
+       /* (non-Javadoc)
+        * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
+        */
+       public void init(IWorkbench workbench) {
+       }
+       
+}
\ No newline at end of file