summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-03-27 13:45:38 +0200
committerPaul Buetow <paul@buetow.org>2026-03-27 13:45:38 +0200
commit38643ad8aca76dba2ac71987008d8c79370607cd (patch)
tree79bc974d69c606f56af7fb8106af757473ac7ac6 /src/main
parent0bebec08cd89039c32bd9b9e73d80d573b6bf0b3 (diff)
Refresh and auto-start loaded startup simulations
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/simulator/VSSimulator.java10
-rw-r--r--src/main/java/simulator/VSSimulatorFrame.java36
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() {