From 38643ad8aca76dba2ac71987008d8c79370607cd Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Fri, 27 Mar 2026 13:45:38 +0200 Subject: Refresh and auto-start loaded startup simulations --- src/main/java/simulator/VSSimulatorFrame.java | 36 +++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'src/main/java/simulator/VSSimulatorFrame.java') 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,12 +602,43 @@ 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 */ -- cgit v1.2.3