1 package net.sf.openrocket.gui.configdialog;
4 import javax.swing.JCheckBox;
5 import javax.swing.JLabel;
6 import javax.swing.JPanel;
7 import javax.swing.JSpinner;
9 import net.miginfocom.swing.MigLayout;
10 import net.sf.openrocket.gui.BasicSlider;
11 import net.sf.openrocket.gui.SpinnerEditor;
12 import net.sf.openrocket.gui.UnitSelector;
13 import net.sf.openrocket.gui.adaptors.BooleanModel;
14 import net.sf.openrocket.gui.adaptors.DoubleModel;
15 import net.sf.openrocket.material.Material;
16 import net.sf.openrocket.rocketcomponent.BodyTube;
17 import net.sf.openrocket.rocketcomponent.RocketComponent;
18 import net.sf.openrocket.unit.UnitGroup;
20 public class BodyTubeConfig extends RocketComponentConfig {
22 private MotorConfig motorConfigPane = null;
24 public BodyTubeConfig(RocketComponent c) {
27 JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]",""));
30 panel.add(new JLabel("Body tube length:"));
32 DoubleModel m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
34 JSpinner spin = new JSpinner(m.getSpinnerModel());
35 spin.setEditor(new SpinnerEditor(spin));
36 panel.add(spin,"growx");
38 panel.add(new UnitSelector(m),"growx");
39 panel.add(new BasicSlider(m.getSliderModel(0, 0.5, 2.0)),"w 100lp, wrap");
42 //// Body tube diameter
43 panel.add(new JLabel("Outer diameter:"));
45 DoubleModel od = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0);
46 // Diameter = 2*Radius
48 spin = new JSpinner(od.getSpinnerModel());
49 spin.setEditor(new SpinnerEditor(spin));
50 panel.add(spin,"growx");
52 panel.add(new UnitSelector(od),"growx");
53 panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap 0px");
55 JCheckBox check = new JCheckBox(od.getAutomaticAction());
56 check.setText("Automatic");
57 panel.add(check,"skip, span 2, wrap");
61 panel.add(new JLabel("Inner diameter:"));
63 // Diameter = 2*Radius
64 m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0);
67 spin = new JSpinner(m.getSpinnerModel());
68 spin.setEditor(new SpinnerEditor(spin));
69 panel.add(spin,"growx");
71 panel.add(new UnitSelector(m),"growx");
72 panel.add(new BasicSlider(m.getSliderModel(new DoubleModel(0), od)),"w 100lp, wrap");
76 panel.add(new JLabel("Wall thickness:"));
78 m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
80 spin = new JSpinner(m.getSpinnerModel());
81 spin.setEditor(new SpinnerEditor(spin));
82 panel.add(spin,"growx");
84 panel.add(new UnitSelector(m),"growx");
85 panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 0px");
88 check = new JCheckBox(new BooleanModel(component,"Filled"));
89 check.setText("Filled");
90 panel.add(check,"skip, span 2, wrap");
94 panel.add(materialPanel(new JPanel(new MigLayout()), Material.Type.BULK),
95 "cell 4 0, gapleft paragraph, aligny 0%, spany");
98 tabbedPane.insertTab("General", null, panel, "General properties", 0);
99 motorConfigPane = new MotorConfig((BodyTube)c);
100 tabbedPane.insertTab("Motor", null, motorConfigPane, "Motor mount configuration", 1);
101 tabbedPane.setSelectedIndex(0);
105 public void updateFields() {
106 super.updateFields();
107 if (motorConfigPane != null)
108 motorConfigPane.updateFields();