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);
98 spin = new JSpinner(m.getSpinnerModel());
99 spin.setEditor(new SpinnerEditor(spin));
100 panel.add(spin, "growx");
102 panel.add(new UnitSelector(m), "growx");
103 panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap");
108 primary.add(panel, "grow, gapright 20lp");
109 panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
113 //// Position relative to:
114 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")));
116 JComboBox combo = new JComboBox(
117 new EnumModel<RocketComponent.Position>(component, "RelativePosition",
118 new RocketComponent.Position[] {
119 RocketComponent.Position.TOP,
120 RocketComponent.Position.MIDDLE,
121 RocketComponent.Position.BOTTOM,
122 RocketComponent.Position.ABSOLUTE
124 panel.add(combo, "spanx, growx, wrap");
127 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")), "right");
129 m = new DoubleModel(component, "PositionValue", UnitGroup.UNITS_LENGTH);
130 spin = new JSpinner(m.getSpinnerModel());
131 spin.setEditor(new SpinnerEditor(spin));
132 panel.add(spin, "growx");
134 panel.add(new UnitSelector(m), "growx");
135 panel.add(new BasicSlider(m.getSliderModel(
136 new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE),
137 new DoubleModel(component.getParent(), "Length"))),
138 "w 100lp, wrap para");
143 materialPanel(panel, Material.Type.BULK);
146 primary.add(panel, "grow");
148 //// General and General properties
149 tabbedPane.insertTab(trans.get("LaunchLugCfg.tab.General"), null, primary,
150 trans.get("LaunchLugCfg.tab.Generalprop"), 0);
151 tabbedPane.setSelectedIndex(0);
155 public void updateFields() {
156 super.updateFields();
157 if (motorConfigPane != null)
158 motorConfigPane.updateFields();