lose embedded source jars from upstream branch
[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                                 -Math.PI, Math.PI);
98                 
99                 spin = new JSpinner(m.getSpinnerModel());
100                 spin.setEditor(new SpinnerEditor(spin));
101                 panel.add(spin, "growx");
102                 
103                 panel.add(new UnitSelector(m), "growx");
104                 panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)), "w 100lp, wrap");
105                 
106
107
108
109                 primary.add(panel, "grow, gapright 20lp");
110                 panel = new JPanel(new MigLayout("gap rel unrel", "[][65lp::][30lp::][]", ""));
111                 
112
113
114                 //// Position relative to:
115                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.Posrelativeto")));
116                 
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
124                                 }));
125                 panel.add(combo, "spanx, growx, wrap");
126                 
127                 //// plus
128                 panel.add(new JLabel(trans.get("LaunchLugCfg.lbl.plus")), "right");
129                 
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");
134                 
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");
140                 
141
142
143                 //// Material
144                 materialPanel(panel, Material.Type.BULK);
145                 
146
147                 primary.add(panel, "grow");
148                 
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);
153         }
154         
155         @Override
156         public void updateFields() {
157                 super.updateFields();
158                 if (motorConfigPane != null)
159                         motorConfigPane.updateFields();
160         }
161         
162 }