summaryrefslogtreecommitdiff
path: root/sources/simulator
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-06-11 09:48:10 +0000
committerPaul Buetow <paul@buetow.org>2008-06-11 09:48:10 +0000
commit0e2e70d5a393024f3ae4a3a3560b4df51075000a (patch)
tree27c659d282bec3508304d5fa80a34a1662185950 /sources/simulator
parent412a1ac0e6311fe39452ae41b6eada4ef17cce34 (diff)
More javadoc.
Several bugfixes. New feauture: Boolean: sim.periodic A lot of more which i forgot!
Diffstat (limited to 'sources/simulator')
-rw-r--r--sources/simulator/VSMain.java7
-rw-r--r--sources/simulator/VSSimulator.java2
-rw-r--r--sources/simulator/VSSimulatorCanvas.java42
-rw-r--r--sources/simulator/VSSimulatorFrame.java45
4 files changed, 71 insertions, 25 deletions
diff --git a/sources/simulator/VSMain.java b/sources/simulator/VSMain.java
index 0df4a41..7088f65 100644
--- a/sources/simulator/VSMain.java
+++ b/sources/simulator/VSMain.java
@@ -69,9 +69,10 @@ public class VSMain {
VSSimulatorFrame simulatorFrame =
new VSSimulatorFrame(prefs, relativeTo);
- new VSEditorFrame(prefs, relativeTo,
- new VSSimulatorEditor(prefs, simulatorFrame,
- VSSimulatorEditor.OPENED_NEW_WINDOW));
+ VSSimulatorEditor editor =
+ new VSSimulatorEditor(prefs, simulatorFrame,
+ VSSimulatorEditor.OPENED_NEW_WINDOW);
+ new VSEditorFrame(prefs, relativeTo, editor);
}
/**
diff --git a/sources/simulator/VSSimulator.java b/sources/simulator/VSSimulator.java
index 1f8f986..2c25867 100644
--- a/sources/simulator/VSSimulator.java
+++ b/sources/simulator/VSSimulator.java
@@ -1083,11 +1083,11 @@ public class VSSimulator extends JPanel implements VSSerializable {
*/
private void updateProcessesComboBox() {
int numProcesses = simulatorCanvas.getNumProcesses();
-
String processString = prefs.getString("lang.process");
for (int i = 0; i < numProcesses; ++i) {
int processID = simulatorCanvas.getProcess(i).getProcessID();
+ System.out.println("FOO " + processID + " index " + i);
processesComboBox.removeItemAt(i);
localPIDComboBox.removeItemAt(i);
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)
diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java
index 1fb5cab..caf06cb 100644
--- a/sources/simulator/VSSimulatorFrame.java
+++ b/sources/simulator/VSSimulatorFrame.java
@@ -149,21 +149,35 @@ public class VSSimulatorFrame extends VSFrame {
} else if (sourceText.equals(
finalPrefs.getString("lang.save"))) {
+ VSSimulatorCanvas simulatorCanvas =
+ currentSimulator.getSimulatorCanvas();
+ boolean flag = !simulatorCanvas.isPaused()
+ && !simulatorCanvas.hasFinished();
+
+ if (flag)
+ pauseCurrentSimulator();
- pauseCurrentSimulator();
- resetCurrentSimulator();
VSSerialize serialize = new VSSerialize();
serialize.saveSimulator(VSSerialize.LAST_FILENAME,
currentSimulator);
+ if (flag)
+ startCurrentSimulator();
} else if (sourceText.equals(
finalPrefs.getString("lang.saveas"))) {
+ VSSimulatorCanvas simulatorCanvas =
+ currentSimulator.getSimulatorCanvas();
+ boolean flag = !simulatorCanvas.isPaused()
+ && !simulatorCanvas.hasFinished();
+ if (flag)
+ pauseCurrentSimulator();
- pauseCurrentSimulator();
- resetCurrentSimulator();
VSSerialize serialize = new VSSerialize();
serialize.saveSimulator(currentSimulator);
+ if (flag)
+ startCurrentSimulator();
+
} else if (sourceText.equals(
finalPrefs.getString("lang.about"))) {
new VSAbout(finalPrefs, VSSimulatorFrame.this);
@@ -174,14 +188,7 @@ public class VSSimulatorFrame extends VSFrame {
} else if (sourceText.equals(
finalPrefs.getString("lang.start"))) {
- VSMenuItemStates menuItemState =
- currentSimulator.getMenuItemStates();
- menuItemState.setStart(false);
- menuItemState.setPause(true);
- menuItemState.setReset(false);
- menuItemState.setReplay(true);
- currentSimulator.getSimulatorCanvas().play();
- updateSimulatorMenu();
+ startCurrentSimulator();
} else if (sourceText.equals(
finalPrefs.getString("lang.pause"))) {
@@ -537,6 +544,20 @@ public class VSSimulatorFrame extends VSFrame {
}
/**
+ * Starts the current simulator
+ */
+ public void startCurrentSimulator() {
+ VSMenuItemStates menuItemState =
+ currentSimulator.getMenuItemStates();
+ menuItemState.setStart(false);
+ menuItemState.setPause(true);
+ menuItemState.setReset(false);
+ menuItemState.setReplay(true);
+ currentSimulator.getSimulatorCanvas().play();
+ updateSimulatorMenu();
+ }
+
+ /**
* Pauses the current simulator
*/
public void pauseCurrentSimulator() {