Browse Source

Show declaration data on Declaration View start during simulation

Andreas Mülder 13 years ago
parent
commit
17d805cd73

+ 29 - 5
plugins/org.yakindu.sct.simulation.ui/src/org/yakindu/sct/simulation/ui/view/SimulationView.java

@@ -11,6 +11,7 @@
 package org.yakindu.sct.simulation.ui.view;
 
 import org.apache.commons.lang.time.DurationFormatUtils;
+import org.eclipse.core.runtime.IAdaptable;
 import org.eclipse.core.runtime.PlatformObject;
 import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.DebugPlugin;
@@ -65,6 +66,7 @@ import org.yakindu.sct.simulation.ui.view.editing.RealEditingSupport;
 public class SimulationView extends ViewPart implements IDebugContextListener,
 		IDebugEventSetListener {
 
+	private static final String INITIAL_TIME = "00:00:00:00";
 	private TreeViewer viewer;
 	private SCTDebugTarget debugTarget;
 	private Text scaleFactor;
@@ -98,6 +100,22 @@ public class SimulationView extends ViewPart implements IDebugContextListener,
 		createViewer(parent);
 		createTimeScalingSection(parent);
 		hookActions();
+		setActiveSession();
+	}
+
+	private void setActiveSession() {
+		// if a simulation session is running, we should initialize with its
+		// content
+		IAdaptable debugContext = DebugUITools.getDebugContext();
+		if (debugContext != null) {
+			Object debugTarget = debugContext.getAdapter(IDebugTarget.class);
+			if (debugTarget != null && debugTarget instanceof SCTDebugTarget) {
+				if (!((SCTDebugTarget) debugTarget).isTerminated()) {
+					this.debugTarget = (SCTDebugTarget) debugTarget;
+					setInput(this.debugTarget);
+				}
+			}
+		}
 	}
 
 	@Override
@@ -156,7 +174,7 @@ public class SimulationView extends ViewPart implements IDebugContextListener,
 		GridDataFactory.fillDefaults().applyTo(label);
 		lblVirtualTime = new Label(parent, SWT.NONE);
 		lblVirtualTime.setFont(font);
-		lblVirtualTime.setText("00:00:00:00");
+		lblVirtualTime.setText(INITIAL_TIME);
 
 		GridDataFactory.fillDefaults().grab(true, false).span(2, 0)
 				.applyTo(lblVirtualTime);
@@ -165,7 +183,7 @@ public class SimulationView extends ViewPart implements IDebugContextListener,
 		GridDataFactory.fillDefaults().applyTo(label2);
 		lblRealTime = new Label(parent, SWT.NONE);
 		lblRealTime.setFont(font);
-		lblRealTime.setText("00:00:00:00");
+		lblRealTime.setText(INITIAL_TIME);
 		GridDataFactory.fillDefaults().grab(true, false).span(2, 0)
 				.applyTo(lblRealTime);
 
@@ -227,15 +245,19 @@ public class SimulationView extends ViewPart implements IDebugContextListener,
 					.getAdapter(IDebugTarget.class);
 			if (newTarget != debugTarget && newTarget != null
 					&& !newTarget.isTerminated()) {
-				refreshInput(newTarget);
 				debugTarget = newTarget;
-				clockUpdater.setTerminated(false);
-				new Thread(clockUpdater).start();
+				setInput(newTarget);
 			}
 		}
 
 	}
 
+	private void setInput(SCTDebugTarget newTarget) {
+		refreshInput(newTarget);
+		clockUpdater.setTerminated(false);
+		new Thread(clockUpdater).start();
+	}
+
 	public void handleDebugEvents(DebugEvent[] events) {
 		for (DebugEvent debugEvent : events) {
 			handleDebugEvent(debugEvent);
@@ -249,6 +271,8 @@ public class SimulationView extends ViewPart implements IDebugContextListener,
 				public void run() {
 					viewer.setInput(null);
 					clockUpdater.setTerminated(true);
+					lblRealTime.setText(INITIAL_TIME);
+					lblVirtualTime.setText(INITIAL_TIME);
 				}
 			});
 			break;