Display Safty Factor and burst pressure if available
authorBill Kuker <bkuker@billkuker.com>
Sun, 7 Nov 2010 14:02:49 +0000 (14:02 +0000)
committerBill Kuker <bkuker@billkuker.com>
Sun, 7 Nov 2010 14:02:49 +0000 (14:02 +0000)
gui/com/billkuker/rocketry/motorsim/visual/BurnPanel.java

index 527accab0726386fb6b670cfe08c4fcbe4ca3b90..632d273b00385686c7e5c5aebe5b1700f365893d 100644 (file)
@@ -4,6 +4,7 @@ import java.awt.BorderLayout;
 import java.awt.Color;\r
 import java.awt.Dimension;\r
 import java.awt.GridLayout;\r
+import java.text.DecimalFormat;\r
 import java.text.NumberFormat;\r
 \r
 import javax.measure.quantity.Duration;\r
@@ -35,6 +36,10 @@ public class BurnPanel extends JPanel {
        GrainPanel grain;\r
        Amount<Duration> displayedTime = Amount.valueOf(0, SI.SECOND);\r
        \r
+       private static final Color RED = new Color(196, 0, 0);\r
+       private static final Color GREEN = new Color(0, 196, 0);\r
+       private static final Color ORANGE = new Color(160, 96, 0);\r
+       \r
        public BurnPanel(Burn b){\r
                super( new BorderLayout() );\r
                burn = b;\r
@@ -107,6 +112,8 @@ public class BurnPanel extends JPanel {
                                text.add(new JLabel("Max Thrust"));\r
                                text.add(new JLabel("Average Thust"));\r
                                text.add(new JLabel("Max Pressure"));\r
+                               \r
+                               text.add(new JLabel("Safty Factor"));\r
 \r
                                text.add(new JLabel(bi.getRating()));\r
                                text.add(new JLabel(RocketScience.ammountToRoundedString(bi.totalImpulse())));\r
@@ -117,13 +124,40 @@ public class BurnPanel extends JPanel {
                                                .ammountToRoundedString(bi.averageThrust())));\r
                                text.add(new JLabel(RocketScience\r
                                                .ammountToRoundedString(bi.maxPressure())));\r
+                               \r
+                               Color saftyColor;\r
+                               if ( bi.getSaftyFactor() == null ){\r
+\r
+                                       saftyColor = Color.BLACK;\r
+                                       text.add(new JLabel("NA"));\r
+                               } else {\r
+                                       double d = bi.getSaftyFactor();\r
+                                       if ( d > 1.5 ){\r
+                                               saftyColor = GREEN;\r
+                                       } else if ( d > 1 ){\r
+                                               saftyColor = ORANGE;\r
+                                       } else {\r
+                                               saftyColor = RED;\r
+                                       }\r
+                                       JLabel l = new JLabel( new DecimalFormat("##########.#").format(bi.getSaftyFactor()));\r
+                                       l.setOpaque(true);\r
+                                       l.setBackground(saftyColor);\r
+                                       l.setForeground(Color.WHITE);\r
+                                       text.add(l);\r
+                               }\r
+                               \r
 \r
                                add(text, BorderLayout.NORTH);\r
                                \r
                                thrust.addRangeMarker(bi.maxThrust(), "Max", Color.BLACK);\r
                                thrust.addRangeMarker(bi.averageThrust(), "Average", Color.BLACK);\r
                                pressure.addRangeMarker(bi.maxPressure(), "Max", Color.BLACK);\r
-                               burnRate.addDomainMarker(bi.maxPressure(), "Max", Color.RED);\r
+                               burnRate.addDomainMarker(bi.maxPressure(), "Max", RED);\r
+                               \r
+                               Amount<Pressure> burst = b.getMotor().getChamber().burstPressure();\r
+                               if ( burst != null ){\r
+                                       pressure.addRangeMarker(burst, "Burst", saftyColor);\r
+                               }\r
                        }\r
                        \r
                        \r