1 package net.sf.openrocket.gui.configdialog;
4 import javax.swing.JComboBox;
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.document.OpenRocketDocument;
11 import net.sf.openrocket.gui.SpinnerEditor;
12 import net.sf.openrocket.gui.adaptors.DoubleModel;
13 import net.sf.openrocket.gui.adaptors.EnumModel;
14 import net.sf.openrocket.gui.components.BasicSlider;
15 import net.sf.openrocket.gui.components.UnitSelector;
16 import net.sf.openrocket.l10n.Translator;
17 import net.sf.openrocket.material.Material;
18 import net.sf.openrocket.rocketcomponent.RocketComponent;
19 import net.sf.openrocket.startup.Application;
20 import net.sf.openrocket.unit.UnitGroup;
22 public class LaunchLugConfig extends RocketComponentConfig {
24 private MotorConfig motorConfigPane = null;
25 private static final Translator trans = Application.getTranslator();
27 public LaunchLugConfig(OpenRocketDocument d, RocketComponent c) {
30 JPanel primary = new JPanel(new MigLayout("fill"));
33 JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
37 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Length")));
39 DoubleModel m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0);
41 JSpinner spin = new JSpinner(m.getSpinnerModel());
42 spin.setEditor(new SpinnerEditor(spin));
43 panel.add(spin, "growx");
45 panel.add(new UnitSelector(m), "growx");
46 panel.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.1)), "w 100lp, wrap para");
49 //// Body tube diameter
51 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Outerdiam")));
53 DoubleModel od = new DoubleModel(component, "OuterRadius", 2, UnitGroup.UNITS_LENGTH, 0);
54 // Diameter = 2*Radius
56 spin = new JSpinner(od.getSpinnerModel());
57 spin.setEditor(new SpinnerEditor(spin));
58 panel.add(spin, "growx");
60 panel.add(new UnitSelector(od), "growx");
61 panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap rel");
65 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Innerdiam")));
67 // Diameter = 2*Radius
68 m = new DoubleModel(component, "InnerRadius", 2, UnitGroup.UNITS_LENGTH, 0);
71 spin = new JSpinner(m.getSpinnerModel());
72 spin.setEditor(new SpinnerEditor(spin));
73 panel.add(spin, "growx");
75 panel.add(new UnitSelector(m), "growx");
76 panel.add(new BasicSlider(m.getSliderModel(new DoubleModel(0), od)), "w 100lp, wrap rel");
81 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Thickness")));
83 m = new DoubleModel(component, "Thickness", UnitGroup.UNITS_LENGTH, 0);
85 spin = new JSpinner(m.getSpinnerModel());
86 spin.setEditor(new SpinnerEditor(spin));
87 panel.add(spin, "growx");
89 panel.add(new UnitSelector(m), "growx");
90 panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap 20lp");
94 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Radialpos")));
96 m = new DoubleModel(component, "RadialDirection", UnitGroup.UNITS_ANGLE,
99 spin = new JSpinner(m.getSpinnerModel());
100 spin.setEditor(new SpinnerEditor(spin));
101 panel.add(spin, "growx");
103 panel.add(new UnitSelector(m), "growx");
104 panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap");
109 primary.add(panel, "grow, gapright 20lp");
110 panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
114 //// Position relative to:
115 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")));
117 JComboBox combo = new JComboBox(
118 new EnumModel<RocketComponent.Position>(component, "RelativePosition",
119 new RocketComponent.Position[] {
120 RocketComponent.Position.TOP,
121 RocketComponent.Position.MIDDLE,
122 RocketComponent.Position.BOTTOM,
123 RocketComponent.Position.ABSOLUTE
125 panel.add(combo, "spanx, growx, wrap");
128 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")), "right");
130 m = new DoubleModel(component, "PositionValue", UnitGroup.UNITS_LENGTH);
131 spin = new JSpinner(m.getSpinnerModel());
132 spin.setEditor(new SpinnerEditor(spin));
133 panel.add(spin, "growx");
135 panel.add(new UnitSelector(m), "growx");
136 panel.add(new BasicSlider(m.getSliderModel(
137 new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE),
138 new DoubleModel(component.getParent(), "Length"))),
139 "w 100lp, wrap para");
144 materialPanel(panel, Material.Type.BULK);
147 primary.add(panel, "grow");
149 //// General and General properties
150 tabbedPane.insertTab(trans.get("LaunchLugCfg.tab.General"), null, primary,
151 trans.get("LaunchLugCfg.tab.Generalprop"), 0);
152 tabbedPane.setSelectedIndex(0);
156 public void updateFields() {
157 super.updateFields();
158 if (motorConfigPane != null)
159 motorConfigPane.updateFields();