summaryrefslogtreecommitdiff
path: root/sources/simulator/VSSimulatorFrame.java
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-24 19:12:20 +0000
committerPaul Buetow <paul@buetow.org>2008-05-24 19:12:20 +0000
commit61e38d3236ead0b32f8fa1a78901e9d0c75c91ea (patch)
tree3d2dde8fa15b4a554a3dc9d90a44df4e38f0d876 /sources/simulator/VSSimulatorFrame.java
parenta028afa5f47ed024e792ca11155cd159a146b1e5 (diff)
Processes are now deletable.
Diffstat (limited to 'sources/simulator/VSSimulatorFrame.java')
-rw-r--r--sources/simulator/VSSimulatorFrame.java51
1 files changed, 28 insertions, 23 deletions
diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java
index 8ca7d94..c4abdb3 100644
--- a/sources/simulator/VSSimulatorFrame.java
+++ b/sources/simulator/VSSimulatorFrame.java
@@ -182,16 +182,10 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
pane.add(toolBar, BorderLayout.PAGE_START);
pane.add(tabbedPane, BorderLayout.CENTER);
- /*
- speedSlider = new JSlider(JSlider.HORIZONTAL,
- 0, 200, (int) (100 * prefs.getFloat("sim.clock.speed")));
- toolBar.add(speedSlider);
- */
-
return pane;
}
- private void updateEditMenu() {
+ public void updateEditMenu() {
menuEdit.removeAll();
JMenuItem globalPrefsItem = new JMenuItem(prefs.getString("lang.prefs"));
@@ -210,13 +204,16 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
return;
final String processString = prefs.getString("lang.process");
- final int numProcesses = currentSimulation.getSimulationCanvas().getNumProcesses();
-
- for (int i = 0; i < numProcesses; ++i) {
- JMenuItem processItem = new JMenuItem(processString + " " + (i+1));
- processItem.setAccelerator(KeyStroke.getKeyStroke(0x31+i,
+ final ArrayList<VSProcess> arr = currentSimulation.getSimulationCanvas().getProcessesArray();
+ final int numProcesses = arr.size();
+
+ int processNum = 0;
+ for (VSProcess process : arr) {
+ int processID = process.getProcessID();
+ JMenuItem processItem = new JMenuItem(processString + " " + processID);
+ processItem.setAccelerator(KeyStroke.getKeyStroke(0x31+processID,
ActionEvent.ALT_MASK));
- final int finalProcessNum = i;
+ final int finalProcessNum = processNum++;
processItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
currentSimulation.getSimulationCanvas().editProcess(finalProcessNum);
@@ -242,8 +239,10 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
}
public void dispose() {
- for (VSSimulation simulation : simulations)
- simulation.getSimulationCanvas().stopThread();
+ synchronized (simulations) {
+ for (VSSimulation simulation : simulations)
+ simulation.getSimulationCanvas().stopThread();
+ }
super.dispose();
}
@@ -257,10 +256,7 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
sourceText = ((ImageIcon) ((JButton) source).getIcon()).getDescription();
if (sourceText.equals(prefs.getString("lang.simulation.close"))) {
- if (simulations.size() == 1)
- dispose();
- else
- removeCurrentSimulation();
+ removeCurrentSimulation();
} else if (sourceText.equals(prefs.getString("lang.simulation.new"))) {
VSPrefs newPrefs = VSDefaultPrefs.init();
@@ -334,11 +330,19 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
}
}
+ public void removeSimulation(VSSimulation simulationToRemove) {
+ if (simulations.size() == 1) {
+ dispose();
+
+ } else {
+ simulations.remove(simulationToRemove);
+ tabbedPane.remove(simulationToRemove);
+ simulationToRemove.getSimulationCanvas().stopThread();
+ }
+ }
+
private void removeCurrentSimulation() {
- VSSimulation simulationToRemove = currentSimulation;
- simulations.remove(simulationToRemove);
- tabbedPane.remove(simulationToRemove);
- simulationToRemove.getSimulationCanvas().stopThread();
+ removeSimulation(currentSimulation);
}
public VSSimulation getCurrentSimulation() {
@@ -354,4 +358,5 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
return new ImageIcon(imageURL, descr);
}
+
}