create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / gui / configdialog / LaunchLugConfig.java
1 package net.sf.openrocket.gui.configdialog;
2
3
4 import javax.swing.JComboBox;
5 import javax.swing.JLabel;
6 import javax.swing.JPanel;
7 import javax.swing.JSpinner;
8
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;
21
22 public class LaunchLugConfig extends RocketComponentConfig {
23         
24         private MotorConfig motorConfigPane = null;
25         private static final Translator trans = Application.getTranslator();
26         
27         public LaunchLugConfig(OpenRocketDocument d, RocketComponent c) {
28                 super(d, c);
29                 
30                 JPanel primary = new JPanel(new MigLayout("fill"));
31                 
32                 
33                 JPanel panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
34                 
35                 ////  Body tube length
36                 //// Length:
37                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Length")));
38                 
39                 DoubleModel m = new DoubleModel(component, "Length", UnitGroup.UNITS_LENGTH, 0);
40                 
41                 JSpinner spin = new JSpinner(m.getSpinnerModel());
42                 spin.setEditor(new SpinnerEditor(spin));
43                 panel.add(spin, "growx");
44                 
45                 panel.add(new UnitSelector(m), "growx");
46                 panel.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.1)), "w 100lp, wrap para");
47                 
48                 
49                 //// Body tube diameter
50                 //// Outer diameter:
51                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Outerdiam")));
52                 
53                 DoubleModel od = new DoubleModel(component, "OuterRadius", 2, UnitGroup.UNITS_LENGTH, 0);
54                 // Diameter = 2*Radius
55                 
56                 spin = new JSpinner(od.getSpinnerModel());
57                 spin.setEditor(new SpinnerEditor(spin));
58                 panel.add(spin, "growx");
59                 
60                 panel.add(new UnitSelector(od), "growx");
61                 panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)), "w 100lp, wrap rel");
62                 
63                 
64                 ////  Inner diameter:
65                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Innerdiam")));
66                 
67                 // Diameter = 2*Radius
68                 m = new DoubleModel(component, "InnerRadius", 2, UnitGroup.UNITS_LENGTH, 0);
69                 
70                 
71                 spin = new JSpinner(m.getSpinnerModel());
72                 spin.setEditor(new SpinnerEditor(spin));
73                 panel.add(spin, "growx");
74                 
75                 panel.add(new UnitSelector(m), "growx");
76                 panel.add(new BasicSlider(m.getSliderModel(new DoubleModel(0), od)), "w 100lp, wrap rel");
77                 
78                 
79                 ////  Wall thickness
80                 //// Thickness:
81                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Thickness")));
82                 
83                 m = new DoubleModel(component, "Thickness", UnitGroup.UNITS_LENGTH, 0);
84                 
85                 spin = new JSpinner(m.getSpinnerModel());
86                 spin.setEditor(new SpinnerEditor(spin));
87                 panel.add(spin, "growx");
88                 
89                 panel.add(new UnitSelector(m), "growx");
90                 panel.add(new BasicSlider(m.getSliderModel(0, 0.01)), "w 100lp, wrap 20lp");
91                 
92                 
93                 ////  Radial position:
94                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Radialpos")));
95                 
96                 m = new DoubleModel(component, "RadialDirection", UnitGroup.UNITS_ANGLE);
97                 
98                 spin = new JSpinner(m.getSpinnerModel());
99                 spin.setEditor(new SpinnerEditor(spin));
100                 panel.add(spin, "growx");
101                 
102                 panel.add(new UnitSelector(m), "growx");
103                 panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap");
104                 
105                 
106                 
107                 
108                 primary.add(panel, "grow, gapright 20lp");
109                 panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
110                 
111                 
112                 
113                 //// Position relative to:
114                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")));
115                 
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
123                                                 }));
124                 panel.add(combo, "spanx, growx, wrap");
125                 
126                 //// plus
127                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")), "right");
128                 
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");
133                 
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");
139                 
140                 
141                 
142                 //// Material
143                 materialPanel(panel, Material.Type.BULK);
144                 
145                 
146                 primary.add(panel, "grow");
147                 
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);
152         }
153         
154         @Override
155         public void updateFields() {
156                 super.updateFields();
157                 if (motorConfigPane != null)
158                         motorConfigPane.updateFields();
159         }
160         
161 }