Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/support/DiagramUpdateFeature.java')
-rw-r--r--plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/support/DiagramUpdateFeature.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/support/DiagramUpdateFeature.java b/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/support/DiagramUpdateFeature.java
index 6d194add9..8cdd19284 100644
--- a/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/support/DiagramUpdateFeature.java
+++ b/plugins/org.eclipse.etrice.ui.behavior.fsm/src/org/eclipse/etrice/ui/behavior/fsm/support/DiagramUpdateFeature.java
@@ -14,9 +14,12 @@ package org.eclipse.etrice.ui.behavior.fsm.support;
import java.util.ArrayList;
+import org.eclipse.etrice.core.fsm.fSM.FSMFactory;
import org.eclipse.etrice.core.fsm.fSM.ModelComponent;
import org.eclipse.etrice.core.fsm.fSM.StateGraph;
import org.eclipse.etrice.ui.behavior.fsm.commands.StateGraphContext;
+import org.eclipse.etrice.ui.behavior.fsm.editor.AbstractFSMDiagramTypeProvider;
+import org.eclipse.etrice.ui.behavior.fsm.provider.GenModelProvider;
import org.eclipse.etrice.ui.behavior.fsm.provider.IInjectorProvider;
import org.eclipse.etrice.ui.behavior.fsm.support.util.DiagramEditingUtil;
import org.eclipse.etrice.ui.behavior.fsm.support.util.FSMSupportUtil;
@@ -65,9 +68,7 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
*/
@Override
public IReason updateNeeded(IUpdateContext context) {
- ModelComponent mc = FSMSupportUtil.getInstance().getModelComponent(getDiagram());
- Injector injector = ((IInjectorProvider) getFeatureProvider()).getInjector();
- StateGraphContext tree = StateGraphContext.createContextTree(mc, injector);
+ IStateGraphContext tree = createStateGraphContext();
usedShapes.clear();
@@ -110,9 +111,7 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
*/
@Override
public boolean update(IUpdateContext context) {
- ModelComponent mc = FSMSupportUtil.getInstance().getModelComponent(getDiagram());
- Injector injector = ((IInjectorProvider) getFeatureProvider()).getInjector();
- StateGraphContext tree = StateGraphContext.createContextTree(mc, injector);
+ IStateGraphContext tree = createStateGraphContext();
StateGraph currentStateGraph = ContextSwitcher.getCurrentStateGraph(getDiagram());
@@ -171,7 +170,7 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
* @param ctx
* @return
*/
- private IReason updateNeeded(StateGraphContext ctx) {
+ private IReason updateNeeded(IStateGraphContext ctx) {
StateGraph sg = ctx.getStateGraph();
ContainerShape cont = findStateGraphContainer(sg);
if (cont==null)
@@ -198,7 +197,7 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
}
// recursion
- for (StateGraphContext child : ctx.getChildren()) {
+ for (IStateGraphContext child : ctx.getChildren()) {
IReason needUpdate = updateNeeded(child);
if (needUpdate.toBoolean())
return needUpdate;
@@ -211,7 +210,7 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
* @param ctx
* @return
*/
- private boolean update(StateGraphContext ctx) {
+ private boolean update(IStateGraphContext ctx) {
boolean changed = false;
StateGraph sg = ctx.getStateGraph();
@@ -244,7 +243,7 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
}
// recursion
- for (StateGraphContext child : ctx.getChildren()) {
+ for (IStateGraphContext child : ctx.getChildren()) {
if (update(child))
changed = true;
}
@@ -264,5 +263,20 @@ public class DiagramUpdateFeature extends AbstractUpdateFeature {
}
return null;
}
+
+ private IStateGraphContext createStateGraphContext(){
+ ModelComponent mc = FSMSupportUtil.getInstance().getModelComponent(getDiagram());
+// Injector injector = ((IInjectorProvider) getFeatureProvider()).getInjector();
+// StateGraphContext tree = StateGraphContext.createContextTree(mc, injector);
+
+ // side effect on model, but diagram needs that for initial graph shape
+ if(mc.getStateMachine() == null || mc.getStateMachine().eIsProxy()){
+ mc.setStateMachine(FSMFactory.eINSTANCE.createStateGraph());
+ }
+
+ IStateGraphContext tree = new GenModelStateGraphContext((AbstractFSMDiagramTypeProvider)getFeatureProvider().getDiagramTypeProvider());
+
+ return tree;
+ }
}

Back to the top