diff options
| author | Paul Buetow <paul@buetow.org> | 2008-06-11 09:48:10 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-06-11 09:48:10 +0000 |
| commit | 0e2e70d5a393024f3ae4a3a3560b4df51075000a (patch) | |
| tree | 27c659d282bec3508304d5fa80a34a1662185950 /sources/simulator | |
| parent | 412a1ac0e6311fe39452ae41b6eada4ef17cce34 (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.java | 7 | ||||
| -rw-r--r-- | sources/simulator/VSSimulator.java | 2 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorCanvas.java | 42 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorFrame.java | 45 |
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() { |
