summaryrefslogtreecommitdiff
path: root/sources/simulator
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-06-01 22:45:59 +0000
committerPaul Buetow <paul@buetow.org>2008-06-01 22:45:59 +0000
commit293c73f50f87b3d73d3947a9f79430b23ec4ddba (patch)
tree129ece28dcda9d17bb6e0fc417d8b25bb82dac4c /sources/simulator
parent8086082daaed71ee9105c156e3a1e8e63caf1990 (diff)
better serialization
Diffstat (limited to 'sources/simulator')
-rw-r--r--sources/simulator/VSSimulator.java62
-rw-r--r--sources/simulator/VSSimulatorCanvas.java61
-rw-r--r--sources/simulator/VSSimulatorFrame.java76
3 files changed, 94 insertions, 105 deletions
diff --git a/sources/simulator/VSSimulator.java b/sources/simulator/VSSimulator.java
index d3456b1..f376719 100644
--- a/sources/simulator/VSSimulator.java
+++ b/sources/simulator/VSSimulator.java
@@ -36,6 +36,7 @@ import events.*;
import events.internal.*;
import prefs.*;
import prefs.editors.*;
+import serialize.*;
import utils.*;
/**
@@ -45,7 +46,7 @@ import utils.*;
*
* @author Paul C. Buetow
*/
-public class VSSimulator extends JPanel implements Serializable {
+public class VSSimulator extends JPanel implements VSSerializable {
/** the serial version uid */
private static final long serialversionuid = 1l;
@@ -1063,10 +1064,14 @@ public class VSSimulator extends JPanel implements Serializable {
public void updateTaskManagerTable() {
VSProcess process = getSelectedProcess();
boolean allProcesses = process == null;
+
taskManagerLocalModel.set(process,
- VSTaskManagerTableModel.LOCAL, allProcesses);
+ VSTaskManagerTableModel.LOCAL,
+ allProcesses);
+
taskManagerGlobalModel.set(process,
- VSTaskManagerTableModel.GLOBAL, allProcesses);
+ VSTaskManagerTableModel.GLOBAL,
+ allProcesses);
}
/**
@@ -1216,50 +1221,31 @@ public class VSSimulator extends JPanel implements Serializable {
return prefs;
}
- /**
- * Write object.
- *
- * @param objectOutputStream the object output stream
- *
- * @throws IOException Signals that an I/O exception has occurred.
+ /* (non-Javadoc)
+ * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
+ * java.io.ObjectOutputStream)
*/
- public synchronized void writeObject(ObjectOutputStream objectOutputStream)
+ public synchronized void serialize(VSSerialize serialize,
+ ObjectOutputStream objectOutputStream)
throws IOException {
- objectOutputStream.writeObject(prefs);
- objectOutputStream.writeObject(simulatorCanvas);
+ simulatorCanvas.serialize(serialize, objectOutputStream);
}
- /**
- * Read object.
- *
- * @param objectInputStream the object input stream
- *
- * @throws IOException Signals that an I/O exception has occurred.
- * @throws ClassNotFoundException the class not found exception
+ /* (non-Javadoc)
+ * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
+ * java.io.ObjectInputStream)
*/
@SuppressWarnings("unchecked")
- public synchronized void readObject(ObjectInputStream objectInputStream)
+ public synchronized void deserialize(VSSerialize serialize,
+ ObjectInputStream objectInputStream)
throws IOException, ClassNotFoundException {
- if (VSDeserializationHelper.DEBUG)
+ if (VSSerialize.DEBUG)
System.out.println("Deserializing: VSSimulator");
- VSDeserializationHelper.setObject("simulator", this);
-
- VSSimulatorFrame simulatorFrame = (VSSimulatorFrame)
- VSDeserializationHelper.getObject(
- "simulatorFrame");
-
- // TODO: Merge prefs!?!
- VSPrefs prefs = (VSPrefs) objectInputStream.readObject();
- VSDeserializationHelper.setObject("prefs", prefs);
-
- this.logging = new VSLogging();
- VSDeserializationHelper.setObject("logging", logging);
+ serialize.setObject("simulator", this);
+ serialize.setObject("logging", logging);
+ simulatorCanvas.deserialize(serialize, objectInputStream);
- this.simulatorCanvas =
- (VSSimulatorCanvas) objectInputStream.readObject();
- VSDeserializationHelper.setObject("simulatorCanvas", simulatorCanvas);
-
- init(prefs, simulatorFrame);
+ updateTaskManagerTable();
}
}
diff --git a/sources/simulator/VSSimulatorCanvas.java b/sources/simulator/VSSimulatorCanvas.java
index d6bc5d2..cfc6549 100644
--- a/sources/simulator/VSSimulatorCanvas.java
+++ b/sources/simulator/VSSimulatorCanvas.java
@@ -37,6 +37,7 @@ import events.implementations.*;
import events.internal.*;
import prefs.*;
import prefs.editors.*;
+import serialize.*;
import utils.*;
/**
@@ -49,7 +50,7 @@ import utils.*;
* @author Paul C. Buetow
*/
public class VSSimulatorCanvas extends Canvas
- implements Runnable, Serializable {
+ implements Runnable, VSSerializable {
/** The serial version uid */
private static final long serialVersionUID = 1L;
@@ -1545,47 +1546,45 @@ public class VSSimulatorCanvas extends Canvas
}
}
- /**
- * Write object.
- *
- * @param objectOutputStream the object output stream
- *
- * @throws IOException Signals that an I/O exception has occurred.
+ /* (non-Javadoc)
+ * @see serialize.VSSerializable#serialize(serialize.VSSerialize,
+ * java.io.ObjectOutputStream)
*/
- public synchronized void writeObject(ObjectOutputStream objectOutputStream)
+ public synchronized void serialize(VSSerialize serialize,
+ ObjectOutputStream objectOutputStream)
throws IOException {
synchronized (processes) {
- objectOutputStream.writeObject(processes);
+ objectOutputStream.writeObject(new Integer(numProcesses));
+ for (VSProcess process : processes)
+ process.serialize(serialize, objectOutputStream);
}
- objectOutputStream.writeObject(taskManager);
+
+ taskManager.serialize(serialize, objectOutputStream);
}
- /**
- * Read object.
- *
- * @param objectInputStream the object input stream
- *
- * @throws IOException Signals that an I/O exception has occurred.
- * @throws ClassNotFoundException the class not found exception
+ /* (non-Javadoc)
+ * @see serialize.VSSerializable#deserialize(serialize.VSSerialize,
+ * java.io.ObjectInputStream)
*/
@SuppressWarnings("unchecked")
- public synchronized void readObject(ObjectInputStream objectInputStream)
+ public synchronized void deserialize(VSSerialize serialize,
+ ObjectInputStream objectInputStream)
throws IOException, ClassNotFoundException {
- if (VSDeserializationHelper.DEBUG)
+ if (VSSerialize.DEBUG)
System.out.println("Deserializing: VSSimulatorCanvas");
- VSPrefs prefs = (VSPrefs) VSDeserializationHelper.getObject("prefs");
- VSSimulator simulator =
- (VSSimulator) VSDeserializationHelper.getObject("simulator");
- VSLogging logging =
- (VSLogging) VSDeserializationHelper.getObject("logging");
-
- this.processes = (ArrayList<VSProcess>) objectInputStream.readObject();
- this.numProcesses = processes.size();
-
- this.taskManager = (VSTaskManager) objectInputStream.readObject();
- VSDeserializationHelper.setObject("taskManager", taskManager);
+ synchronized (processes) {
+ numProcesses = ((Integer)
+ objectInputStream.readObject()).intValue();
+
+ processes.clear();
+ for (int i = 0; i < numProcesses; ++i) {
+ VSProcess process = createProcess(i);
+ process.deserialize(serialize, objectInputStream);
+ processes.add(process);
+ }
+ }
- init(prefs, simulator, logging);
+ taskManager.deserialize(serialize, objectInputStream);
}
}
diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java
index f5ef5af..aff8787 100644
--- a/sources/simulator/VSSimulatorFrame.java
+++ b/sources/simulator/VSSimulatorFrame.java
@@ -33,6 +33,7 @@ import javax.swing.event.*;
import core.*;
import prefs.*;
import prefs.editors.*;
+import serialize.*;
import utils.*;
/**
@@ -42,7 +43,7 @@ import utils.*;
*
* @author Paul C. Buetow
*/
-public class VSSimulatorFrame extends VSFrame implements Serializable {
+public class VSSimulatorFrame extends VSFrame {
/** The serial version uid */
private static final long serialVersionUID = 1L;
@@ -143,6 +144,22 @@ public class VSSimulatorFrame extends VSFrame implements Serializable {
dispose();
} else if (sourceText.equals(
+ finalPrefs.getString("lang.open"))) {
+
+ VSSerialize serialize = new VSSerialize();
+ VSSimulator simulator = serialize.openSimulator(
+ VSSerialize.STANDARD_FILENAME,
+ VSSimulatorFrame.this);
+ addSimulator(simulator);
+
+ } else if (sourceText.equals(
+ finalPrefs.getString("lang.save"))) {
+
+ VSSerialize serialize = new VSSerialize();
+ serialize.saveSimulator(VSSerialize.STANDARD_FILENAME,
+ currentSimulator);
+
+ } else if (sourceText.equals(
finalPrefs.getString("lang.about"))) {
new VSAbout(finalPrefs, VSSimulatorFrame.this);
@@ -253,6 +270,28 @@ public class VSSimulatorFrame extends VSFrame implements Serializable {
menuItem.addActionListener(actionListener);
menuFile.add(menuItem);
+ menuFile.addSeparator();
+
+ menuItem = new JMenuItem(prefs.getString("lang.open"));
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(
+ prefs.getInteger("keyevent.open"),
+ ActionEvent.ALT_MASK));
+ menuItem.addActionListener(actionListener);
+ menuFile.add(menuItem);
+
+ menuItem = new JMenuItem(prefs.getString("lang.save"));
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(
+ prefs.getInteger("keyevent.save"),
+ ActionEvent.ALT_MASK));
+ menuItem.addActionListener(actionListener);
+ menuFile.add(menuItem);
+
+ menuItem = new JMenuItem(prefs.getString("lang.saveas"));
+ menuItem.setAccelerator(KeyStroke.getKeyStroke(
+ prefs.getInteger("keyevent.saveas"),
+ ActionEvent.ALT_MASK));
+ menuItem.addActionListener(actionListener);
+ menuFile.add(menuItem);
menuFile.addSeparator();
@@ -508,39 +547,4 @@ public class VSSimulatorFrame extends VSFrame implements Serializable {
return new ImageIcon(imageURL, descr);
}
-
- /**
- * Write object.
- *
- * @param objectOutputStream the object output stream
- *
- * @throws IOException Signals that an I/O exception has occurred.
- */
- public synchronized void writeObject(ObjectOutputStream objectOutputStream)
- throws IOException {
- objectOutputStream.writeObject(currentSimulator);
- }
-
- /**
- * Read object.
- *
- * @param objectInputStream the object input stream
- *
- * @throws IOException Signals that an I/O exception has occurred.
- * @throws ClassNotFoundException the class not found exception
- */
- @SuppressWarnings("unchecked")
- public synchronized void readObject(ObjectInputStream objectInputStream)
- throws IOException, ClassNotFoundException {
- if (VSDeserializationHelper.DEBUG)
- System.out.println("Deserializing: VSSimulatorFrame");
-
- VSDeserializationHelper.init();
- VSDeserializationHelper.setObject("simulatorFrame", this);
-
- currentSimulator = (VSSimulator) objectInputStream.readObject();
-
- VSDeserializationHelper.destroy();
- addSimulator(currentSimulator);
- }
}