Initial commit
[debian/openrocket] / 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.gui.BasicSlider;
11 import net.sf.openrocket.gui.SpinnerEditor;
12 import net.sf.openrocket.gui.UnitSelector;
13 import net.sf.openrocket.gui.adaptors.DoubleModel;
14 import net.sf.openrocket.gui.adaptors.EnumModel;
15 import net.sf.openrocket.material.Material;
16 import net.sf.openrocket.rocketcomponent.RocketComponent;
17 import net.sf.openrocket.unit.UnitGroup;
18
19 public class LaunchLugConfig extends RocketComponentConfig {
20
21         private MotorConfig motorConfigPane = null;
22
23         public LaunchLugConfig(RocketComponent c) {
24                 super(c);
25                 
26                 JPanel primary = new JPanel(new MigLayout("fill"));
27                 
28                 
29                 JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]",""));
30                 
31                 ////  Body tube length
32                 panel.add(new JLabel("Length:"));
33                 
34                 DoubleModel m = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
35                 
36                 JSpinner spin = new JSpinner(m.getSpinnerModel());
37                 spin.setEditor(new SpinnerEditor(spin));
38                 panel.add(spin,"growx");
39                 
40                 panel.add(new UnitSelector(m),"growx");
41                 panel.add(new BasicSlider(m.getSliderModel(0, 0.02, 0.1)),"w 100lp, wrap para");
42                 
43                 
44                 //// Body tube diameter
45                 panel.add(new JLabel("Outer diameter:"));
46
47                 DoubleModel od  = new DoubleModel(component,"Radius",2,UnitGroup.UNITS_LENGTH,0);
48                 // Diameter = 2*Radius
49
50                 spin = new JSpinner(od.getSpinnerModel());
51                 spin.setEditor(new SpinnerEditor(spin));
52                 panel.add(spin,"growx");
53                 
54                 panel.add(new UnitSelector(od),"growx");
55                 panel.add(new BasicSlider(od.getSliderModel(0, 0.04, 0.2)),"w 100lp, wrap rel");
56
57                 
58                 ////  Inner diameter
59                 panel.add(new JLabel("Inner diameter:"));
60
61                 // Diameter = 2*Radius
62                 m = new DoubleModel(component,"InnerRadius",2,UnitGroup.UNITS_LENGTH,0);
63                 
64
65                 spin = new JSpinner(m.getSpinnerModel());
66                 spin.setEditor(new SpinnerEditor(spin));
67                 panel.add(spin,"growx");
68                 
69                 panel.add(new UnitSelector(m),"growx");
70                 panel.add(new BasicSlider(m.getSliderModel(new DoubleModel(0), od)),"w 100lp, wrap rel");
71
72                 
73                 ////  Wall thickness
74                 panel.add(new JLabel("Thickness:"));
75                 
76                 m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
77                 
78                 spin = new JSpinner(m.getSpinnerModel());
79                 spin.setEditor(new SpinnerEditor(spin));
80                 panel.add(spin,"growx");
81                 
82                 panel.add(new UnitSelector(m),"growx");
83                 panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 20lp");
84                 
85
86                 ////  Radial direction
87                 panel.add(new JLabel("Radial position:"));
88                 
89                 m = new DoubleModel(component,"RadialDirection",UnitGroup.UNITS_ANGLE,
90                                 -Math.PI, Math.PI);
91                 
92                 spin = new JSpinner(m.getSpinnerModel());
93                 spin.setEditor(new SpinnerEditor(spin));
94                 panel.add(spin,"growx");
95                 
96                 panel.add(new UnitSelector(m),"growx");
97                 panel.add(new BasicSlider(m.getSliderModel(-Math.PI, Math.PI)),"w 100lp, wrap");
98                 
99                 
100                 
101                 
102                 primary.add(panel, "grow, gapright 20lp");
103                 panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::][]",""));
104                 
105                 
106                 
107
108                 panel.add(new JLabel("Position relative to:"));
109
110                 JComboBox combo = new JComboBox(
111                                 new EnumModel<RocketComponent.Position>(component, "RelativePosition",
112                                                 new RocketComponent.Position[] {
113                                                 RocketComponent.Position.TOP,
114                                                 RocketComponent.Position.MIDDLE,
115                                                 RocketComponent.Position.BOTTOM,
116                                                 RocketComponent.Position.ABSOLUTE
117                                 }));
118                 panel.add(combo,"spanx, growx, wrap");
119                 
120                 panel.add(new JLabel("plus"),"right");
121
122                 m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
123                 spin = new JSpinner(m.getSpinnerModel());
124                 spin.setEditor(new SpinnerEditor(spin));
125                 panel.add(spin,"growx");
126                 
127                 panel.add(new UnitSelector(m),"growx");
128                 panel.add(new BasicSlider(m.getSliderModel(
129                                 new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE),
130                                 new DoubleModel(component.getParent(), "Length"))),
131                                 "w 100lp, wrap para");
132
133                 
134                 
135                 //// Material
136                 materialPanel(panel, Material.Type.BULK);
137                 
138                 
139                 primary.add(panel,"grow");
140                 
141
142                 tabbedPane.insertTab("General", null, primary, "General properties", 0);
143                 tabbedPane.setSelectedIndex(0);
144         }
145         
146         @Override
147         public void updateFields() {
148                 super.updateFields();
149                 if (motorConfigPane != null)
150                         motorConfigPane.updateFields();
151         }
152         
153 }