Explorar el Código

Refactored Expression providers to contain less duplicate code.

benjamin.schwertfeger@googlemail.com hace 12 años
padre
commit
0a1ce91f5a

+ 32 - 0
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/AbstractSTextExpressionProvider.java

@@ -0,0 +1,32 @@
+package org.yakindu.sct.ui.integration.stext;
+
+import org.eclipse.emf.ecore.EObject;
+import org.yakindu.sct.model.stext.STextRuntimeModule;
+import org.yakindu.sct.model.stext.ui.STextUiModule;
+import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
+import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
+import org.yakindu.sct.ui.integration.stext.modules.EntryRuleRuntimeModule;
+import org.yakindu.sct.ui.integration.stext.modules.EntryRuleUIModule;
+
+import com.google.inject.Module;
+import com.google.inject.util.Modules;
+
+/**
+ * 
+ * @author andreas muelder - Initial contribution and API
+ * 
+ */
+public abstract class AbstractSTextExpressionProvider extends AbstractExpressionsProvider implements IExpressionLanguageProvider {
+
+	@Override
+	protected Module getRuntimeModule() {
+		return Modules.override(new STextRuntimeModule()).with(new EntryRuleRuntimeModule(getRule()));
+	}
+
+	protected abstract Class<? extends EObject> getRule();
+
+	@Override
+	protected Module getUIModule() {
+		return Modules.override(new STextUiModule(ExtensionsActivator.getDefault())).with(new EntryRuleUIModule(getRule()));
+	}
+}

+ 4 - 14
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/ExpressionExpressionProvider.java

@@ -1,27 +1,17 @@
 package org.yakindu.sct.ui.integration.stext;
 
+import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.model.stext.stext.Expression;
-import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleRuntimeModule;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleUIModule;
-
-import com.google.inject.Module;
 
 /**
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class ExpressionExpressionProvider extends AbstractExpressionsProvider implements IExpressionLanguageProvider {
-
-	@Override
-	protected Module getRuntimeModule() {
-		return new EntryRuleRuntimeModule(Expression.class);
-	}
+public class ExpressionExpressionProvider extends AbstractSTextExpressionProvider {
 
 	@Override
-	protected Module getUIModule() {
-		return new EntryRuleUIModule(ExtensionsActivator.getDefault(), Expression.class);
+	protected Class<? extends EObject> getRule() {
+		return Expression.class;
 	}
 }

+ 4 - 14
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/StateExpressionProvider.java

@@ -1,27 +1,17 @@
 package org.yakindu.sct.ui.integration.stext;
 
+import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.model.stext.stext.StateSpecification;
-import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleRuntimeModule;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleUIModule;
-
-import com.google.inject.Module;
 
 /**
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class StateExpressionProvider extends AbstractExpressionsProvider implements IExpressionLanguageProvider {
-
-	@Override
-	protected Module getRuntimeModule() {
-		return new EntryRuleRuntimeModule(StateSpecification.class);
-	}
+public class StateExpressionProvider extends AbstractSTextExpressionProvider {
 
 	@Override
-	protected Module getUIModule() {
-		return new EntryRuleUIModule(ExtensionsActivator.getDefault(), StateSpecification.class);
+	protected Class<? extends EObject> getRule() {
+		return StateSpecification.class;
 	}
 }

+ 6 - 16
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/StatechartExpressionProvider.java

@@ -1,27 +1,17 @@
 package org.yakindu.sct.ui.integration.stext;
 
-import org.yakindu.sct.model.stext.stext.StatechartSpecification;
-import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleRuntimeModule;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleUIModule;
-
-import com.google.inject.Module;
+import org.eclipse.emf.ecore.EObject;
+import org.yakindu.sct.model.stext.stext.StateSpecification;
 
 /**
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class StatechartExpressionProvider extends AbstractExpressionsProvider implements IExpressionLanguageProvider {
-
-	@Override
-	protected Module getRuntimeModule() {
-		return new EntryRuleRuntimeModule(StatechartSpecification.class);
-	}
+public class StatechartExpressionProvider extends AbstractSTextExpressionProvider {
 
 	@Override
-	protected Module getUIModule() {
-		return new EntryRuleUIModule(ExtensionsActivator.getDefault(), StatechartSpecification.class);
+	protected Class<? extends EObject> getRule() {
+		return StateSpecification.class;
 	}
-}
+}

+ 5 - 15
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/TransitionExpressionProvider.java

@@ -1,27 +1,17 @@
 package org.yakindu.sct.ui.integration.stext;
 
+import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.model.stext.stext.TransitionSpecification;
-import org.yakindu.sct.ui.editor.extensions.AbstractExpressionsProvider;
-import org.yakindu.sct.ui.editor.extensions.IExpressionLanguageProvider;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleRuntimeModule;
-import org.yakindu.sct.ui.integration.stext.modules.EntryRuleUIModule;
-
-import com.google.inject.Module;
 
 /**
  * 
  * @author andreas muelder - Initial contribution and API
  * 
  */
-public class TransitionExpressionProvider extends AbstractExpressionsProvider implements IExpressionLanguageProvider {
-
-	@Override
-	protected Module getRuntimeModule() {
-		return new EntryRuleRuntimeModule(TransitionSpecification.class);
-	}
+public class TransitionExpressionProvider extends AbstractSTextExpressionProvider {
 
 	@Override
-	protected Module getUIModule() {
-		return new EntryRuleUIModule(ExtensionsActivator.getDefault(), TransitionSpecification.class);
+	protected Class<? extends EObject> getRule() {
+		return TransitionSpecification.class;
 	}
-}
+}

+ 2 - 3
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/EntryRuleRuntimeModule.java

@@ -2,13 +2,13 @@ package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.xtext.parser.IParser;
-import org.yakindu.sct.model.stext.STextRuntimeModule;
+import org.eclipse.xtext.service.AbstractGenericModule;
 import org.yakindu.sct.ui.integration.stext.parsers.EntryRuleAntlrSTextParser;
 
 import com.google.inject.Binder;
 import com.google.inject.name.Names;
 
-public class EntryRuleRuntimeModule extends STextRuntimeModule {
+public class EntryRuleRuntimeModule extends AbstractGenericModule {
 
 	private Class<? extends EObject> parserRule;
 
@@ -23,7 +23,6 @@ public class EntryRuleRuntimeModule extends STextRuntimeModule {
 				.toInstance(parserRule.getSimpleName());
 	}
 
-	@Override
 	public Class<? extends IParser> bindIParser() {
 		return EntryRuleAntlrSTextParser.class;
 	}

+ 3 - 6
plugins/org.yakindu.sct.ui.integration.stext/src/org/yakindu/sct/ui/integration/stext/modules/EntryRuleUIModule.java

@@ -1,21 +1,19 @@
 package org.yakindu.sct.ui.integration.stext.modules;
 
 import org.eclipse.emf.ecore.EObject;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.xtext.service.AbstractGenericModule;
 import org.eclipse.xtext.ui.editor.contentassist.antlr.IContentAssistParser;
-import org.yakindu.sct.model.stext.ui.STextUiModule;
 import org.yakindu.sct.ui.integration.stext.parsers.EntryRuleAntlrSTextParser;
 import org.yakindu.sct.ui.integration.stext.parsers.EntryRuleContentAssistParser;
 
 import com.google.inject.Binder;
 import com.google.inject.name.Names;
 
-public class EntryRuleUIModule extends STextUiModule {
+public class EntryRuleUIModule extends AbstractGenericModule {
 
 	private Class<? extends EObject> parserRule;
 
-	public EntryRuleUIModule(AbstractUIPlugin plugin, Class<? extends EObject> parserRule) {
-		super(plugin);
+	public EntryRuleUIModule(Class<? extends EObject> parserRule) {
 		this.parserRule = parserRule;
 	}
 
@@ -26,7 +24,6 @@ public class EntryRuleUIModule extends STextUiModule {
 				.toInstance(parserRule.getSimpleName());
 	}
 
-	@Override
 	public Class<? extends IContentAssistParser> bindIContentAssistParser() {
 		return EntryRuleContentAssistParser.class;
 	}