summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2008-05-22 15:14:34 +0000
committerPaul Buetow <paul@buetow.org>2008-05-22 15:14:34 +0000
commitf7b023c5cff7dae854a015889bd217f3b84f6e07 (patch)
tree7e8767e18803da4928afad0f50760ba1efd2524d
parent4de5343c60cc165cdf30121e0ed9eca96ac91a22 (diff)
Expert mode changable.
-rw-r--r--ROADMAP2
-rw-r--r--sources/prefs/VSDefaultPrefs.java1
-rw-r--r--sources/prefs/editors/VSEditor.java28
-rw-r--r--sources/prefs/editors/VSSimulationEditor.java22
-rw-r--r--sources/simulator/VSSimulation.java293
-rw-r--r--sources/simulator/VSSimulatorFrame.java12
6 files changed, 228 insertions, 130 deletions
diff --git a/ROADMAP b/ROADMAP
index 4f2bcb9..7a0185c 100644
--- a/ROADMAP
+++ b/ROADMAP
@@ -1,7 +1,7 @@
TODO:
Slow-Motion
-Bug: Ausfallwkeit geht nicht?!?!?! (Nur beim 1. mal tut das)
+Einfacher vs. erweiterter Modus
Prozesse hinzufuegen/loeschen koennen
Neuen Protokolleditor bauen
"Himmelobjekt"
diff --git a/sources/prefs/VSDefaultPrefs.java b/sources/prefs/VSDefaultPrefs.java
index de5583c..a06f985 100644
--- a/sources/prefs/VSDefaultPrefs.java
+++ b/sources/prefs/VSDefaultPrefs.java
@@ -206,6 +206,7 @@ public class VSDefaultPrefs extends VSPrefs {
public void fillDefaultBooleans() {
//initBoolean("message.broadcast", false, "Nachrichten sind immer Broadcasts");
+ initBoolean("sim.mode.expert", false, "Expertenmodus aktivieren");
initBoolean("sim.message.own.recv", false, "Eigene Nachrichten empfangen");
}
}
diff --git a/sources/prefs/editors/VSEditor.java b/sources/prefs/editors/VSEditor.java
index 0d00bab..d8e3222 100644
--- a/sources/prefs/editors/VSEditor.java
+++ b/sources/prefs/editors/VSEditor.java
@@ -35,6 +35,7 @@ public abstract class VSEditor implements ActionListener {
public static final int SIMULATION_PREFERENCES = 1;
private VSFrame frame;
protected VSEditorTable editTable;
+ private boolean expertModeChanged;
public VSEditor(VSPrefs prefs, VSPrefs prefsToEdit) {
init(prefs, prefsToEdit);
@@ -91,10 +92,16 @@ public abstract class VSEditor implements ActionListener {
private ArrayList<String> filterKeys(Set<String> set) {
ArrayList<String> filtered = new ArrayList<String>();
-
- for (String elem : set)
- if (!elem.startsWith("lang.") && !elem.startsWith("keyevent"))
- filtered.add(elem);
+ boolean expertMode = prefs.getBoolean("sim.mode.expert");
+
+ for (String elem : set) {
+ if (!elem.startsWith("lang.") && !elem.startsWith("keyevent")) {
+ if (expertMode)
+ filtered.add(elem);
+ else if (!elem.startsWith("col.") && (!elem.startsWith("div.")))
+ filtered.add(elem);
+ }
+ }
return filtered;
}
@@ -394,6 +401,8 @@ public abstract class VSEditor implements ActionListener {
}
protected void savePrefs() {
+ boolean expertMode = prefs.getBoolean("sim.mode.expert");
+
int i = 0;
for (String key : integerKeys) {
JComboBox valComboBox = integerFields.get(key);
@@ -438,6 +447,17 @@ public abstract class VSEditor implements ActionListener {
JTextField valField = stringFields.get(key);
prefsToEdit.setString(key, valField.getText());
}
+
+ expertModeChanged = expertMode != prefs.getBoolean("sim.mode.expert");
+ }
+
+ public boolean expertModeChanged() {
+ boolean ret = expertModeChanged;
+
+ if (expertModeChanged)
+ expertModeChanged = false;
+
+ return ret;
}
public void actionPerformed(ActionEvent e) {
diff --git a/sources/prefs/editors/VSSimulationEditor.java b/sources/prefs/editors/VSSimulationEditor.java
index 8d3a010..f0106fd 100644
--- a/sources/prefs/editors/VSSimulationEditor.java
+++ b/sources/prefs/editors/VSSimulationEditor.java
@@ -14,7 +14,18 @@ import prefs.*;
public class VSSimulationEditor extends VSBetterEditor {
private VSSimulatorFrame simulatorFrame;
+ private VSSimulation simulation;
public static boolean TAKEOVER_BUTTON;
+ private boolean dontStartNewSimulation;
+
+ public VSSimulationEditor(VSPrefs prefs, VSSimulatorFrame simulatorFrame, VSSimulation simulation) {
+ super(prefs, prefs, prefs.getString("lang.name")
+ + " - " + prefs.getString("lang.prefs"));
+ this.dontStartNewSimulation = true;//simulation != null;
+ this.simulatorFrame = simulatorFrame;
+ this.simulation = simulation;
+ getInfoArea().setText(prefs.getString("lang.prefs.info!"));
+ }
public VSSimulationEditor(VSPrefs prefs, VSSimulatorFrame simulatorFrame) {
super(prefs, prefs, prefs.getString("lang.name")
@@ -39,11 +50,18 @@ public class VSSimulationEditor extends VSBetterEditor {
if (actionCommand.equals(prefs.getString("lang.takeover"))) {
savePrefs();
- simulatorFrame.getCurrentSimulation().updateFromPrefs();
+ if (expertModeChanged()) {
+ simulation.fireExpertModeChanged();
+ }
+ simulation.updateFromPrefs();
} else if (actionCommand.equals(prefs.getString("lang.ok"))) {
savePrefs();
- simulatorFrame.addSimulation(new VSSimulation(prefsToEdit, simulatorFrame));
+ if (expertModeChanged()) {
+ simulation.fireExpertModeChanged();
+ }
+ if (!dontStartNewSimulation)
+ simulatorFrame.addSimulation(new VSSimulation(prefsToEdit, simulatorFrame));
} else {
super.actionPerformed(e);
diff --git a/sources/simulator/VSSimulation.java b/sources/simulator/VSSimulation.java
index 06ca0d9..3af712c 100644
--- a/sources/simulator/VSSimulation.java
+++ b/sources/simulator/VSSimulation.java
@@ -18,35 +18,41 @@ import protocols.*;
import utils.*;
public class VSSimulation extends JPanel {
- private static int simulationCounter;
- private static int simulationNum;
- private VSSimulatorFrame simulatorFrame;
- private JTextField filterTextField;
+ private ArrayList<String> globalTextFields;
+ private ArrayList<String> localTextFields;
+ private ArrayList<VSCreateTask> createTasks;
private JCheckBox filterActiveCheckBox;
private JCheckBox lamportActiveCheckBox;
+ private JTextArea loggingArea;
private JCheckBox vectorTimeActiveCheckBox;
- private JComboBox processesComboBox;
- private JComboBox localPIDComboBox;
private JComboBox globalPIDComboBox;
- private int lastSelectedProcessNum;
- private ArrayList<String> localTextFields;
- private ArrayList<String> globalTextFields;
- private JTextField localTextField;
- private JTextField globalTextField;
- private ArrayList<VSCreateTask> createTasks;
+ private JComboBox localPIDComboBox;
+ private JComboBox processesComboBox;
+ private JPanel localAddPanel;
+ private JPanel globalAddPanel;
+ private JPanel localPanel;
+ private JPanel loggingPanel;
+ private JPanel toolsPanel;
+ private JSplitPane splitPane1;
private JSplitPane splitPaneH;
private JSplitPane splitPaneV;
- private JSplitPane splitPane1;
+ private JTabbedPane tabbedPane;
+ private JTextField filterTextField;
+ private JTextField globalTextField;
+ private JTextField localTextField;
private Thread thread;
private VSLogging logging;
+ private VSMenuItemStates menuItemStates;
private VSPrefs prefs;
private VSSimulationCanvas simulationCanvas;
- private boolean hasStarted = false;
- private VSTaskManagerTableModel taskManagerLocalModel;
- private VSTaskManagerTableModel taskManagerGlobalModel;
+ private VSSimulatorFrame simulatorFrame;
private VSTaskManager taskManager;
- private VSMenuItemStates menuItemStates;
- private JTabbedPane tabbedPane;
+ private VSTaskManagerTableModel taskManagerGlobalModel;
+ private VSTaskManagerTableModel taskManagerLocalModel;
+ private boolean hasStarted = false;
+ private int lastSelectedProcessNum;
+ private static int simulationCounter;
+ private static int simulationNum;
public class VSMenuItemStates {
private volatile boolean pause;
@@ -123,10 +129,9 @@ public class VSSimulation extends JPanel {
}
private void fillContentPane() {
- JTextArea loggingArea = logging.getLoggingArea();
+ loggingArea = logging.getLoggingArea();
splitPaneH = new JSplitPane();
-
splitPaneV = new JSplitPane();
simulationCanvas = new VSSimulationCanvas(prefs, this, logging);
@@ -139,13 +144,10 @@ public class VSSimulation extends JPanel {
canvasPanel.setMinimumSize(new Dimension(0, 0));
canvasPanel.setMaximumSize(new Dimension(0, 0));
- JScrollPane textScrollPane = new JScrollPane(loggingArea);
- JPanel toolsPanel = createToolsPanel();
-
- JPanel loggingPane = new JPanel(new BorderLayout());
- loggingPane.add(textScrollPane, BorderLayout.CENTER);
- loggingPane.add(toolsPanel, BorderLayout.SOUTH);
- loggingPane.setPreferredSize(new Dimension(200, 1));
+ loggingPanel = new JPanel(new BorderLayout());
+ loggingPanel.add(new JScrollPane(loggingArea), BorderLayout.CENTER);
+ loggingPanel.add(createToolsPanel(), BorderLayout.SOUTH);
+ loggingPanel.setPreferredSize(new Dimension(200, 1));
splitPaneH.setOrientation(JSplitPane.HORIZONTAL_SPLIT);
splitPaneH.setLeftComponent(createProcessPane());
@@ -155,7 +157,7 @@ public class VSSimulation extends JPanel {
splitPaneV.setOrientation(JSplitPane.VERTICAL_SPLIT);
splitPaneV.setTopComponent(splitPaneH);
- splitPaneV.setBottomComponent(loggingPane);
+ splitPaneV.setBottomComponent(loggingPanel);
//splitPaneV.setOneTouchExpandable(true);
splitPaneV.setContinuousLayout(true);
@@ -164,45 +166,48 @@ public class VSSimulation extends JPanel {
private JPanel createToolsPanel() {
JPanel toolsPanel = new JPanel();
+ boolean expertMode = prefs.getBoolean("sim.mode.expert");
toolsPanel.setLayout(new BoxLayout(toolsPanel, BoxLayout.X_AXIS));
- lamportActiveCheckBox = new JCheckBox(prefs.getString("lang.time.lamport"));
- lamportActiveCheckBox.setSelected(false);
- lamportActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton = (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- simulationCanvas.showLamport(buttonModel.isSelected());
- if (buttonModel.isSelected())
- vectorTimeActiveCheckBox.setSelected(false);
- }
- });
- toolsPanel.add(lamportActiveCheckBox);
-
- vectorTimeActiveCheckBox = new JCheckBox(prefs.getString("lang.time.vector"));
- vectorTimeActiveCheckBox.setSelected(false);
- vectorTimeActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton = (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- simulationCanvas.showVectorTime(buttonModel.isSelected());
- if (buttonModel.isSelected())
- lamportActiveCheckBox.setSelected(false);
- }
- });
- toolsPanel.add(vectorTimeActiveCheckBox);
-
- JCheckBox antiAliasing = new JCheckBox(prefs.getString("lang.antialiasing"));
- antiAliasing.setSelected(false);
- antiAliasing.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton = (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- simulationCanvas.isAntiAliased(buttonModel.isSelected());
- }
- });
- toolsPanel.add(antiAliasing);
+ if (expertMode) {
+ lamportActiveCheckBox = new JCheckBox(prefs.getString("lang.time.lamport"));
+ lamportActiveCheckBox.setSelected(false);
+ lamportActiveCheckBox.addChangeListener(new ChangeListener() {
+ public void stateChanged(ChangeEvent ce) {
+ AbstractButton abstractButton = (AbstractButton) ce.getSource();
+ ButtonModel buttonModel = abstractButton.getModel();
+ simulationCanvas.showLamport(buttonModel.isSelected());
+ if (buttonModel.isSelected())
+ vectorTimeActiveCheckBox.setSelected(false);
+ }
+ });
+ toolsPanel.add(lamportActiveCheckBox);
+
+ vectorTimeActiveCheckBox = new JCheckBox(prefs.getString("lang.time.vector"));
+ vectorTimeActiveCheckBox.setSelected(false);
+ vectorTimeActiveCheckBox.addChangeListener(new ChangeListener() {
+ public void stateChanged(ChangeEvent ce) {
+ AbstractButton abstractButton = (AbstractButton) ce.getSource();
+ ButtonModel buttonModel = abstractButton.getModel();
+ simulationCanvas.showVectorTime(buttonModel.isSelected());
+ if (buttonModel.isSelected())
+ lamportActiveCheckBox.setSelected(false);
+ }
+ });
+ toolsPanel.add(vectorTimeActiveCheckBox);
+
+ JCheckBox antiAliasing = new JCheckBox(prefs.getString("lang.antialiasing"));
+ antiAliasing.setSelected(false);
+ antiAliasing.addChangeListener(new ChangeListener() {
+ public void stateChanged(ChangeEvent ce) {
+ AbstractButton abstractButton = (AbstractButton) ce.getSource();
+ ButtonModel buttonModel = abstractButton.getModel();
+ simulationCanvas.isAntiAliased(buttonModel.isSelected());
+ }
+ });
+ toolsPanel.add(antiAliasing);
+ }
JCheckBox loggingActiveCheckBox = new JCheckBox(prefs.getString("lang.logging.active"));
loggingActiveCheckBox.setSelected(true);
@@ -215,51 +220,54 @@ public class VSSimulation extends JPanel {
});
toolsPanel.add(loggingActiveCheckBox);
- filterActiveCheckBox = new JCheckBox(prefs.getString("lang.filter"));
- filterActiveCheckBox.setSelected(false);
- filterActiveCheckBox.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- AbstractButton abstractButton = (AbstractButton) ce.getSource();
- ButtonModel buttonModel = abstractButton.getModel();
- logging.isFiltered(buttonModel.isSelected());
- if (buttonModel.isSelected())
- logging.setFilterText(filterTextField.getText());
- }
- });
- toolsPanel.add(filterActiveCheckBox);
-
- filterTextField = new JTextField();
- filterTextField.getDocument().addDocumentListener(new DocumentListener() {
- public void insertUpdate(DocumentEvent de) {
- logging.setFilterText(filterTextField.getText());
- }
+ if (expertMode) {
+ filterActiveCheckBox = new JCheckBox(prefs.getString("lang.filter"));
+ filterActiveCheckBox.setSelected(false);
+ filterActiveCheckBox.addChangeListener(new ChangeListener() {
+ public void stateChanged(ChangeEvent ce) {
+ AbstractButton abstractButton = (AbstractButton) ce.getSource();
+ ButtonModel buttonModel = abstractButton.getModel();
+ logging.isFiltered(buttonModel.isSelected());
+ if (buttonModel.isSelected())
+ logging.setFilterText(filterTextField.getText());
+ }
+ });
+ toolsPanel.add(filterActiveCheckBox);
- public void removeUpdate(DocumentEvent de) {
- logging.setFilterText(filterTextField.getText());
- }
+ filterTextField = new JTextField();
+ filterTextField.getDocument().addDocumentListener(new DocumentListener() {
+ public void insertUpdate(DocumentEvent de) {
+ logging.setFilterText(filterTextField.getText());
+ }
- public void changedUpdate(DocumentEvent de) {
- logging.setFilterText(filterTextField.getText());
- }
- });
- toolsPanel.add(filterTextField);
+ public void removeUpdate(DocumentEvent de) {
+ logging.setFilterText(filterTextField.getText());
+ }
- JButton clearButton = new JButton(prefs.getString("lang.logging.clear"));
- clearButton.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent ae) {
- String actionCommand = ae.getActionCommand();
- if (actionCommand.equals(prefs.getString("lang.logging.clear"))) {
- logging.clear();
+ public void changedUpdate(DocumentEvent de) {
+ logging.setFilterText(filterTextField.getText());
}
- }
- });
- toolsPanel.add(clearButton);
+ });
+ toolsPanel.add(filterTextField);
+
+ JButton clearButton = new JButton(prefs.getString("lang.logging.clear"));
+ clearButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ String actionCommand = ae.getActionCommand();
+ if (actionCommand.equals(prefs.getString("lang.logging.clear"))) {
+ logging.clear();
+ }
+ }
+ });
+ toolsPanel.add(clearButton);
+ }
return toolsPanel;
}
private JPanel createProcessPane() {
JPanel editPanel = new JPanel(new GridBagLayout());
+ boolean expertMode = prefs.getBoolean("sim.mode.expert");
editPanel.setLayout(new BoxLayout(editPanel, BoxLayout.Y_AXIS));
processesComboBox = new JComboBox();
@@ -282,23 +290,21 @@ public class VSSimulation extends JPanel {
globalPIDComboBox.addItem(prefs.getString("lang.all"));
tabbedPane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.WRAP_TAB_LAYOUT);
- tabbedPane.addChangeListener(new ChangeListener() {
- public void stateChanged(ChangeEvent ce) {
- JTabbedPane pane = (JTabbedPane) ce.getSource();
- //currentSimulation = (VSSimulation) pane.getSelectedComponent();
- }
- });
- //editPanel.add(tabbedPane, BorderLayout.CENTER);
-
- JPanel localPanel = createTaskLabel(VSTaskManagerTableModel.LOCAL);
+ localPanel = createTaskLabel(VSTaskManagerTableModel.LOCAL);
JPanel globalPanel = createTaskLabel(VSTaskManagerTableModel.GLOBAL);
splitPane1 = new JSplitPane();
splitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);
+ //splitPane1.setTopComponent(localPanel);
splitPane1.setTopComponent(localPanel);
splitPane1.setBottomComponent(globalPanel);
splitPane1.setOneTouchExpandable(true);
- tabbedPane.addTab(prefs.getString("lang.events"), splitPane1);
+
+ if (expertMode)
+ tabbedPane.addTab(prefs.getString("lang.events"), splitPane1);
+
+ else
+ tabbedPane.addTab(prefs.getString("lang.events"), localPanel);
processesComboBox.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
@@ -334,11 +340,13 @@ public class VSSimulation extends JPanel {
});
tabbedPane.add(prefs.getString("lang.variables"), null);
- tabbedPane.add(prefs.getString("lang.variables.global"), null);
+ //tabbedPane.add(prefs.getString("lang.variables.global"), null);
+ /*
VSSimulationEditor.TAKEOVER_BUTTON = true;
VSSimulationEditor editor = new VSSimulationEditor(prefs, simulatorFrame);
tabbedPane.setComponentAt(2, editor.getContentPane());
+ */
editPanel.add(processesComboBox);
editPanel.add(tabbedPane);
@@ -366,7 +374,10 @@ public class VSSimulation extends JPanel {
JScrollPane scrollPane = new JScrollPane(createTaskTable(localTasks));
panel.add(scrollPane);
- initAddPanel(panel, localTasks);
+ if (localTasks)
+ localAddPanel = initAddPanel(panel, localTasks);
+ else
+ globalAddPanel = initAddPanel(panel, localTasks);
return panel;
}
@@ -586,9 +597,10 @@ public class VSSimulation extends JPanel {
return table;
}
- private void initAddPanel(JPanel panel, final boolean localTasks) {
- JPanel panel1 = new JPanel();
- panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS));
+ private JPanel initAddPanel(JPanel panel, final boolean localTasks) {
+ JPanel addPanel = new JPanel();
+ addPanel.setLayout(new BoxLayout(addPanel, BoxLayout.X_AXIS));
+ boolean expertMode = prefs.getBoolean("sim.mode.expert");
final JTextField textField = new JTextField();
if (localTasks)
@@ -598,14 +610,16 @@ public class VSSimulation extends JPanel {
textField.setText("0000");
textField.setBackground(Color.WHITE);
- panel1.add(textField);
+ addPanel.add(textField);
- panel1.add(new JLabel(" ms "));
+ addPanel.add(new JLabel(" ms "));
- if (localTasks)
- panel1.add(localPIDComboBox);
- else
- panel1.add(globalPIDComboBox);
+ if (localTasks) {
+ if (expertMode)
+ addPanel.add(localPIDComboBox);
+ } else {
+ addPanel.add(globalPIDComboBox);
+ }
final JComboBox comboBox = new JComboBox();
JButton takeoverButton = new JButton(prefs.getString("lang.takeover"));
@@ -680,7 +694,7 @@ public class VSSimulation extends JPanel {
}
});
- panel1.add(takeoverButton);
+ addPanel.add(takeoverButton);
boolean flag = createTasks == null;
if (flag) createTasks = new ArrayList<VSCreateTask>();
@@ -779,7 +793,9 @@ public class VSSimulation extends JPanel {
}
panel.add(comboBox);
- panel.add(panel1);
+ panel.add(addPanel);
+
+ return addPanel;
}
public int getSplitSize() {
@@ -865,4 +881,37 @@ public class VSSimulation extends JPanel {
simulationCanvas.setBackground(prefs.getColor("col.background"));
simulationCanvas.updateFromPrefs();
}
+
+ public void fireExpertModeChanged() {
+ boolean expertMode = prefs.getBoolean("sim.mode.expert");
+
+ /* Update the Task Manager GUI */
+ int selectedIndex = tabbedPane.getSelectedIndex();
+
+ if (expertMode) {
+ tabbedPane.remove(localPanel);
+ tabbedPane.insertTab(prefs.getString("lang.events"), null, splitPane1, null, 0);
+ splitPane1.setTopComponent(localPanel);
+ splitPane1.setDividerLocation((int) (getPaintSize()/2) - 20);
+
+ /* addPanel */
+ localAddPanel.add(localPIDComboBox, 1);
+
+ } else {
+ tabbedPane.remove(splitPane1);
+ tabbedPane.insertTab(prefs.getString("lang.events"), null, localPanel, null, 0);
+
+ /* addPanel */
+ localAddPanel.remove(1);
+ }
+
+ tabbedPane.setSelectedIndex(selectedIndex);
+
+
+
+ /* Update the tools panel */
+ loggingPanel.remove(1);
+ loggingPanel.add(createToolsPanel(), BorderLayout.SOUTH);
+ updateUI();
+ }
}
diff --git a/sources/simulator/VSSimulatorFrame.java b/sources/simulator/VSSimulatorFrame.java
index f0a0fea..ee6f189 100644
--- a/sources/simulator/VSSimulatorFrame.java
+++ b/sources/simulator/VSSimulatorFrame.java
@@ -140,7 +140,7 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
private Container createContentPane() {
Container pane = getContentPane();
- tabbedPane = new JTabbedPane(JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT);
+ tabbedPane = new JTabbedPane(JTabbedPane.BOTTOM, JTabbedPane.SCROLL_TAB_LAYOUT);
tabbedPane.addChangeListener(new ChangeListener() {
public void stateChanged(ChangeEvent ce) {
JTabbedPane pane = (JTabbedPane) ce.getSource();
@@ -158,6 +158,16 @@ public class VSSimulatorFrame extends VSFrame implements ActionListener {
private void updateEditMenu() {
menuEdit.removeAll();
+ JMenuItem globalPrefsItem = new JMenuItem(prefs.getString("lang.prefs"));
+ globalPrefsItem.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent ae) {
+ new VSEditorFrame(prefs, VSSimulatorFrame.this,
+ new VSSimulationEditor(prefs, VSSimulatorFrame.this,
+ currentSimulation));
+ }
+ });
+ menuEdit.add(globalPrefsItem);
+
if (currentSimulation == null)
return;