+import javax.swing.SwingUtilities;
import javax.swing.UIManager;
public class MotorWorkbench {
} catch (Exception e1) {
e1.printStackTrace();
}
- new com.billkuker.rocketry.motorsim.visual.workbench.MotorWorkbench().setVisible(true);
+ SwingUtilities.invokeLater(new Runnable(){
+ @Override
+ public void run() {
+ new com.billkuker.rocketry.motorsim.visual.workbench.MotorWorkbench().setVisible(true);
+ }
+ });
+
}
}
private static Logger log = Logger.getLogger(Burn.class);\r
protected final Motor motor;\r
\r
+ public interface BurnProgressListener{\r
+ public void setProgress(float p);\r
+ }\r
+ \r
+ private BurnProgressListener bpl = null;\r
+ \r
private static final Amount<Pressure> atmosphereicPressure = Amount.valueOf(101000, SI.PASCAL);\r
\r
public class Interval{\r
burn();\r
}\r
\r
+ public Burn(Motor m, BurnProgressListener bpl){\r
+ motor = m;\r
+ this.bpl = bpl;\r
+ burn();\r
+ }\r
+ \r
private void burn(){\r
log.info("Starting burn...");\r
long start = new Date().getTime();\r
\r
log.debug("Regression: " + next.regression);\r
\r
+ if ( bpl != null ){\r
+ Amount<Dimensionless> a = next.regression.divide(motor.getGrain().webThickness()).to(Dimensionless.UNIT);\r
+ bpl.setProgress((float)a.doubleValue(Dimensionless.UNIT));\r
+ }\r
+ \r
next.time = prev.time.plus(dt);\r
\r
//log.debug("Vold: " + motor.getGrain().volume(prev.regression).to(SI.MILLIMETER.pow(3)));\r
import javax.swing.JButton;\r
import javax.swing.JFrame;\r
import javax.swing.JPanel;\r
+import javax.swing.JProgressBar;\r
import javax.swing.JSplitPane;\r
import javax.swing.JTabbedPane;\r
import javax.swing.JTextField;\r
removeAll();\r
new Thread() {\r
public void run() {\r
- final Burn b = new Burn(motor);\r
+ final JProgressBar bar = new JProgressBar(0,100);\r
+ add(bar);\r
+ final Burn b = new Burn(motor, new Burn.BurnProgressListener(){\r
+ @Override\r
+ public void setProgress(float f){\r
+ bar.setValue((int)(f*100));\r
+ }\r
+ });\r
final BurnPanel bp = new BurnPanel(b);\r
SwingUtilities.invokeLater(new Thread() {\r
public void run() {\r
+ remove(bar);\r
add(bp, BorderLayout.CENTER);\r
+ \r
+ revalidate();\r
}\r
});\r
}\r
private JSplitPane split;\r
private JTree tree;\r
private JTabbedPane motors;\r
- private JToolBar bar;\r
private WorkbenchTreeModel tm;\r
\r
private HashMap<MotorEditor, File> e2f = new HashMap<MotorEditor, File>();\r
top = new JPanel(new BorderLayout());\r
setContentPane(top);\r
\r
- bar = new JToolBar();\r
- bar.add(new JButton("Burn"));\r
- top.add(bar, BorderLayout.PAGE_START);\r
-\r
motors = new JTabbedPane();\r
\r
tree = new JTree(tm = new WorkbenchTreeModel());\r