--- /dev/null
+/*******************************************************************************\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