diff options
| -rw-r--r-- | sources/core/VSMessage.java | 13 | ||||
| -rw-r--r-- | sources/core/VSProcess.java | 5 | ||||
| -rw-r--r-- | sources/events/VSEvent.java | 2 | ||||
| -rw-r--r-- | sources/events/implementations/MessageReceiveEvent.java | 6 | ||||
| -rw-r--r-- | sources/prefs/VSDefaultPrefs.java | 17 | ||||
| -rw-r--r-- | sources/protocols/VSProtocol.java | 1 | ||||
| -rw-r--r-- | sources/simulator/VSSimulation.java | 10 | ||||
| -rw-r--r-- | sources/simulator/VSSimulatorFrame.java | 71 |
8 files changed, 71 insertions, 54 deletions
diff --git a/sources/core/VSMessage.java b/sources/core/VSMessage.java index ab6bca8..95bcc7a 100644 --- a/sources/core/VSMessage.java +++ b/sources/core/VSMessage.java @@ -12,6 +12,7 @@ public class VSMessage extends VSPrefs { private static long messageCounter; private long lamportTime; private VSVectorTime vectorTime; + private VSPrefs prefs; public VSMessage(String protocolClassname) { this.protocolClassname = protocolClassname; @@ -20,6 +21,7 @@ public class VSMessage extends VSPrefs { public void init(VSProcess process) { this.sendingProcess = process; + this.prefs = process.getPrefs(); lamportTime = sendingProcess.getLamportTime(); vectorTime = sendingProcess.getVectorTime().getCopy(); } @@ -49,7 +51,16 @@ public class VSMessage extends VSPrefs { } public String toString() { - return "ID: " + messageID; + StringBuffer buffer = new StringBuffer(); + + buffer.append("ID: "); + buffer.append(messageID); + buffer.append("; "); + buffer.append(prefs.getString("lang.protocol")); + buffer.append(": "); + buffer.append(VSRegisteredEvents.getShortname(getProtocolClassname())); + + return buffer.toString(); } public String toStringFull() { diff --git a/sources/core/VSProcess.java b/sources/core/VSProcess.java index aa754a2..dbb37ba 100644 --- a/sources/core/VSProcess.java +++ b/sources/core/VSProcess.java @@ -466,11 +466,6 @@ public final class VSProcess extends VSPrefs { StringBuffer buffer = new StringBuffer(); buffer.append(prefs.getString("lang.message.sent")); buffer.append("; "); - buffer.append(prefs.getString("lang.protocol")); - buffer.append(": " + message.getName()); - buffer.append("; "); - buffer.append(prefs.getString("lang.message")); - buffer.append(" "); buffer.append(message.toStringFull()); logg(buffer.toString()); simulationPanel.sendMessage(message); diff --git a/sources/events/VSEvent.java b/sources/events/VSEvent.java index bfb677d..d058e33 100644 --- a/sources/events/VSEvent.java +++ b/sources/events/VSEvent.java @@ -47,7 +47,7 @@ abstract public class VSEvent extends VSPrefs { } public void logg(String message) { - process.logg(toString() + "; " + message); + process.logg(/*toString() + "; " + */message); } public boolean equals(VSEvent event) { diff --git a/sources/events/implementations/MessageReceiveEvent.java b/sources/events/implementations/MessageReceiveEvent.java index 0a99b5f..d5c1416 100644 --- a/sources/events/implementations/MessageReceiveEvent.java +++ b/sources/events/implementations/MessageReceiveEvent.java @@ -31,12 +31,6 @@ public class MessageReceiveEvent extends VSEvent { StringBuffer buffer = new StringBuffer(); buffer.append(prefs.getString("lang.message.recv")); buffer.append("; "); - buffer.append(prefs.getString("lang.protocol")); - buffer.append(": " ); - buffer.append(eventName); - buffer.append("; "); - buffer.append(prefs.getString("lang.message")); - buffer.append(" "); buffer.append(message);; if (protocolObj == null) { diff --git a/sources/prefs/VSDefaultPrefs.java b/sources/prefs/VSDefaultPrefs.java index 5332988..9ce11d5 100644 --- a/sources/prefs/VSDefaultPrefs.java +++ b/sources/prefs/VSDefaultPrefs.java @@ -39,23 +39,23 @@ public class VSDefaultPrefs extends VSPrefs { } public void fillDefaultStrings() { - initString("lang.clientrequest.start", "Clientanfrage starten"); initString("lang.about", "About"); - initString("lang.about.info!", "Dieses Programm wurde von Paul Bütow im Rahmen der Diplomarbeit bei Prof. Dr.-Ing. Oßmann erstellt. Dieses Programm stellt noch keinesfalls eine fertige Version dar, da es sich noch in Entwicklung befindet und die Diplomarbeit erst mitte August abgeschlossen sein wird! Bei Fehlern bitte eine kurze Mail mitsamt Fehlerbeschreibung an paul@buetow.org schicken! Dieser Simulator wird später außerdem unter einer open source Linzenz (wahrscheinlich der GNU General Public License) freigegeben!"); + initString("lang.about.info!", "Dieses Programm wurde von Paul Bütow im Rahmen der Diplomarbeit \"Objektorientierte Entwicklung eines GUI-basierten Tools für die ereignisbasierte Simulation verteilter Systeme\" bei Prof. Dr.-Ing. Oßmann erstellt. Dieses Programm stellt noch keinesfalls eine fertige Version dar, da es sich noch in Entwicklung befindet und die Diplomarbeit erst mitte August abgeschlossen sein wird! Bei Fehlern bitte eine kurze Mail mitsamt Fehlerbeschreibung an paul@buetow.org schicken! Dieser Simulator wird später außerdem unter einer open source Linzenz (wahrscheinlich der GNU General Public License) freigegeben!"); initString("lang.activate", "aktivieren"); initString("lang.activated", "aktiviert"); - initString("lang.deactivated", "deaktiviert"); initString("lang.actualize", "Aktualisieren"); + initString("lang.all", "Alle"); + initString("lang.antialiasing", "Anti-Aliasing"); initString("lang.cancel", "Abbrechen"); initString("lang.client", "Client"); + initString("lang.clientrequest.start", "Clientanfrage starten"); initString("lang.close", "Schliessen"); initString("lang.colorchooser", "Farbauswahl"); initString("lang.colorchooser2", "Bitte Farbe auswählen"); initString("lang.crash", "Abstürzen"); - initString("lang.antialiasing", "Anti-Aliasing"); - initString("lang.all", "Alle"); initString("lang.crashed", "Abgestürzt"); initString("lang.deactivate", "deaktivieren"); + initString("lang.deactivated", "deaktiviert"); initString("lang.default", "Defaults"); initString("lang.edit", "Editieren"); initString("lang.editor", "Editor"); @@ -71,7 +71,6 @@ public class VSDefaultPrefs extends VSPrefs { initString("lang.message", "Nachricht"); initString("lang.message.recv", "Nachricht erhalten"); initString("lang.message.sent", "Nachricht versendet"); - initString("lang.new", "Neu"); initString("lang.ok", "OK"); initString("lang.open", "Öffnen"); initString("lang.pause", "Pausieren"); @@ -85,10 +84,10 @@ public class VSDefaultPrefs extends VSPrefs { initString("lang.prefs.protocol", "Protokolleinstellungen"); initString("lang.prefs.protocol.info!", "Änderungen werden erst nach Betätigen des \"Übernehmen\" oder \"OK\" Knopfes übernommen!"); initString("lang.process", "Prozess"); - initString("lang.processes.all", "Alle Prozesse"); initString("lang.process.id", "PID"); initString("lang.process.new", "Neuer Prozess"); initString("lang.process.time.local", "Lokale Zeit"); + initString("lang.processes.all", "Alle Prozesse"); initString("lang.protocol", "Protokoll"); initString("lang.protocol.client", "Clientseite"); initString("lang.protocol.editor", "Protokolleditor"); @@ -106,8 +105,10 @@ public class VSDefaultPrefs extends VSPrefs { initString("lang.saveas", "Speichern unter"); initString("lang.server", "Server"); initString("lang.simulation", "Simulation"); + initString("lang.simulation.close", "Simulation schliessen"); initString("lang.simulation.finished", "Simulation beendet"); initString("lang.simulation.new", "Neue Simulation"); + initString("lang.simulation.new", "Neue Simulation"); initString("lang.simulation.paused", "Simulation pausiert"); initString("lang.simulation.resetted", "Simulation zurückgesetzt"); initString("lang.simulation.started", "Simulation gestartet"); @@ -123,6 +124,8 @@ public class VSDefaultPrefs extends VSPrefs { initString("lang.time.lamport", "Lamportzeit"); initString("lang.time.vector", "Vektorzeit"); initString("lang.type", "Typ"); + initString("lang.window.close", "Fenster schliessen"); + initString("lang.window.new", "Neues Fenster"); initString("name", "Verteilte Systeme v0.2-devel"); } diff --git a/sources/protocols/VSProtocol.java b/sources/protocols/VSProtocol.java index 9ff1512..df22e51 100644 --- a/sources/protocols/VSProtocol.java +++ b/sources/protocols/VSProtocol.java @@ -68,7 +68,6 @@ abstract public class VSProtocol extends VSEvent { abstract protected void onClientStart(); abstract protected void onClientReset(); abstract protected void onClientRecv(VSMessage message); - abstract protected void onServerReset(); abstract protected void onServerRecv(VSMessage message); diff --git a/sources/simulator/VSSimulation.java b/sources/simulator/VSSimulation.java index 6bdcc97..558eeaf 100644 --- a/sources/simulator/VSSimulation.java +++ b/sources/simulator/VSSimulation.java @@ -45,10 +45,10 @@ public class VSSimulation extends JPanel { private VSMenuItemStates menuItemStates; public class VSMenuItemStates { - private boolean pause; - private boolean replay; - private boolean reset; - private boolean start; + private volatile boolean pause; + private volatile boolean replay; + private volatile boolean reset; + private volatile boolean start; public VSMenuItemStates(boolean pause, boolean replay, boolean reset, boolean start) { this.pause = pause; @@ -110,6 +110,8 @@ public class VSSimulation extends JPanel { } processesComboBox.setSelectedIndex(numProcesses); + localPIDComboBox.setSelectedIndex(0); + globalPIDComboBox.setSelectedIndex(0); thread = new Thread(simulationPanel); thread.start(); diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java index 1b13c68..41fd196 100644 --- a/sources/simulator/VSSimulatorFrame.java +++ b/sources/simulator/VSSimulatorFrame.java @@ -23,14 +23,14 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { private JMenuItem startItem; private JMenu menuEdit; private VSPrefs prefs; - private ArrayList<VSSimulation> simulations; + private Vector<VSSimulation> simulations; private VSSimulation currentSimulation; private JTabbedPane tabbedPane; public VSSimulatorFrame(VSPrefs prefs, Component relativeTo) { super(prefs.getString("name"), relativeTo); this.prefs = prefs; - this.simulations = new ArrayList<VSSimulation>(); + this.simulations = new Vector<VSSimulation>(); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); @@ -47,7 +47,7 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { menuFile.setMnemonic(prefs.getInteger("keyevent.file")); JMenuItem menuItem; - menuItem = new JMenuItem(prefs.getString("lang.new")); + menuItem = new JMenuItem(prefs.getString("lang.simulation.new")); menuItem.setAccelerator(KeyStroke.getKeyStroke( prefs.getInteger("keyevent.new"), ActionEvent.ALT_MASK)); @@ -55,7 +55,7 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { menuFile.add(menuItem); menuItem = new JMenuItem( - prefs.getString("lang.close")); + prefs.getString("lang.simulation.close")); menuItem.setAccelerator(KeyStroke.getKeyStroke( prefs.getInteger("keyevent.close"), ActionEvent.ALT_MASK)); @@ -64,17 +64,22 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { menuFile.addSeparator(); + menuItem = new JMenuItem(prefs.getString("lang.window.new")); + menuItem.addActionListener(this); + menuFile.add(menuItem); + + menuItem = new JMenuItem(prefs.getString("lang.window.close")); + menuItem.addActionListener(this); + menuFile.add(menuItem); + + + menuFile.addSeparator(); + menuItem = new JMenuItem(prefs.getString("lang.about")); - menuItem.setAccelerator(KeyStroke.getKeyStroke( - prefs.getInteger("keyevent.about"), - ActionEvent.ALT_MASK)); menuItem.addActionListener(this); menuFile.add(menuItem); menuItem = new JMenuItem(prefs.getString("lang.quit")); - menuItem.setAccelerator(KeyStroke.getKeyStroke( - prefs.getInteger("keyevent.quit"), - ActionEvent.ALT_MASK)); menuItem.addActionListener(this); menuFile.add(menuItem); @@ -123,7 +128,6 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { replayItem.addActionListener(this); replayItem.setEnabled(false); menuSimulation.add(replayItem); - updateSimulationMenu(); JMenuBar mainMenuBar = new JMenuBar(); mainMenuBar.add(menuFile); @@ -174,20 +178,13 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { } } - public void updateSimulationMenu() { - if (currentSimulation == null) { - pauseItem.setEnabled(false); - replayItem.setEnabled(false); - resetItem.setEnabled(false); - startItem.setEnabled(false); - - } else { - VSSimulation.VSMenuItemStates menuItemState = currentSimulation.getMenuItemStates(); - pauseItem.setEnabled(menuItemState.getPause()); - replayItem.setEnabled(menuItemState.getReplay()); - resetItem.setEnabled(menuItemState.getReset()); - startItem.setEnabled(menuItemState.getStart()); - } + /* updateSimulationMenu can be called from concurrent threads */ + public synchronized void updateSimulationMenu() { + VSSimulation.VSMenuItemStates menuItemState = currentSimulation.getMenuItemStates(); + pauseItem.setEnabled(menuItemState.getPause()); + replayItem.setEnabled(menuItemState.getReplay()); + resetItem.setEnabled(menuItemState.getReset()); + startItem.setEnabled(menuItemState.getStart()); } public void dispose() { @@ -199,12 +196,21 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { public void actionPerformed(ActionEvent e) { JMenuItem source = (JMenuItem) e.getSource(); - if (source.getText().equals(prefs.getString("lang.close"))) { - dispose(); + if (source.getText().equals(prefs.getString("lang.simulation.close"))) { + if (simulations.size() == 1) + dispose(); + else + removeCurrentSimulation(); - } else if (source.getText().equals(prefs.getString("lang.new"))) { + } else if (source.getText().equals(prefs.getString("lang.simulation.new"))) { new VSSimulationEditor(VSDefaultPrefs.init(), this); + } else if (source.getText().equals(prefs.getString("lang.window.new"))) { + new VSMain(VSDefaultPrefs.init(), this); + + } else if (source.getText().equals(prefs.getString("lang.window.close"))) { + dispose(); + } else if (source.getText().equals(prefs.getString("lang.about"))) { new VSAbout(prefs, this); @@ -256,8 +262,15 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener { simulation.setMaximumSize(new Dimension(0, 0)); simulations.add(simulation); - tabbedPane.addTab(prefs.getString("lang.simulation") + " " + simulation.getSimulationNum(), simulation); + tabbedPane.setSelectedComponent(simulation); + } + + private void removeCurrentSimulation() { + VSSimulation simulationToRemove = currentSimulation; + simulations.remove(simulationToRemove); + tabbedPane.remove(simulationToRemove); + simulationToRemove.getSimulationPanel().stopThread(); } } |
