Did I nail the summary update bug?
authorBill Kuker <bkuker@billkuker.com>
Thu, 16 Feb 2012 01:19:31 +0000 (01:19 +0000)
committerBill Kuker <bkuker@billkuker.com>
Thu, 16 Feb 2012 01:19:31 +0000 (01:19 +0000)
2 problems maybe:
Bar updates were not done in swing thread
Was not repainting after revalidating

gui/com/billkuker/rocketry/motorsim/visual/SummaryPanel.java

index 24a9c9d1044bc36b06302da56954c5fc207a39e8..aa0e972cbe1333f785dc849b4a767276b920c79c 100644 (file)
@@ -37,15 +37,21 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener, R
        }\r
 \r
        @Override\r
-       public void setProgress(float p) {\r
-               int pct = (int) (p * 100);\r
-               bar.setValue(pct);\r
-               Amount<Length> web = burn.getMotor().getGrain().webThickness();\r
-               Amount<Length> remaining = web.times(1.0 - p);\r
-               if ( remaining.isLessThan(Amount.valueOf(0, SI.MILLIMETER))){\r
-                       remaining = Amount.valueOf(0, remaining.getUnit());\r
-               }\r
-               bar.setString("Burn Progress: " + pct + "% (" + RocketScience.ammountToRoundedString(remaining) + " web thickness remaining)");\r
+       public void setProgress(final float p) {\r
+               SwingUtilities.invokeLater(new Thread() {\r
+                       public void run() {\r
+                               int pct = (int) (p * 100);\r
+                               bar.setValue(pct);\r
+                               Amount<Length> web = burn.getMotor().getGrain().webThickness();\r
+                               Amount<Length> remaining = web.times(1.0 - p);\r
+                               if (remaining.isLessThan(Amount.valueOf(0, SI.MILLIMETER))) {\r
+                                       remaining = Amount.valueOf(0, remaining.getUnit());\r
+                               }\r
+                               bar.setString("Burn Progress: " + pct + "% ("\r
+                                               + RocketScience.ammountToRoundedString(remaining)\r
+                                               + " web thickness remaining)");\r
+                       }\r
+               });\r
        }\r
 \r
        @Override\r
@@ -64,38 +70,40 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener, R
        private void setBurnSummary(final BurnSummary bi) {\r
                SwingUtilities.invokeLater(new Thread() {\r
                        public void run() {\r
-                               removeAll();\r
+                               remove(bar);\r
                                setLayout(new GridLayout(2, 5));\r
-                               SummaryPanel.this.add(new JLabel("Rating"));\r
-                               SummaryPanel.this.add(new JLabel("Total Impulse"));\r
-                               SummaryPanel.this.add(new JLabel("ISP"));\r
-                               SummaryPanel.this.add(new JLabel("Max Thrust"));\r
-                               SummaryPanel.this.add(new JLabel("Average Thust"));\r
-                               SummaryPanel.this.add(new JLabel("Max Pressure"));\r
-                               SummaryPanel.this.add(new JLabel("Fuel Mass"));\r
-                               SummaryPanel.this.add(new JLabel("Volume Loading"));\r
-                               SummaryPanel.this.add(new JLabel("Safty Factor"));\r
+                               add(new JLabel("Rating"));\r
+                               add(new JLabel("Total Impulse"));\r
+                               add(new JLabel("ISP"));\r
+                               add(new JLabel("Max Thrust"));\r
+                               add(new JLabel("Average Thust"));\r
+                               add(new JLabel("Max Pressure"));\r
+                               add(new JLabel("Fuel Mass"));\r
+                               add(new JLabel("Volume Loading"));\r
+                               add(new JLabel("Safty Factor"));\r
+\r
+                               add(new JLabel(bi.getRating()));\r
+                               add(new JLabel(RocketScience.ammountToRoundedString(bi\r
+                                               .totalImpulse())));\r
+                               add(new JLabel(RocketScience.ammountToRoundedString(bi\r
+                                               .specificImpulse())));\r
+                               add(new JLabel(RocketScience.ammountToRoundedString(bi\r
+                                               .maxThrust())));\r
+                               add(new JLabel(RocketScience.ammountToRoundedString(bi\r
+                                               .averageThrust())));\r
+                               add(new JLabel(RocketScience.ammountToRoundedString(bi\r
+                                               .maxPressure())));\r
+                               add(new JLabel(RocketScience.ammountToRoundedString(bi\r
+                                               .getPropellantMass())));\r
+                               add(new JLabel(\r
+                                               Integer.toString((int) (bi.getVolumeLoading() * 100.0))\r
+                                                               + "%"));\r
 \r
-                               SummaryPanel.this.add(new JLabel(bi.getRating()));\r
-                               SummaryPanel.this.add(new JLabel(RocketScience\r
-                                               .ammountToRoundedString(bi.totalImpulse())));\r
-                               SummaryPanel.this.add(new JLabel(RocketScience\r
-                                               .ammountToRoundedString(bi.specificImpulse())));\r
-                               SummaryPanel.this.add(new JLabel(RocketScience\r
-                                               .ammountToRoundedString(bi.maxThrust())));\r
-                               SummaryPanel.this.add(new JLabel(RocketScience\r
-                                               .ammountToRoundedString(bi.averageThrust())));\r
-                               SummaryPanel.this.add(new JLabel(RocketScience\r
-                                               .ammountToRoundedString(bi.maxPressure())));\r
-                               SummaryPanel.this.add(new JLabel(RocketScience\r
-                                               .ammountToRoundedString(bi.getPropellantMass())));\r
-                               SummaryPanel.this.add(new JLabel(Integer.toString((int)(bi.getVolumeLoading()*100.0)) + "%"));\r
-                               \r
                                Color saftyColor;\r
                                if (bi.getSaftyFactor() == null) {\r
 \r
                                        saftyColor = Color.BLACK;\r
-                                       SummaryPanel.this.add(new JLabel("NA"));\r
+                                       add(new JLabel("NA"));\r
                                } else {\r
                                        double d = bi.getSaftyFactor();\r
                                        if (d >= 1.5) {\r
@@ -110,12 +118,12 @@ public class SummaryPanel extends JPanel implements Burn.BurnProgressListener, R
                                        l.setOpaque(true);\r
                                        l.setBackground(saftyColor);\r
                                        l.setForeground(Color.WHITE);\r
-                                       SummaryPanel.this.add(l);\r
+                                       add(l);\r
                                }\r
                                revalidate();\r
+                               repaint();\r
                        }\r
                });\r
        }\r
 \r
-\r
 }\r