better deal with adding / removing summary / error
authorBill Kuker <bkuker@billkuker.com>
Mon, 22 Nov 2010 01:47:27 +0000 (01:47 +0000)
committerBill Kuker <bkuker@billkuker.com>
Mon, 22 Nov 2010 01:47:27 +0000 (01:47 +0000)
gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java

index fe38f04b4a56a1e98aeecf23abb2950a689bcbc2..6224d6a2f4d4975ce771fb72014f9c5001be5040 100644 (file)
@@ -72,7 +72,7 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR
        BurnTab bt;\r
        Burn burn;\r
        SummaryPanel sp;\r
-       \r
+       JTextArea error;\r
        JTabbedPane tabs;\r
 \r
        private Vector<BurnWatcher> burnWatchers = new Vector<BurnWatcher>();\r
@@ -134,10 +134,18 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR
 \r
                public void reBurn() {\r
                        removeAll();\r
+                       if ( error != null ){\r
+                               MotorEditor.this.remove(error);\r
+                               error = null;\r
+                       }\r
+                       if ( sp != null ){\r
+                               MotorEditor.this.remove(sp);\r
+                               sp = null;\r
+                       }\r
                        currentThread = new Thread() {\r
                                public void run() {\r
                                        final Thread me = this;\r
-                                       try {\r
+                                       try {                                           \r
                                                final Burn b = new Burn(motor);\r
                                                b.addBurnProgressListener(\r
                                                                new Burn.BurnProgressListener() {\r
@@ -150,8 +158,7 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR
                                                                                }\r
                                                                        }\r
                                                                });\r
-                                               if ( sp != null )\r
-                                                       MotorEditor.this.remove(sp);\r
+\r
                                                MotorEditor.this.add(sp = new SummaryPanel(b), BorderLayout.NORTH);\r
                                                revalidate();\r
                                                b.burn();\r
@@ -168,15 +175,19 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR
                                                });\r
                                        } catch (BurnCanceled c){\r
                                                log.info("Burn Canceled!");\r
-                                       } catch (Exception e) {\r
-                                               if ( sp != null )\r
-                                                       MotorEditor.this.remove(sp);\r
-                                               JTextArea t = new JTextArea(e.getMessage());\r
-                                               t.setBackground(Colors.RED);\r
-                                               t.setForeground(Color.WHITE);\r
-                                               t.setEditable(false);\r
-                                               MotorEditor.this.add(t, BorderLayout.NORTH);\r
-                                               revalidate();\r
+                                       } catch (final Exception e) {\r
+                                               SwingUtilities.invokeLater(new Thread() {\r
+                                                       public void run() {\r
+                                                               if ( sp != null )\r
+                                                                       MotorEditor.this.remove(sp);\r
+                                                               error = new JTextArea(e.getMessage());\r
+                                                               error.setBackground(Colors.RED);\r
+                                                               error.setForeground(Color.WHITE);\r
+                                                               error.setEditable(false);\r
+                                                               MotorEditor.this.add(error, BorderLayout.NORTH);\r
+                                                               revalidate();\r
+                                                       }\r
+                                               });\r
                                        }\r
                                }\r
                        };\r