瀏覽代碼

Last check in for this year ;-)

Simulation now highlights full transition paths including pseudo states.
terfloth@itemis.de 13 年之前
父節點
當前提交
9519c90918

+ 28 - 7
plugins/org.yakindu.sct.simulation.ui/src/org/yakindu/sct/simulation/ui/model/presenter/DefaultDynamicNotationHandler.java

@@ -1,9 +1,13 @@
 package org.yakindu.sct.simulation.ui.model.presenter;
 
+import java.util.ArrayList;
+import java.util.List;
+
 import org.eclipse.draw2d.ColorConstants;
 import org.eclipse.emf.ecore.EObject;
 import org.yakindu.sct.model.sexec.ReactionFired;
 import org.yakindu.sct.model.sexec.Trace;
+import org.yakindu.sct.model.sexec.TraceNodeExecuted;
 import org.yakindu.sct.model.sexec.TraceStateEntered;
 import org.yakindu.sct.model.sexec.TraceStateExited;
 import org.yakindu.sct.model.sgraph.Vertex;
@@ -13,6 +17,7 @@ import de.itemis.gmf.runtime.commons.highlighting.HighlightingParameters;
 
 /**
  * @author andreas muelder - Initial contribution and API
+ * @author axel terfloth - Additions
  * 
  */
 public class DefaultDynamicNotationHandler extends AbstractDynamicNotationHandler {
@@ -20,14 +25,16 @@ public class DefaultDynamicNotationHandler extends AbstractDynamicNotationHandle
 	private static final HighlightingParameters TRANSITION_PARAMS = new HighlightingParameters(
 			0, ColorConstants.darkGreen, ColorConstants.gray, false);
 
-	private EObject lastTakenTransition = null;
+	private List<EObject> lastTransitionPath = new ArrayList<EObject>();
 
 	public void restoreNotationState(IExecutionContext context) {
 		for (Vertex vertex : context.getAllActiveStates()) {
 			getHighlightingSupport().fadeIn(vertex,
 					HighlightingParameters.DEFAULT);
 		}
-		getHighlightingSupport().fadeIn(lastTakenTransition, TRANSITION_PARAMS);
+		for (EObject obj : lastTransitionPath) {
+			getHighlightingSupport().fadeIn(obj, TRANSITION_PARAMS);
+		}
 
 	}
 
@@ -41,16 +48,28 @@ public class DefaultDynamicNotationHandler extends AbstractDynamicNotationHandle
 		getHighlightingSupport().fadeOut(
 				((TraceStateExited) trace).getState().getSourceElement(),
 				HighlightingParameters.DEFAULT);
+		
+		for (EObject obj : lastTransitionPath) {
+			getHighlightingSupport().fadeOut(obj, TRANSITION_PARAMS);
+		}
+		lastTransitionPath.clear();
 	}
 
 	public void visualizeStep(final ReactionFired trace) {
 		EObject transition = trace.getReaction().getSourceElement();
-		if (lastTakenTransition != null) {
-			getHighlightingSupport().fadeOut(lastTakenTransition,
-					TRANSITION_PARAMS);
-		}
+//		if (lastTransitionPath != null) {
+//			getHighlightingSupport().fadeOut(lastTransitionPath,
+//					TRANSITION_PARAMS);
+//		}
 		getHighlightingSupport().fadeIn(transition, TRANSITION_PARAMS);
-		lastTakenTransition = transition;
+		lastTransitionPath.add(transition);
+	}
+
+	public void visualizeStep(final TraceNodeExecuted trace) {
+		EObject node = trace.getNode().getSourceElement();
+//		getHighlightingSupport().flash(node, HighlightingParameters.DEFAULT);
+		getHighlightingSupport().fadeIn(node, TRANSITION_PARAMS);
+		lastTransitionPath.add(node);
 	}
 
 	// dispatch
@@ -61,5 +80,7 @@ public class DefaultDynamicNotationHandler extends AbstractDynamicNotationHandle
 			visualizeStep((TraceStateExited) trace);
 		if (trace instanceof ReactionFired)
 			visualizeStep((ReactionFired) trace);
+		if (trace instanceof TraceNodeExecuted)
+			visualizeStep((TraceNodeExecuted) trace);
 	}
 }