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
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
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
.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().getBurstPressure();\r
+ if ( burst != null ){\r
+ pressure.addRangeMarker(burst, "Burst", saftyColor);\r
+ }\r
}\r
\r
\r