+ setPreferredSize(new Dimension(100, 40));\r
+ setLayout(new GridLayout(1, 1));\r
+ bar.setStringPainted(true);\r
+ add(bar);\r
+ this.burn = b;\r
+ burn.addBurnProgressListener(this);\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
+ }\r
+\r
+ @Override\r
+ public void burnComplete() {\r
+ setBurnSummary(new BurnSummary(burn));\r