Przeglądaj źródła

Preference page for State and region coloring

benjamin.schwertfeger@gmail.com 13 lat temu
rodzic
commit
b2165c536b

+ 1 - 0
plugins/org.yakindu.sct.ui.editor/META-INF/MANIFEST.MF

@@ -54,6 +54,7 @@ Export-Package: org.yakindu.sct.ui.editor,
  org.yakindu.sct.ui.editor.editparts,
  org.yakindu.sct.ui.editor.extensions,
  org.yakindu.sct.ui.editor.policies,
+ org.yakindu.sct.ui.editor.preferences,
  org.yakindu.sct.ui.editor.propertysheets,
  org.yakindu.sct.ui.editor.providers,
  org.yakindu.sct.ui.editor.submachine,

+ 9 - 0
plugins/org.yakindu.sct.ui.editor/plugin.xml

@@ -559,6 +559,15 @@
          </object>
       </modelingAssistantProvider>
    </extension>
+   <extension
+            point="org.eclipse.ui.preferencePages">
+        <page
+            category="org.yakindu.sct.ui.preferences.root"
+            class="org.yakindu.sct.ui.editor.preferences.StatechartAppearancePreferencePage"
+            id="com.yakindu.sct.ui.appearance"
+            name="Statechart Coloring">
+        </page>
+    </extension>
    <extension
          point="org.eclipse.core.runtime.preferences">
       <initializer

+ 22 - 7
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/RegionViewFactory.java

@@ -19,7 +19,10 @@ import org.eclipse.gmf.runtime.emf.core.util.EObjectAdapter;
 import org.eclipse.gmf.runtime.notation.NotationPackage;
 import org.eclipse.gmf.runtime.notation.ShapeStyle;
 import org.eclipse.gmf.runtime.notation.View;
-import org.yakindu.sct.ui.editor.preferences.StatechartColorConstants;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.swt.graphics.RGB;
+import org.yakindu.sct.ui.editor.preferences.StatechartPreferenceConstants;
 import org.yakindu.sct.ui.editor.providers.SemanticHints;
 
 /**
@@ -49,13 +52,25 @@ public class RegionViewFactory extends AbstractShapeViewFactory {
 				SemanticHints.REGION_COMPARTMENT, ViewUtil.APPEND, true,
 				getPreferencesHint());
 
-		// Create regions default style
+	}
+
+	@Override
+	protected void initializeFromPreferences(View view) {
+		super.initializeFromPreferences(view);
+		IPreferenceStore store = (IPreferenceStore) getPreferencesHint()
+				.getPreferenceStore();
+		if (store == null) {
+			return;
+		}
+
+		// Create region default styles
 		ShapeStyle style = (ShapeStyle) view
 				.getStyle(NotationPackage.Literals.SHAPE_STYLE);
-		style.setFillColor(FigureUtilities
-				.RGBToInteger(StatechartColorConstants.REGION_BG_COLOR.getRGB()));
-		style.setLineColor(FigureUtilities
-				.RGBToInteger(StatechartColorConstants.REGION_LINE_COLOR.getRGB()));
-
+		RGB fillRGB = PreferenceConverter.getColor(store,
+				StatechartPreferenceConstants.PREF_REGION_BACKGROUND);
+		style.setFillColor(FigureUtilities.RGBToInteger(fillRGB));
+		RGB lineRGB = PreferenceConverter.getColor(store,
+				StatechartPreferenceConstants.PREF_REGION_LINE);
+		style.setLineColor(FigureUtilities.RGBToInteger(lineRGB));
 	}
 }

+ 23 - 10
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/factories/StateViewFactory.java

@@ -13,7 +13,6 @@ package org.yakindu.sct.ui.editor.factories;
 import java.util.List;
 
 import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
 import org.eclipse.gmf.runtime.diagram.ui.view.factories.AbstractShapeViewFactory;
@@ -25,7 +24,10 @@ import org.eclipse.gmf.runtime.notation.NotationPackage;
 import org.eclipse.gmf.runtime.notation.ShapeStyle;
 import org.eclipse.gmf.runtime.notation.Style;
 import org.eclipse.gmf.runtime.notation.View;
-import org.yakindu.sct.ui.editor.preferences.StatechartColorConstants;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.swt.graphics.RGB;
+import org.yakindu.sct.ui.editor.preferences.StatechartPreferenceConstants;
 import org.yakindu.sct.ui.editor.providers.SemanticHints;
 
 /**
@@ -34,7 +36,7 @@ import org.yakindu.sct.ui.editor.providers.SemanticHints;
  * 
  */
 public class StateViewFactory extends AbstractShapeViewFactory {
-	
+
 	@SuppressWarnings("unchecked")
 	@Override
 	protected void decorateView(View containerView, View view,
@@ -48,13 +50,13 @@ public class StateViewFactory extends AbstractShapeViewFactory {
 		if (eObject != null) {
 			eObjectAdapter = new EObjectAdapter(eObject);
 		}
-		//State name
+		// State name
 		FactoryUtils.createLabel(view, SemanticHints.STATE_NAME);
-		//Text compartment
+		// Text compartment
 		getViewService().createNode(eObjectAdapter, view,
 				SemanticHints.STATE_TEXT_COMPARTMENT, ViewUtil.APPEND, true,
 				getPreferencesHint());
-		//Figure compartment
+		// Figure compartment
 		getViewService().createNode(eObjectAdapter, view,
 				SemanticHints.STATE_FIGURE_COMPARTMENT, ViewUtil.APPEND, true,
 				getPreferencesHint());
@@ -66,15 +68,26 @@ public class StateViewFactory extends AbstractShapeViewFactory {
 		layout.setBooleanValue(false);
 		view.getStyles().add(layout);
 
+		IPreferenceStore store = (IPreferenceStore) getPreferencesHint()
+				.getPreferenceStore();
+		if (store == null) {
+			return;
+		}
 		// Create states default styles
 		ShapeStyle style = (ShapeStyle) view
 				.getStyle(NotationPackage.Literals.SHAPE_STYLE);
-		style.setFillColor(FigureUtilities
-				.RGBToInteger(StatechartColorConstants.STATE_BG_COLOR.getRGB()));
-		style.setLineColor(FigureUtilities
-				.RGBToInteger(ColorConstants.lightGray.getRGB()));
+		RGB fillRGB = PreferenceConverter.getColor(store,
+				StatechartPreferenceConstants.PREF_STATE_BACKGROUND);
+		style.setFillColor(FigureUtilities.RGBToInteger(fillRGB));
+		RGB lineRGB = PreferenceConverter.getColor(store,
+				StatechartPreferenceConstants.PREF_STATE_LINE);
+		style.setLineColor(FigureUtilities.RGBToInteger(lineRGB));
 	}
 
+	@Override
+	protected void initializeFromPreferences(View view) {
+		super.initializeFromPreferences(view);
+	}
 
 	@Override
 	protected List<Style> createStyles(View view) {

+ 17 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/preferences/PreferenceInitializer.java

@@ -51,6 +51,23 @@ public class PreferenceInitializer extends DiagramPreferenceInitializer
 		prefs.setLayoutSetting(DefaultPaletteViewerPreferences.LAYOUT_COLUMNS);
 		prefs.setCurrentUseLargeIcons(true);
 		prefs.setFontData(new FontData("Verdana", 8, SWT.NONE));
+
+		// State line and background color
+		PreferenceConverter.setDefault(getPreferenceStore(),
+				StatechartPreferenceConstants.PREF_STATE_BACKGROUND,
+				StatechartColorConstants.STATE_BG_COLOR.getRGB());
+		PreferenceConverter.setDefault(getPreferenceStore(),
+				StatechartPreferenceConstants.PREF_STATE_LINE,
+				StatechartColorConstants.STATE_LINE_COLOR.getRGB());
+
+		// Region fill color
+		PreferenceConverter.setDefault(getPreferenceStore(),
+				StatechartPreferenceConstants.PREF_REGION_BACKGROUND,
+				StatechartColorConstants.REGION_BG_COLOR.getRGB());
+		PreferenceConverter.setDefault(getPreferenceStore(),
+				StatechartPreferenceConstants.PREF_REGION_LINE,
+				StatechartColorConstants.REGION_LINE_COLOR.getRGB());
+
 	}
 
 	@Override

+ 37 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/preferences/StatechartAppearancePreferencePage.java

@@ -0,0 +1,37 @@
+package org.yakindu.sct.ui.editor.preferences;
+
+import org.eclipse.jface.preference.ColorFieldEditor;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+import org.yakindu.sct.ui.editor.DiagramActivator;
+
+public class StatechartAppearancePreferencePage extends
+		FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+	@Override
+	protected void createFieldEditors() {
+		addField(new ColorFieldEditor(
+				StatechartPreferenceConstants.PREF_REGION_BACKGROUND,
+				"Region background color", getFieldEditorParent()));
+		addField(new ColorFieldEditor(
+				StatechartPreferenceConstants.PREF_REGION_LINE,
+				"Region line color", getFieldEditorParent()));
+		addField(new ColorFieldEditor(
+				StatechartPreferenceConstants.PREF_STATE_BACKGROUND,
+				"State background color", getFieldEditorParent()));
+		addField(new ColorFieldEditor(
+				StatechartPreferenceConstants.PREF_STATE_LINE,
+				"State line color", getFieldEditorParent()));
+	}
+
+	public void init(IWorkbench workbench) {
+		new PreferenceInitializer().initializeDefaultPreferences();
+	}
+
+	@Override
+	protected IPreferenceStore doGetPreferenceStore() {
+		return DiagramActivator.getDefault().getPreferenceStore();
+	}
+}

+ 10 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/preferences/StatechartPreferenceConstants.java

@@ -0,0 +1,10 @@
+package org.yakindu.sct.ui.editor.preferences;
+
+import org.eclipse.gmf.runtime.diagram.ui.preferences.IPreferenceConstants;
+
+public interface StatechartPreferenceConstants extends IPreferenceConstants {
+	public static final String PREF_STATE_BACKGROUND = "Appearance.state.background";
+	public static final String PREF_STATE_LINE = "Appearance.state.line";
+	public static final String PREF_REGION_BACKGROUND = "Appearance.region.background";
+	public static final String PREF_REGION_LINE = "Appearance.region.line";
+}