summaryrefslogtreecommitdiff
path: root/src/main/java/simulator/VSSimulatorFrame.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/simulator/VSSimulatorFrame.java')
-rw-r--r--src/main/java/simulator/VSSimulatorFrame.java36
1 files changed, 34 insertions, 2 deletions
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() {