فهرست منبع

ExpressionsProviderExtension refactored

Andreas Mülder 14 سال پیش
والد
کامیت
886243fcff
27فایلهای تغییر یافته به همراه300 افزوده شده و 269 حذف شده
  1. 26 2
      plugins/org.yakindu.sct.ui.editor/schema/expressions.exsd
  2. 5 4
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/dialogs/SelectSubmachineDialog.java
  3. 11 15
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/PlugableExternalXtextLabelEditPart.java
  4. 11 15
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/PlugableXtextLabelEditPart.java
  5. 10 3
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateTextCompartmentExpressionEditPart.java
  6. 18 11
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StatechartTextExpressionEditPart.java
  7. 8 1
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/TransitionExpressionEditPart.java
  8. 14 11
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/AbstractExpressionsProvider.java
  9. 67 0
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/ExpressionLanguageProviderExtensions.java
  10. 0 67
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/ExpressionsProviderExtensions.java
  11. 3 11
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/IExpressionsProvider.java
  12. 6 6
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/AbstractEditorPropertySection.java
  13. 2 1
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/StatePropertySection.java
  14. 2 1
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/StatechartPropertySection.java
  15. 7 5
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/SubmachineSelectionDialogPropertyDescriptor.java
  16. 2 1
      plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/TransitionPropertySection.java
  17. 16 10
      plugins/org.yakindu.sct.ui.integration.stext/plugin.xml
  18. 0 17
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/ExtensionsActivator.java
  19. 7 26
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/StateExpressionProvider.java
  20. 7 26
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/StatechartExpressionProvider.java
  21. 7 25
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/TransitionExpressionProvider.java
  22. 14 3
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StateRuntimeModule.java
  23. 12 2
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StateUIModule.java
  24. 16 2
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StatechartRuntimeModule.java
  25. 17 2
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StatechartUIModule.java
  26. 11 1
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/TransitionRuntimeModule.java
  27. 1 1
      plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/TransitionUIModule.java

+ 26 - 2
plugins/org.yakindu.sct.ui.editor/schema/expressions.exsd

@@ -18,7 +18,7 @@
       </annotation>
       <complexType>
          <sequence>
-            <element ref="ExpressionProvider" minOccurs="1" maxOccurs="unbounded"/>
+            <element ref="ExpressionLanguageProvider" minOccurs="1" maxOccurs="unbounded"/>
          </sequence>
          <attribute name="point" type="string" use="required">
             <annotation>
@@ -47,7 +47,7 @@
       </complexType>
    </element>
 
-   <element name="ExpressionProvider">
+   <element name="ExpressionLanguageProvider">
       <complexType>
          <attribute name="class" type="string">
             <annotation>
@@ -59,6 +59,30 @@
                </appinfo>
             </annotation>
          </attribute>
+         <attribute name="resourceExtension" type="string" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+         </attribute>
+         <attribute name="semanticTarget" use="required">
+            <annotation>
+               <documentation>
+                  
+               </documentation>
+            </annotation>
+            <simpleType>
+               <restriction base="string">
+                  <enumeration value="StatechartInterface">
+                  </enumeration>
+                  <enumeration value="StateDeclaration">
+                  </enumeration>
+                  <enumeration value="TransitionExpression">
+                  </enumeration>
+               </restriction>
+            </simpleType>
+         </attribute>
       </complexType>
    </element>
 

+ 5 - 4
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/dialogs/SelectSubmachineDialog.java

@@ -40,8 +40,9 @@ import org.eclipse.xtext.scoping.IScope;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.ui.editor.StatechartImages;
-import org.yakindu.sct.ui.editor.extensions.ExpressionsProviderExtensions;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 
 import com.google.common.base.Predicates;
 import com.google.common.collect.Iterables;
@@ -72,8 +73,8 @@ public class SelectSubmachineDialog extends ElementListSelectionDialog {
 	}
 
 	private static Injector getInjector(Resource resource) {
-		IExpressionsProvider provider = ExpressionsProviderExtensions
-				.getRegisteredProvider(SGraphPackage.Literals.STATECHART,
+		IExpressionLanguageProvider provider = ExpressionLanguageProviderExtensions
+				.getRegisteredProvider(SemanticTarget.StatechartInterface,
 						resource.getURI().toString());
 		return provider.getInjector();
 	}

+ 11 - 15
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/PlugableExternalXtextLabelEditPart.java

@@ -15,8 +15,9 @@ import org.eclipse.gef.EditPolicy;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.model.sgraph.ExpressionElement;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
-import org.yakindu.sct.ui.editor.extensions.ExpressionsProviderExtensions;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 import org.yakindu.sct.ui.editor.policies.ExpressionDirectEditPolicy;
 
 import com.google.inject.Injector;
@@ -33,20 +34,19 @@ public abstract class PlugableExternalXtextLabelEditPart extends
 		ExternalXtextLabelEditPart {
 
 	private Injector injector;
-	private int editorStyle;
 
-	public PlugableExternalXtextLabelEditPart(View view) {
+	protected abstract int getEditorStyles();
+
+	public PlugableExternalXtextLabelEditPart(View view, SemanticTarget target) {
 		super(view);
-		init();
+		init(target);
 	}
 
-	private void init() {
-		IExpressionsProvider registeredProvider = ExpressionsProviderExtensions
-				.getRegisteredProvider(resolveSemanticElement().eClass(),
-						resolveSemanticElement().eResource().getURI()
-								.lastSegment());
+	private void init(SemanticTarget target) {
+		IExpressionLanguageProvider registeredProvider = ExpressionLanguageProviderExtensions
+				.getRegisteredProvider(target, resolveSemanticElement()
+						.eResource().getURI().lastSegment());
 		injector = registeredProvider.getInjector();
-		editorStyle = registeredProvider.getStyle();
 	}
 
 	@Override
@@ -82,10 +82,6 @@ public abstract class PlugableExternalXtextLabelEditPart extends
 		return exp != null ? exp : "";
 	}
 
-	protected int getEditorStyles() {
-		return editorStyle;
-	}
-
 	public Injector getInjector() {
 		return injector;
 	}

+ 11 - 15
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/PlugableXtextLabelEditPart.java

@@ -15,8 +15,9 @@ import org.eclipse.gef.EditPolicy;
 import org.eclipse.gmf.runtime.notation.View;
 import org.yakindu.sct.model.sgraph.ExpressionElement;
 import org.yakindu.sct.model.sgraph.SGraphPackage;
-import org.yakindu.sct.ui.editor.extensions.ExpressionsProviderExtensions;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 import org.yakindu.sct.ui.editor.policies.ExpressionDirectEditPolicy;
 
 import com.google.inject.Injector;
@@ -32,20 +33,19 @@ import de.itemis.xtext.utils.gmf.directedit.XtextLabelEditPart;
 public abstract class PlugableXtextLabelEditPart extends XtextLabelEditPart {
 
 	private Injector injector;
-	private int editorStyle;
 
-	public PlugableXtextLabelEditPart(View view) {
+	protected abstract int getEditorStyles();
+
+	public PlugableXtextLabelEditPart(View view, SemanticTarget target) {
 		super(view);
-		init();
+		init(target);
 	}
 
-	private void init() {
-		IExpressionsProvider registeredProvider = ExpressionsProviderExtensions
-				.getRegisteredProvider(resolveSemanticElement().eClass(),
-						resolveSemanticElement().eResource().getURI()
-								.lastSegment());
+	private void init(SemanticTarget target) {
+		IExpressionLanguageProvider registeredProvider = ExpressionLanguageProviderExtensions
+				.getRegisteredProvider(target, resolveSemanticElement()
+						.eResource().getURI().lastSegment());
 		injector = registeredProvider.getInjector();
-		editorStyle = registeredProvider.getStyle();
 	}
 
 	@Override
@@ -81,10 +81,6 @@ public abstract class PlugableXtextLabelEditPart extends XtextLabelEditPart {
 		return exp != null ? exp : "";
 	}
 
-	protected int getEditorStyles() {
-		return editorStyle;
-	}
-
 	public Injector getInjector() {
 		return injector;
 	}

+ 10 - 3
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StateTextCompartmentExpressionEditPart.java

@@ -2,6 +2,8 @@ package org.yakindu.sct.ui.editor.editparts;
 
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.swt.SWT;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.policies.ContextSensitiveHelpPolicy;
 import org.yakindu.sct.ui.editor.utils.IYakinduSctHelpContextIds;
 
@@ -16,7 +18,7 @@ public class StateTextCompartmentExpressionEditPart extends
 		PlugableXtextLabelEditPart implements IXtextAwareEditPart {
 
 	public StateTextCompartmentExpressionEditPart(View view) {
-		super(view);
+		super(view, SemanticTarget.StateDeclaration);
 	}
 
 	@Override
@@ -24,10 +26,10 @@ public class StateTextCompartmentExpressionEditPart extends
 		super.addNotationalListeners();
 		View parentStateView = getParentStateView();
 		if (parentStateView != null) {
-			addListenerFilter("parentStateView", this,parentStateView);
+			addListenerFilter("parentStateView", this, parentStateView);
 		}
 	}
-	
+
 	@Override
 	protected void removeNotationalListeners() {
 		View parentStateView = getParentStateView();
@@ -53,4 +55,9 @@ public class StateTextCompartmentExpressionEditPart extends
 		}
 		return null;
 	}
+
+	@Override
+	protected int getEditorStyles() {
+		return SWT.MULTI;
+	}
 }

+ 18 - 11
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/StatechartTextExpressionEditPart.java

@@ -4,6 +4,8 @@ import org.eclipse.gef.EditPolicy;
 import org.eclipse.gef.editpolicies.RootComponentEditPolicy;
 import org.eclipse.gmf.runtime.diagram.ui.editpolicies.EditPolicyRoles;
 import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.swt.SWT;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.policies.ContextSensitiveHelpPolicy;
 import org.yakindu.sct.ui.editor.utils.IYakinduSctHelpContextIds;
 
@@ -16,18 +18,18 @@ public class StatechartTextExpressionEditPart extends
 		PlugableXtextLabelEditPart {
 
 	public StatechartTextExpressionEditPart(View view) {
-		super(view);
+		super(view, SemanticTarget.StatechartInterface);
 	}
-	
+
 	@Override
 	protected void addNotationalListeners() {
 		super.addNotationalListeners();
 		View parentStateView = getParentStateView();
 		if (parentStateView != null) {
-			addListenerFilter("parentStateView", this,parentStateView);
+			addListenerFilter("parentStateView", this, parentStateView);
 		}
 	}
-	
+
 	@Override
 	protected void removeNotationalListeners() {
 		View parentStateView = getParentStateView();
@@ -36,13 +38,6 @@ public class StatechartTextExpressionEditPart extends
 		}
 		super.removeNotationalListeners();
 	}
-	
-	private View getParentStateView() {
-		if (getParent() instanceof StatechartTextEditPart) {
-			return ((StatechartTextEditPart) getParent()).getNotationView();
-		}
-		return null;
-	}
 
 	@Override
 	protected void createDefaultEditPolicies() {
@@ -58,4 +53,16 @@ public class StatechartTextExpressionEditPart extends
 		removeEditPolicy(EditPolicyRoles.CONNECTION_HANDLES_ROLE);
 	}
 
+	private View getParentStateView() {
+		if (getParent() instanceof StatechartTextEditPart) {
+			return ((StatechartTextEditPart) getParent()).getNotationView();
+		}
+		return null;
+	}
+
+	@Override
+	protected int getEditorStyles() {
+		return SWT.MULTI;
+	}
+
 }

+ 8 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/editparts/TransitionExpressionEditPart.java

@@ -12,6 +12,8 @@ package org.yakindu.sct.ui.editor.editparts;
 
 import org.eclipse.gef.EditPolicy;
 import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.swt.SWT;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.policies.ContextSensitiveHelpPolicy;
 import org.yakindu.sct.ui.editor.utils.IYakinduSctHelpContextIds;
 
@@ -26,7 +28,7 @@ public class TransitionExpressionEditPart extends
 		PlugableExternalXtextLabelEditPart implements IXtextAwareEditPart {
 
 	public TransitionExpressionEditPart(View view) {
-		super(view);
+		super(view, SemanticTarget.TransitionExpression);
 	}
 
 	@Override
@@ -38,4 +40,9 @@ public class TransitionExpressionEditPart extends
 						IYakinduSctHelpContextIds.SC_PROPERTIES_TRANSITION_EXPRESSION));
 	}
 
+	@Override
+	protected int getEditorStyles() {
+		return SWT.SINGLE;
+	}
+
 }

+ 14 - 11
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/AbstractExpressionsProvider.java

@@ -10,35 +10,38 @@
  */
 package org.yakindu.sct.ui.editor.extensions;
 
-import org.eclipse.emf.ecore.EClass;
+import org.eclipse.xtext.ui.shared.SharedStateModule;
 
+import com.google.inject.Guice;
 import com.google.inject.Injector;
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
 
 /**
+ * Base class for all {@link IExpressionLanguageProvider}s, provides caching of
+ * the Injector.
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
 public abstract class AbstractExpressionsProvider implements
-		IExpressionsProvider {
+		IExpressionLanguageProvider {
 
 	private Injector injector = null;
 
-	protected abstract Injector createInjector();
+	protected abstract Module getRuntimeModule();
 
-	protected abstract EClass getType();
+	protected abstract Module getUIModule();
 
-	protected abstract String getResourceExtension();
+	protected Injector createInjector() {
+		return Guice.createInjector(Modules.override(
+				Modules.override(getRuntimeModule()).with(getUIModule())).with(
+				new SharedStateModule()));
+	}
 
 	public Injector getInjector() {
 		if (injector == null)
 			injector = createInjector();
 		return injector;
 	}
-
-	public boolean isProviderFor(EClass type, String resourceUri) {
-		return getType().isSuperTypeOf(type)
-				&& resourceUri.toLowerCase().endsWith(getResourceExtension());
-	}
-
 }

+ 67 - 0
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/ExpressionLanguageProviderExtensions.java

@@ -0,0 +1,67 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
+package org.yakindu.sct.ui.editor.extensions;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class ExpressionLanguageProviderExtensions {
+
+	private static final String EXPRESSIONS_EXTENSION = "org.yakindu.sct.ui.editor.expressions";
+
+	private static final String ATTR_CLASS = "class";
+
+	private static final String ATTR_RESOURCE_EXTENSION = "resourceExtension";
+
+	private static final String ATTR_SEMANTIC_TARGET = "semanticTarget";
+
+	public enum SemanticTarget {
+		StatechartInterface, StateDeclaration, TransitionExpression
+	}
+
+	protected ExpressionLanguageProviderExtensions() {
+		// Not intended to be instantiated
+	}
+
+	/**
+	 * Returns all registered {@link IExpressionLanguageProvider}s
+	 * 
+	 */
+	public static IExpressionLanguageProvider getRegisteredProvider(
+			SemanticTarget target, String resourceExtension) {
+		IConfigurationElement[] configurationElements = Platform
+				.getExtensionRegistry().getConfigurationElementsFor(
+						EXPRESSIONS_EXTENSION);
+		for (IConfigurationElement configurationElement : configurationElements) {
+			try {
+				String semanticTarget = configurationElement
+						.getAttribute(ATTR_SEMANTIC_TARGET);
+				String registeredExtension = configurationElement
+						.getAttribute(ATTR_RESOURCE_EXTENSION);
+				if (SemanticTarget.valueOf(semanticTarget) == target
+						&& resourceExtension.endsWith(registeredExtension)) {
+					return (IExpressionLanguageProvider) configurationElement
+							.createExecutableExtension(ATTR_CLASS);
+				}
+			} catch (CoreException e) {
+				e.printStackTrace();
+			}
+		}
+		throw new IllegalStateException("No Expression Provider found for "
+				+ target);
+	}
+}

+ 0 - 67
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/ExpressionsProviderExtensions.java

@@ -1,67 +0,0 @@
-/**
- * Copyright (c) 2011 committers of YAKINDU and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- * Contributors:
- * 	committers of YAKINDU - initial API and implementation
- * 
- */
-package org.yakindu.sct.ui.editor.extensions;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.emf.ecore.EClass;
-
-/**
- * 
- * @author andreas muelder - Initial contribution and API
- * 
- */
-public class ExpressionsProviderExtensions {
-
-	private static final String EXPRESSIONS_EXTENSION = "org.yakindu.sct.ui.editor.expressions";
-
-	protected ExpressionsProviderExtensions() {
-		// Not intended to be instantiated
-	}
-
-	/**
-	 * Returns all registered {@link IExpressionsProvider}s 
-	 * @param type
-	 * @param resourceUri
-	 * @return
-	 */
-	public static IExpressionsProvider getRegisteredProvider(EClass type,
-			String resourceUri) {
-		List<IExpressionsProvider> loadRegisteredProvider = loadRegisteredProvider();
-		for (IExpressionsProvider t : loadRegisteredProvider) {
-			if (t.isProviderFor(type, resourceUri)) {
-				return t;
-			}
-		}
-		return null;
-	}
-
-	protected static List<IExpressionsProvider> loadRegisteredProvider() {
-		List<IExpressionsProvider> providers = new ArrayList<IExpressionsProvider>();
-		IConfigurationElement[] configurationElements = Platform
-				.getExtensionRegistry().getConfigurationElementsFor(
-						EXPRESSIONS_EXTENSION);
-		for (IConfigurationElement configurationElement : configurationElements) {
-			try {
-				IExpressionsProvider provider = (IExpressionsProvider) configurationElement
-						.createExecutableExtension("class");
-				providers.add(provider);
-			} catch (CoreException e) {
-				e.printStackTrace();
-			}
-		}
-		return providers;
-	}
-}

+ 3 - 11
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/extensions/IExpressionsProvider.java

@@ -10,23 +10,15 @@
  */
 package org.yakindu.sct.ui.editor.extensions;
 
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.swt.SWT;
-
 import com.google.inject.Injector;
 
 /**
- * @author andreas muelder
+ * 
+ * @author andreas muelder - Initial contribution and API
  * 
  */
-public interface IExpressionsProvider {
+public interface IExpressionLanguageProvider {
 
 	public Injector getInjector();
 
-	/**
-	 * @return the {@link SWT} styles for the CellEditor
-	 */
-	public int getStyle();
-	
-	public boolean isProviderFor(EClass type, String resourceUri);
 }

+ 6 - 6
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/AbstractEditorPropertySection.java

@@ -1,13 +1,13 @@
 package org.yakindu.sct.ui.editor.propertysheets;
 
 import org.eclipse.emf.common.util.EList;
-import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.resource.Resource;
 import org.eclipse.emf.edit.domain.EditingDomain;
 import org.eclipse.emf.edit.domain.IEditingDomainProvider;
 import org.eclipse.ui.IEditorPart;
-import org.yakindu.sct.ui.editor.extensions.ExpressionsProviderExtensions;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 
 import com.google.inject.Injector;
 
@@ -49,9 +49,9 @@ public abstract class AbstractEditorPropertySection extends
 		return resources.get(0); // always take the first resource ...
 	}
 
-	protected Injector getInjector(EClass type) {
-		IExpressionsProvider registeredProvider = ExpressionsProviderExtensions
-				.getRegisteredProvider(type, getActiveEditorResource().getURI()
+	protected Injector getInjector(SemanticTarget semanticTarget) {
+		IExpressionLanguageProvider registeredProvider = ExpressionLanguageProviderExtensions
+				.getRegisteredProvider(semanticTarget,getActiveEditorResource().getURI()
 						.lastSegment());
 		return registeredProvider.getInjector();
 	}

+ 2 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/StatePropertySection.java

@@ -15,6 +15,7 @@ import java.util.List;
 
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.editparts.StateEditPart;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.utils.IYakinduSctHelpContextIds;
 
 import de.itemis.gmf.runtime.commons.properties.descriptors.IFormPropertyDescriptor;
@@ -41,7 +42,7 @@ public class StatePropertySection extends NamePropertySection {
 				SGraphPackage.Literals.EXPRESSION_ELEMENT__EXPRESSION,
 				"Expression: ",
 				IYakinduSctHelpContextIds.SC_PROPERTIES_STATE_EXPRESSION,
-				getInjector(SGraphPackage.Literals.STATE),
+				getInjector(SemanticTarget.StateDeclaration),
 				new CloningBasedFakeContextResourcesProvider(
 						Collections.singletonList(getActiveEditorResource())));
 		descriptors.add(expressionsDescriptor);

+ 2 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/StatechartPropertySection.java

@@ -14,6 +14,7 @@ import java.util.List;
 
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.editparts.StatechartTextEditPart;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.utils.IYakinduSctHelpContextIds;
 
 import de.itemis.gmf.runtime.commons.properties.descriptors.IFormPropertyDescriptor;
@@ -43,7 +44,7 @@ public class StatechartPropertySection extends AbstractEditorPropertySection {
 				SGraphPackage.Literals.EXPRESSION_ELEMENT__EXPRESSION,
 				"Expression: ",
 				IYakinduSctHelpContextIds.SC_PROPERTIES_STATECHART_EXPRESSION,
-				getInjector(SGraphPackage.Literals.STATECHART));
+				getInjector(SemanticTarget.StatechartInterface));
 		descriptors.add(expressionsDescriptor);
 	}
 

+ 7 - 5
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/SubmachineSelectionDialogPropertyDescriptor.java

@@ -38,8 +38,10 @@ import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.model.sgraph.State;
 import org.yakindu.sct.model.sgraph.Statechart;
 import org.yakindu.sct.ui.editor.dialogs.SelectSubmachineDialog;
-import org.yakindu.sct.ui.editor.extensions.ExpressionsProviderExtensions;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.editor.StatechartDiagramEditor;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 
 import com.google.inject.Inject;
 import com.google.inject.Injector;
@@ -73,9 +75,9 @@ public class SubmachineSelectionDialogPropertyDescriptor implements
 	private EObject context;
 
 	private void injectMembers(Resource resource) {
-		IExpressionsProvider provider = ExpressionsProviderExtensions
-				.getRegisteredProvider(SGraphPackage.Literals.STATECHART,
-						resource.getURI().toString());
+		IExpressionLanguageProvider provider = ExpressionLanguageProviderExtensions
+				.getRegisteredProvider(SemanticTarget.StatechartInterface,
+						resource.getURI().lastSegment());
 		Injector injector = provider.getInjector();
 		injector.injectMembers(this);
 	}

+ 2 - 1
plugins/org.yakindu.sct.ui.editor/src/org/yakindu/sct/ui/editor/propertysheets/TransitionPropertySection.java

@@ -15,6 +15,7 @@ import java.util.List;
 
 import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.editparts.TransitionEditPart;
+import org.yakindu.sct.ui.editor.extensions.ExpressionLanguageProviderExtensions.SemanticTarget;
 import org.yakindu.sct.ui.editor.utils.IYakinduSctHelpContextIds;
 
 import de.itemis.gmf.runtime.commons.properties.descriptors.IFormPropertyDescriptor;
@@ -37,7 +38,7 @@ public class TransitionPropertySection extends AbstractEditorPropertySection {
 				SGraphPackage.Literals.EXPRESSION_ELEMENT__EXPRESSION,
 				"Expression: ",
 				IYakinduSctHelpContextIds.SC_PROPERTIES_TRANSITION_EXPRESSION,
-				getInjector(SGraphPackage.Literals.TRANSITION),
+				getInjector(SemanticTarget.TransitionExpression),
 				new CloningBasedFakeContextResourcesProvider(
 						Collections.singletonList(getActiveEditorResource())));
 		descriptors.add(expressionsDescriptor);

+ 16 - 10
plugins/org.yakindu.sct.ui.integration.stext/plugin.xml

@@ -3,14 +3,20 @@
 <plugin>
    <extension
          point="org.yakindu.sct.ui.editor.expressions">
-      <ExpressionProvider
-            class="org.yakindu.sct.ui.integration.stext.TransitionExpressionProvider">
-      </ExpressionProvider>
-      <ExpressionProvider
-            class="org.yakindu.sct.ui.integration.stext.StateExpressionProvider">
-      </ExpressionProvider>
-      <ExpressionProvider
-            class="org.yakindu.sct.ui.integration.stext.StatechartExpressionProvider">
-      </ExpressionProvider>
-   </extension>
+      <ExpressionLanguageProvider
+            class="org.yakindu.sct.ui.integration.stext.StatechartExpressionProvider"
+            resourceExtension="sct"
+            semanticTarget="StatechartInterface">
+      </ExpressionLanguageProvider>
+      <ExpressionLanguageProvider
+            class="org.yakindu.sct.ui.integration.stext.StateExpressionProvider"
+            resourceExtension="sct"
+            semanticTarget="StateDeclaration">
+      </ExpressionLanguageProvider>
+      <ExpressionLanguageProvider
+            class="org.yakindu.sct.ui.integration.stext.TransitionExpressionProvider"
+            resourceExtension="sct"
+            semanticTarget="TransitionExpression">
+      </ExpressionLanguageProvider>
+   </extension>
 </plugin>

+ 0 - 17
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/ExtensionsActivator.java

@@ -8,39 +8,22 @@ import org.osgi.framework.BundleContext;
  */
 public class ExtensionsActivator extends AbstractUIPlugin {
 
-	// The plug-in ID
 	public static final String PLUGIN_ID = "org.yakindu.sct.statechart.expressions.ui.extensions"; //$NON-NLS-1$
 
-	// The shared instance
 	private static ExtensionsActivator plugin;
 
-	
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
-	 */
 	public void start(BundleContext context) throws Exception {
 		super.start(context);
 		plugin = this;
 	}
 
-	/*
-	 * (non-Javadoc)
-	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
-	 */
 	public void stop(BundleContext context) throws Exception {
 		plugin = null;
 		super.stop(context);
 	}
 
-	/**
-	 * Returns the shared instance
-	 *
-	 * @return the shared instance
-	 */
 	public static ExtensionsActivator getDefault() {
 		return plugin;
 	}
-	
 
 }

+ 7 - 26
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/StateExpressionProvider.java

@@ -1,17 +1,11 @@
 package org.yakindu.sct.ui.integration.stext;
 
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.swt.SWT;
-import org.eclipse.xtext.ui.shared.SharedStateModule;
-import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 import org.yakindu.sct.ui.integration.stext.modules.StateRuntimeModule;
 import org.yakindu.sct.ui.integration.stext.modules.StateUIModule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.util.Modules;
+import com.google.inject.Module;
 
 /**
  * 
@@ -19,28 +13,15 @@ import com.google.inject.util.Modules;
  * 
  */
 public class StateExpressionProvider extends AbstractExpressionsProvider
-		implements IExpressionsProvider {
+		implements IExpressionLanguageProvider {
 
 	@Override
-	protected Injector createInjector() {
-		return Guice.createInjector(Modules.override(
-				Modules.override(new StateRuntimeModule()).with(
-						new StateUIModule(ExtensionsActivator.getDefault())))
-				.with(new SharedStateModule()));
+	protected Module getRuntimeModule() {
+		return new StateRuntimeModule();
 	}
 
-	public int getStyle() {
-		return SWT.MULTI;
-	}
-	
 	@Override
-	protected EClass getType() {
-		return SGraphPackage.Literals.STATE;
+	protected Module getUIModule() {
+		return new StateUIModule(ExtensionsActivator.getDefault());
 	}
-
-	@Override
-	protected String getResourceExtension() {
-		return "sct";
-	}
-
 }

+ 7 - 26
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/StatechartExpressionProvider.java

@@ -1,17 +1,11 @@
 package org.yakindu.sct.ui.integration.stext;
 
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.swt.SWT;
-import org.eclipse.xtext.ui.shared.SharedStateModule;
-import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 import org.yakindu.sct.ui.integration.stext.modules.StatechartRuntimeModule;
 import org.yakindu.sct.ui.integration.stext.modules.StatechartUIModule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.util.Modules;
+import com.google.inject.Module;
 
 /**
  * 
@@ -19,28 +13,15 @@ import com.google.inject.util.Modules;
  * 
  */
 public class StatechartExpressionProvider extends AbstractExpressionsProvider
-		implements IExpressionsProvider {
+		implements IExpressionLanguageProvider {
 
 	@Override
-	protected Injector createInjector() {
-		return Guice.createInjector(Modules.override(
-				Modules.override(new StatechartRuntimeModule())
-						.with(new StatechartUIModule(ExtensionsActivator
-								.getDefault()))).with(new SharedStateModule()));
-	}
-
-	public int getStyle() {
-		return SWT.MULTI;
-	}
-
-	@Override
-	protected EClass getType() {
-		return SGraphPackage.Literals.STATECHART;
+	protected Module getRuntimeModule() {
+		return new StatechartRuntimeModule();
 	}
 
 	@Override
-	protected String getResourceExtension() {
-		return "sct";
+	protected Module getUIModule() {
+		return new StatechartUIModule(ExtensionsActivator.getDefault());
 	}
-
 }

+ 7 - 25
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/TransitionExpressionProvider.java

@@ -1,17 +1,11 @@
 package org.yakindu.sct.ui.integration.stext;
 
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.swt.SWT;
-import org.eclipse.xtext.ui.shared.SharedStateModule;
-import org.yakindu.sct.model.sgraph.SGraphPackage;
 import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
 import org.yakindu.sct.ui.integration.stext.modules.TransitionRuntimeModule;
 import org.yakindu.sct.ui.integration.stext.modules.TransitionUIModule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-import com.google.inject.util.Modules;
+import com.google.inject.Module;
 
 /**
  * 
@@ -19,27 +13,15 @@ import com.google.inject.util.Modules;
  * 
  */
 public class TransitionExpressionProvider extends AbstractExpressionsProvider
-		implements IExpressionsProvider {
-
-	public Injector createInjector() {
-		return Guice.createInjector(Modules.override(
-				Modules.override(new TransitionRuntimeModule())
-						.with(new TransitionUIModule(ExtensionsActivator
-								.getDefault()))).with(new SharedStateModule()));
-	}
-
-	public int getStyle() {
-		return SWT.SINGLE;
-	}
+		implements IExpressionLanguageProvider {
 
 	@Override
-	protected EClass getType() {
-		return SGraphPackage.Literals.TRANSITION;
+	protected Module getRuntimeModule() {
+		return new TransitionRuntimeModule();
 	}
 
 	@Override
-	protected String getResourceExtension() {
-		return "sct";
+	protected Module getUIModule() {
+		return new TransitionUIModule(ExtensionsActivator.getDefault());
 	}
-
 }

+ 14 - 3
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StateRuntimeModule.java

@@ -1,14 +1,25 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
 package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.xtext.parser.IParser;
 import org.yakindu.sct.model.stext.STextRuntimeModule;
 import org.yakindu.sct.ui.integration.stext.parsers.StateAntlrParser;
+
 /**
  * 
- * @author muelder
- *
+ * @author andreas muelder - Initial contribution and API
+ * 
  */
-public class StateRuntimeModule extends STextRuntimeModule{
+public class StateRuntimeModule extends STextRuntimeModule {
 	@Override
 	public Class<? extends IParser> bindIParser() {
 		return StateAntlrParser.class;

+ 12 - 2
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StateUIModule.java

@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
 package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -7,8 +17,8 @@ import org.yakindu.sct.model.stext.ui.STextUiModule;
 import org.yakindu.sct.ui.integration.stext.parsers.StateContentAssistParser;
 /**
  * 
- * @author muelder
- *
+ * @author andreas muelder - Initial contribution and API
+ * 
  */
 public class StateUIModule extends STextUiModule{
 

+ 16 - 2
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StatechartRuntimeModule.java

@@ -1,10 +1,24 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
 package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.xtext.parser.IParser;
 import org.yakindu.sct.model.stext.STextRuntimeModule;
 import org.yakindu.sct.ui.integration.stext.parsers.StatechartAntlrParser;
-
-public class StatechartRuntimeModule extends STextRuntimeModule{
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public class StatechartRuntimeModule extends STextRuntimeModule {
 	@Override
 	public Class<? extends IParser> bindIParser() {
 		return StatechartAntlrParser.class;

+ 17 - 2
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/StatechartUIModule.java

@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
 package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.ui.plugin.AbstractUIPlugin;
@@ -5,17 +15,22 @@ import org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser;
 import org.eclipse.xtext.ui.editor.hover.ProblemAnnotationHover;
 import org.yakindu.sct.model.stext.ui.STextUiModule;
 import org.yakindu.sct.ui.integration.stext.parsers.StatechartContentAssistParser;
-
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
 public class StatechartUIModule extends STextUiModule {
 
 	public StatechartUIModule(AbstractUIPlugin plugin) {
 		super(plugin);
 	}
+
 	@Override
 	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
 		return StatechartContentAssistParser.class;
 	}
-	
+
 	public Class<? extends org.eclipse.jface.text.ITextHover> bindITextHover() {
 		return ProblemAnnotationHover.class;
 	}

+ 11 - 1
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/TransitionRuntimeModule.java

@@ -1,3 +1,13 @@
+/**
+ * Copyright (c) 2011 committers of YAKINDU and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * Contributors:
+ * 	committers of YAKINDU - initial API and implementation
+ * 
+ */
 package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.xtext.parser.IParser;
@@ -6,7 +16,7 @@ import org.yakindu.sct.ui.integration.stext.parsers.TransitionAntlrParser;
 
 /**
  * 
- * @author muelder
+ * @author andreas muelder - Initial contribution and API
  * 
  */
 public class TransitionRuntimeModule extends STextRuntimeModule {

+ 1 - 1
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/TransitionUIModule.java

@@ -8,7 +8,7 @@ import org.yakindu.sct.ui.integration.stext.parsers.TransitionContentAssistParse
 
 /**
  * 
- * @author muelder
+ * @author andreas muelder - Initial contribution and API
  * 
  */
 public class TransitionUIModule extends STextUiModule {