summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulatorCanvas.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-06-02 21:35:32 +0000
committerPaul Buetow <paul@buetow.org>2008-06-02 21:35:32 +0000
commitecdeab2258fc12a3b16337eff49a9b42536d3076 (patch)
tree4bd4413132d9a3d29bb22a80608de8a35a9a717d /sources/simulator/VSSimulatorCanvas.java
parentadca28d981ef8c9d09c5ba0a6e56b2145a14c60f (diff)
save/open works!?
Diffstat (limited to 'sources/simulator/VSSimulatorCanvas.java')
-rw-r--r--sources/simulator/VSSimulatorCanvas.java60
1 files changed, 32 insertions, 28 deletions
diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java
index 752f726..1b30a51 100644
--- a/sources/simulator/VSSimulatorCanvas.java
+++ b/sources/simulator/VSSimulatorCanvas.java
@@ -673,10 +673,10 @@ public class VSSimulatorCanvas extends Canvas
* order to gain performance!
*/
private void recalcOnChange() {
- synchronized (processes) {
- if (processes.size() == 0)
- return;
- }
+ synchronized (processes) {
+ if (processes.size() == 0)
+ return;
+ }
processlineColor = prefs.getColor("col.process.line");
processSecondlineColor = prefs.getColor("col.process.secondline");
@@ -1489,15 +1489,15 @@ public class VSSimulatorCanvas extends Canvas
index = processes.indexOf(process);
processes.remove(index);
- for (VSProcess p : processes)
+ for (VSProcess p : processes)
p.removedAProcessAtIndex(index);
numProcesses = processes.size();
}
- taskManager.removeTasksOf(process);
- simulator.removedAProcessAtIndex(index);
- recalcOnChange();
+ taskManager.removeTasksOf(process);
+ simulator.removedAProcessAtIndex(index);
+ recalcOnChange();
ArrayList<VSMessageLine> removeThose =
new ArrayList<VSMessageLine>();
@@ -1534,13 +1534,25 @@ public class VSSimulatorCanvas extends Canvas
/**
* Adds a new process to the simulator.
- *
- * @return The process which has been added
+ *
+ * @return The process which has been added
*/
private VSProcess addProcess() {
synchronized (processes) {
numProcesses = processes.size() + 1;
VSProcess newProcess = createProcess(processes.size());
+ addProcess(newProcess);
+ return newProcess;
+ }
+ }
+
+ /**
+ * Adds a the given process to the simulator.
+ *
+ * @newProcess The process to add
+ */
+ private void addProcess(VSProcess newProcess) {
+ synchronized (processes) {
processes.add(newProcess);
for (VSProcess process : processes)
@@ -1549,8 +1561,6 @@ public class VSSimulatorCanvas extends Canvas
recalcOnChange();
simulator.addProcessAtIndex(processes.size()-1);
-
- return newProcess;
}
}
@@ -1582,25 +1592,19 @@ public class VSSimulatorCanvas extends Canvas
System.out.println("Deserializing: VSSimulatorCanvas");
int num = ((Integer) objectInputStream.readObject()).intValue();
- logging.clear();
+ logging.clear();
- ArrayList<VSProcess> newProcesses = new ArrayList<VSProcess>();
- for (int i = 0; i < num; ++i) {
- VSProcess process = createProcess(i);
- process.deserialize(serialize, objectInputStream);
- newProcesses.add(process);
+ if (num > numProcesses) {
+ for (int i = numProcesses; i < num; ++i)
+ addProcess();
+ } else {
+ int oldNum = numProcesses;
+ for (int i = num; i < oldNum; ++i)
+ removeProcess(getProcess(0));
}
- synchronized (processes) {
- int diff = numProcesses - num;
- if (diff > 0)
- for (int i = num; i < numProcesses; ++i)
- removeProcess(processes.get(num));
-
- for (int i = 0; i < num; ++i) {
-
- }
- }
+ for (int i = 0; i < num; ++i)
+ processes.get(0).deserialize(serialize, objectInputStream);
taskManager.deserialize(serialize, objectInputStream);
}