|
|
@@ -10,17 +10,26 @@
|
|
|
*/
|
|
|
package org.yakindu.sct.domain.default_.extension;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+import org.eclipse.emf.ecore.EObject;
|
|
|
+import org.eclipse.xtext.ui.shared.SharedStateModule;
|
|
|
import org.yakindu.sct.domain.default_.modules.DefaultSequencerModule;
|
|
|
import org.yakindu.sct.domain.default_.modules.DefaultSimulationModule;
|
|
|
import org.yakindu.sct.domain.default_.modules.DefaultTypeSystemModule;
|
|
|
-import org.yakindu.sct.domain.default_.modules.StateExpressionProvider;
|
|
|
-import org.yakindu.sct.domain.default_.modules.StatechartExpressionProvider;
|
|
|
-import org.yakindu.sct.domain.default_.modules.TransitionExpressionProvider;
|
|
|
+import org.yakindu.sct.domain.default_.modules.EntryRuleRuntimeModule;
|
|
|
+import org.yakindu.sct.domain.default_.modules.EntryRuleUIModule;
|
|
|
import org.yakindu.sct.domain.extension.IDomainModuleProvider;
|
|
|
import org.yakindu.sct.model.sgraph.State;
|
|
|
import org.yakindu.sct.model.sgraph.Statechart;
|
|
|
import org.yakindu.sct.model.sgraph.Transition;
|
|
|
import org.yakindu.sct.model.stext.STextRuntimeModule;
|
|
|
+import org.yakindu.sct.model.stext.stext.StateSpecification;
|
|
|
+import org.yakindu.sct.model.stext.stext.StatechartSpecification;
|
|
|
+import org.yakindu.sct.model.stext.stext.TransitionSpecification;
|
|
|
+import org.yakindu.sct.model.stext.ui.STextUiModule;
|
|
|
+import org.yakindu.sct.model.stext.ui.internal.STextActivator;
|
|
|
|
|
|
import com.google.inject.Module;
|
|
|
import com.google.inject.util.Modules;
|
|
|
@@ -32,6 +41,28 @@ import com.google.inject.util.Modules;
|
|
|
*/
|
|
|
public class DefaultDomainModuleProvider implements IDomainModuleProvider {
|
|
|
|
|
|
+ private static final Map<String, Class<? extends EObject>> semanticTargetToRuleMap = new HashMap<String, Class<? extends EObject>>();
|
|
|
+ static {
|
|
|
+ semanticTargetToRuleMap.put(Statechart.class.getName(), StatechartSpecification.class);
|
|
|
+ semanticTargetToRuleMap.put(Transition.class.getName(), TransitionSpecification.class);
|
|
|
+ semanticTargetToRuleMap.put(State.class.getName(), StateSpecification.class);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Module getSharedStateModule() {
|
|
|
+ return new SharedStateModule();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Module getLanguageRuntimeModule() {
|
|
|
+ return new STextRuntimeModule();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Module getLanguageUIModule() {
|
|
|
+ return new STextUiModule(STextActivator.getInstance());
|
|
|
+ }
|
|
|
+
|
|
|
protected Module getTypeSystemModule() {
|
|
|
return new DefaultTypeSystemModule();
|
|
|
}
|
|
|
@@ -41,46 +72,24 @@ public class DefaultDomainModuleProvider implements IDomainModuleProvider {
|
|
|
return new DefaultSimulationModule();
|
|
|
}
|
|
|
|
|
|
- @Override
|
|
|
- public Module getResourceModule() {
|
|
|
- return Modules.combine(new STextRuntimeModule(), getTypeSystemModule());
|
|
|
- }
|
|
|
-
|
|
|
@Override
|
|
|
public Module getSequencerModule() {
|
|
|
return new DefaultSequencerModule();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Module getEmbeddedEditorModule(String semanticTarget) {
|
|
|
- if (Statechart.class.getName().equals(semanticTarget)) {
|
|
|
- return getEmbeddedStatechartEditorModule();
|
|
|
- }
|
|
|
- if (State.class.getName().equals(semanticTarget)) {
|
|
|
- return getEmbeddedStateEditorModule();
|
|
|
- }
|
|
|
- if (Transition.class.getName().equals(semanticTarget)) {
|
|
|
- return getEmbeddedTransitionEditorModule();
|
|
|
- }
|
|
|
- throw new IllegalArgumentException("Illegal semantic target " + semanticTarget);
|
|
|
- }
|
|
|
-
|
|
|
- protected Module getEmbeddedTransitionEditorModule() {
|
|
|
- TransitionExpressionProvider provider = new TransitionExpressionProvider();
|
|
|
- Module module = provider.getModule();
|
|
|
- return Modules.combine(module, getTypeSystemModule());
|
|
|
+ public Module getResourceModule() {
|
|
|
+ return Modules.combine(getLanguageRuntimeModule(), getTypeSystemModule());
|
|
|
}
|
|
|
|
|
|
- protected Module getEmbeddedStateEditorModule() {
|
|
|
- StateExpressionProvider provider = new StateExpressionProvider();
|
|
|
- Module module = provider.getModule();
|
|
|
- return Modules.combine(module, getTypeSystemModule());
|
|
|
+ @Override
|
|
|
+ public Module getEmbeddedEditorModule(String semanticTarget) {
|
|
|
+ return getEmbeddedEditorModule(semanticTargetToRuleMap.get(semanticTarget));
|
|
|
}
|
|
|
|
|
|
- protected Module getEmbeddedStatechartEditorModule() {
|
|
|
- StatechartExpressionProvider provider = new StatechartExpressionProvider();
|
|
|
- Module module = provider.getModule();
|
|
|
- return Modules.combine(module, getTypeSystemModule());
|
|
|
+ protected Module getEmbeddedEditorModule(Class<? extends EObject> rule) {
|
|
|
+ Module runtimeModule = Modules.override(getResourceModule()).with(new EntryRuleRuntimeModule(rule));
|
|
|
+ Module uiModule = Modules.override(getLanguageUIModule()).with(new EntryRuleUIModule(rule));
|
|
|
+ return Modules.override(Modules.override(runtimeModule).with(uiModule)).with(getSharedStateModule());
|
|
|
}
|
|
|
-
|
|
|
}
|