summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulatorCanvas.java
diff options
context:
space:
mode:
Diffstat (limited to 'sources/simulator/VSSimulatorCanvas.java')
-rw-r--r--sources/simulator/VSSimulatorCanvas.java42
1 files changed, 33 insertions, 9 deletions
diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java
index b521fc7..039b624 100644
--- a/sources/simulator/VSSimulatorCanvas.java
+++ b/sources/simulator/VSSimulatorCanvas.java
@@ -86,7 +86,7 @@ public class VSSimulatorCanvas extends Canvas
private volatile boolean hasThreadStopped = false;
/** The simulator is finished. */
- private volatile boolean isFinished = false;
+ private volatile boolean hasFinished = false;
/** The simulator is resetted. */
private volatile boolean isResetted = false;
@@ -567,7 +567,7 @@ public class VSSimulatorCanvas extends Canvas
finalPrefs.getString("lang.process.crash"));
if (process == null || process.isCrashed() || isPaused ||
- time == 0 || isFinished)
+ time == 0 || hasFinished)
item.setEnabled(false);
else
item.addActionListener(actionListener);
@@ -577,7 +577,7 @@ public class VSSimulatorCanvas extends Canvas
finalPrefs.getString("lang.process.recover"));
if (process == null || !process.isCrashed() || isPaused ||
- time == 0 || isFinished)
+ time == 0 || hasFinished)
item.setEnabled(false);
else
item.addActionListener(actionListener);
@@ -748,7 +748,7 @@ public class VSSimulatorCanvas extends Canvas
* @param lastGlobalTime the last global time
*/
private void updateSimulator(long globalTime, long lastGlobalTime) {
- if (isPaused || isFinished)
+ if (isPaused || hasFinished)
return;
long lastSimulatorTime = simulatorTime;
@@ -1142,7 +1142,7 @@ public class VSSimulatorCanvas extends Canvas
*/
public void run() {
while (true) {
- while (!hasThreadStopped && (isPaused || isFinished ||
+ while (!hasThreadStopped && (isPaused || hasFinished ||
isResetted)) {
try {
Thread.sleep(100);
@@ -1195,8 +1195,8 @@ public class VSSimulatorCanvas extends Canvas
if (isResetted)
isResetted = false;
- else if (isFinished)
- isFinished = false;
+ else if (hasFinished)
+ hasFinished = false;
if (isPaused) {
isPaused = false;
@@ -1221,9 +1221,15 @@ public class VSSimulatorCanvas extends Canvas
}
simulator.finish();
- isFinished = true;
+ hasFinished = true;
logging.logg(prefs.getString("lang.simulator.finished"));
paint();
+
+ if (prefs.getBoolean("sim.periodic")) {
+ VSSimulatorFrame simulatorFrame = simulator.getSimulatorFrame();
+ simulatorFrame.resetCurrentSimulator();
+ simulatorFrame.startCurrentSimulator();
+ }
}
/**
@@ -1250,7 +1256,7 @@ public class VSSimulatorCanvas extends Canvas
isResetted = true;
isPaused = false;
- isFinished = false;
+ hasFinished = false;
startTime = System.currentTimeMillis();
time = 0;
lastTime = 0;
@@ -1564,6 +1570,24 @@ public class VSSimulatorCanvas extends Canvas
}
}
+ /**
+ * Checks if the simulation is paused.
+ *
+ * @return true, if the simulation is paused
+ */
+ boolean isPaused() {
+ return isPaused;
+ }
+
+ /**
+ * Checks if the simulation has finished
+ *
+ * @return true, if the simulation has finished
+ */
+ boolean hasFinished() {
+ return hasFinished;
+ }
+
/* (non-Javadoc)
* @see serialize.VSSerializable#serialize(serialize.VSSerialize,
* java.io.ObjectOutputStream)