From aae16c6d608cbd66bb494c7a085eb68509c6f388 Mon Sep 17 00:00:00 2001 From: Bill Kuker Date: Mon, 22 Nov 2010 01:47:27 +0000 Subject: [PATCH] better deal with adding / removing summary / error --- .../visual/workbench/MotorEditor.java | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java index fe38f04..6224d6a 100644 --- a/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java +++ b/gui/com/billkuker/rocketry/motorsim/visual/workbench/MotorEditor.java @@ -72,7 +72,7 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR BurnTab bt; Burn burn; SummaryPanel sp; - + JTextArea error; JTabbedPane tabs; private Vector burnWatchers = new Vector(); @@ -134,10 +134,18 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR public void reBurn() { removeAll(); + if ( error != null ){ + MotorEditor.this.remove(error); + error = null; + } + if ( sp != null ){ + MotorEditor.this.remove(sp); + sp = null; + } currentThread = new Thread() { public void run() { final Thread me = this; - try { + try { final Burn b = new Burn(motor); b.addBurnProgressListener( new Burn.BurnProgressListener() { @@ -150,8 +158,7 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR } } }); - if ( sp != null ) - MotorEditor.this.remove(sp); + MotorEditor.this.add(sp = new SummaryPanel(b), BorderLayout.NORTH); revalidate(); b.burn(); @@ -168,15 +175,19 @@ public class MotorEditor extends JPanel implements PropertyChangeListener, FuelR }); } catch (BurnCanceled c){ log.info("Burn Canceled!"); - } catch (Exception e) { - if ( sp != null ) - MotorEditor.this.remove(sp); - JTextArea t = new JTextArea(e.getMessage()); - t.setBackground(Colors.RED); - t.setForeground(Color.WHITE); - t.setEditable(false); - MotorEditor.this.add(t, BorderLayout.NORTH); - revalidate(); + } catch (final Exception e) { + SwingUtilities.invokeLater(new Thread() { + public void run() { + if ( sp != null ) + MotorEditor.this.remove(sp); + error = new JTextArea(e.getMessage()); + error.setBackground(Colors.RED); + error.setForeground(Color.WHITE); + error.setEditable(false); + MotorEditor.this.add(error, BorderLayout.NORTH); + revalidate(); + } + }); } } }; -- 2.30.2