diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-27 13:45:38 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-27 13:45:38 +0200 |
| commit | 38643ad8aca76dba2ac71987008d8c79370607cd (patch) | |
| tree | 79bc974d69c606f56af7fb8106af757473ac7ac6 /src/main | |
| parent | 0bebec08cd89039c32bd9b9e73d80d573b6bf0b3 (diff) | |
Refresh and auto-start loaded startup simulations
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/java/simulator/VSSimulator.java | 10 | ||||
| -rw-r--r-- | src/main/java/simulator/VSSimulatorFrame.java | 36 |
2 files changed, 44 insertions, 2 deletions
diff --git a/src/main/java/simulator/VSSimulator.java b/src/main/java/simulator/VSSimulator.java index 2cf58c3..eac3dec 100644 --- a/src/main/java/simulator/VSSimulator.java +++ b/src/main/java/simulator/VSSimulator.java @@ -1553,5 +1553,15 @@ public class VSSimulator extends JPanel implements VSSerializable { updateTaskManagerTable(); updateProcessesComboBox(); processesComboBox.setSelectedIndex(processesComboBox.getItemCount()-1); + + revalidate(); + repaint(); + simulatorVisualization.revalidate(); + simulatorVisualization.repaint(); + + if (simulatorFrame != null) { + simulatorFrame.revalidate(); + simulatorFrame.repaint(); + } } } diff --git a/src/main/java/simulator/VSSimulatorFrame.java b/src/main/java/simulator/VSSimulatorFrame.java index 818bea9..3f14ca4 100644 --- a/src/main/java/simulator/VSSimulatorFrame.java +++ b/src/main/java/simulator/VSSimulatorFrame.java @@ -19,6 +19,7 @@ import javax.swing.JMenuItem; import javax.swing.JTabbedPane; import javax.swing.JToolBar; import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; @@ -601,13 +602,44 @@ public class VSSimulatorFrame extends VSFrame { VSSerialize serialize = new VSSerialize(); VSSimulator simulator = serialize.openSimulator(filename, this); - if (simulator != null) - startCurrentSimulator(); + if (simulator != null) { + refreshLoadedSimulator(simulator); + + final VSSimulator loadedSimulator = simulator; + if (SwingUtilities.isEventDispatchThread()) { + startCurrentSimulator(); + } else { + SwingUtilities.invokeLater(new Runnable() { + public void run() { + if (currentSimulator == loadedSimulator) + startCurrentSimulator(); + } + }); + } + } return simulator; } /** + * Refreshes the loaded simulator tab after deserialization. + * + * @param simulator the loaded simulator + */ + private void refreshLoadedSimulator(VSSimulator simulator) { + simulator.revalidate(); + simulator.repaint(); + + if (tabbedPane != null) { + tabbedPane.revalidate(); + tabbedPane.repaint(); + } + + revalidate(); + repaint(); + } + + /** * Pauses the current simulator */ public void pauseCurrentSimulator() { |
