Merged l10n branch to trunk
[debian/openrocket] / src / net / sf / openrocket / gui / configdialog / EllipticalFinSetConfig.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.JSeparator;
8 import javax.swing.JSpinner;
9 import javax.swing.SwingConstants;
10
11 import net.miginfocom.swing.MigLayout;
12 import net.sf.openrocket.gui.SpinnerEditor;
13 import net.sf.openrocket.gui.adaptors.DoubleModel;
14 import net.sf.openrocket.gui.adaptors.EnumModel;
15 import net.sf.openrocket.gui.adaptors.IntegerModel;
16 import net.sf.openrocket.gui.components.BasicSlider;
17 import net.sf.openrocket.gui.components.UnitSelector;
18 import net.sf.openrocket.l10n.Translator;
19 import net.sf.openrocket.material.Material;
20 import net.sf.openrocket.rocketcomponent.FinSet;
21 import net.sf.openrocket.rocketcomponent.RocketComponent;
22 import net.sf.openrocket.startup.Application;
23 import net.sf.openrocket.unit.UnitGroup;
24
25 public class EllipticalFinSetConfig extends FinSetConfig {
26         private static final Translator trans = Application.getTranslator();
27
28         public EllipticalFinSetConfig(final RocketComponent component) {
29                 super(component);
30
31                 DoubleModel m;
32                 JSpinner spin;
33                 JComboBox combo;
34                 
35                 JPanel mainPanel = new JPanel(new MigLayout());
36                 
37                 
38                 
39                 JPanel panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
40                 
41                 ////  Number of fins
42                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Nbroffins")));
43                 
44                 IntegerModel im = new IntegerModel(component,"FinCount",1,8);
45                 
46                 spin = new JSpinner(im.getSpinnerModel());
47                 spin.setEditor(new SpinnerEditor(spin));
48                 panel.add(spin,"growx, wrap");
49                 
50                 
51                 ////  Base rotation
52                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rotation")));
53                 
54                 m = new DoubleModel(component, "BaseRotation", UnitGroup.UNITS_ANGLE,-Math.PI,Math.PI);
55                 
56                 spin = new JSpinner(m.getSpinnerModel());
57                 spin.setEditor(new SpinnerEditor(spin));
58                 panel.add(spin,"growx");
59                 
60                 panel.add(new UnitSelector(m),"growx");
61                 panel.add(new BasicSlider(m.getSliderModel(-Math.PI,Math.PI)),"w 100lp, wrap");
62                 
63                 
64                 ////  Fin cant
65                 JLabel label = new JLabel(trans.get("EllipticalFinSetCfg.Fincant"));
66                 //// "The angle that the fins are canted with respect to the rocket
67                 label.setToolTipText(trans.get("EllipticalFinSetCfg.ttip.Fincant"));
68                 panel.add(label);
69                 
70                 m = new DoubleModel(component, "CantAngle", UnitGroup.UNITS_ANGLE,
71                                 -FinSet.MAX_CANT, FinSet.MAX_CANT);
72                 
73                 spin = new JSpinner(m.getSpinnerModel());
74                 spin.setEditor(new SpinnerEditor(spin));
75                 panel.add(spin,"growx");
76                 
77                 panel.add(new UnitSelector(m),"growx");
78                 panel.add(new BasicSlider(m.getSliderModel(-FinSet.MAX_CANT,FinSet.MAX_CANT)),
79                                 "w 100lp, wrap");
80                 
81
82                 
83                 ////  Root chord
84                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Rootchord")));
85                 
86                 m  = new DoubleModel(component,"Length",UnitGroup.UNITS_LENGTH,0);
87                 
88                 spin = new JSpinner(m.getSpinnerModel());
89                 spin.setEditor(new SpinnerEditor(spin));
90                 panel.add(spin,"growx");
91                 
92                 panel.add(new UnitSelector(m),"growx");
93                 panel.add(new BasicSlider(m.getSliderModel(0,0.05,0.2)),"w 100lp, wrap");
94
95
96                 ////  Height
97                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Height")));
98                 
99                 m = new DoubleModel(component,"Height",UnitGroup.UNITS_LENGTH,0);
100                 
101                 spin = new JSpinner(m.getSpinnerModel());
102                 spin.setEditor(new SpinnerEditor(spin));
103                 panel.add(spin,"growx");
104                 
105                 panel.add(new UnitSelector(m),"growx");
106                 panel.add(new BasicSlider(m.getSliderModel(0,0.05,0.2)),"w 100lp, wrap");
107         
108                 
109                 ////  Position
110                 //// Position relative to:
111                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Positionrelativeto")));
112
113                 combo = new JComboBox(
114                                 new EnumModel<RocketComponent.Position>(component, "RelativePosition",
115                                                 new RocketComponent.Position[] {
116                                                 RocketComponent.Position.TOP,
117                                                 RocketComponent.Position.MIDDLE,
118                                                 RocketComponent.Position.BOTTOM,
119                                                 RocketComponent.Position.ABSOLUTE
120                                 }));
121                 panel.add(combo,"spanx, growx, wrap");
122                 
123                 //// plus
124                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.plus")),"right");
125
126                 m = new DoubleModel(component,"PositionValue",UnitGroup.UNITS_LENGTH);
127                 spin = new JSpinner(m.getSpinnerModel());
128                 spin.setEditor(new SpinnerEditor(spin));
129                 panel.add(spin,"growx");
130                 
131                 panel.add(new UnitSelector(m),"growx");
132                 panel.add(new BasicSlider(m.getSliderModel(
133                                 new DoubleModel(component.getParent(), "Length", -1.0, UnitGroup.UNITS_NONE),
134                                 new DoubleModel(component.getParent(), "Length"))),
135                                 "w 100lp, wrap");
136
137
138                 
139                 //// Right portion
140                 mainPanel.add(panel,"aligny 20%");
141                 
142                 mainPanel.add(new JSeparator(SwingConstants.VERTICAL),"growy");
143                 
144                 
145                 
146                 panel = new JPanel(new MigLayout("gap rel unrel","[][65lp::][30lp::]",""));
147
148
149                 ////  Cross section
150                 //// Fin cross section:
151                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.FincrossSection")),"span, split");
152                 combo = new JComboBox(
153                                 new EnumModel<FinSet.CrossSection>(component,"CrossSection"));
154                 panel.add(combo,"growx, wrap unrel");
155                 
156
157                 ////  Thickness:
158                 panel.add(new JLabel(trans.get("EllipticalFinSetCfg.Thickness")));
159                 
160                 m = new DoubleModel(component,"Thickness",UnitGroup.UNITS_LENGTH,0);
161                 
162                 spin = new JSpinner(m.getSpinnerModel());
163                 spin.setEditor(new SpinnerEditor(spin));
164                 panel.add(spin,"growx");
165                 
166                 panel.add(new UnitSelector(m),"growx");
167                 panel.add(new BasicSlider(m.getSliderModel(0,0.01)),"w 100lp, wrap 30lp");
168                 
169                 
170
171                 //// Material
172                 materialPanel(panel, Material.Type.BULK);
173                 
174                 
175                 
176                 
177                 
178                 mainPanel.add(panel,"aligny 20%");
179                 
180                 addFinSetButtons();
181
182                 //// General and General properties
183                 tabbedPane.insertTab(trans.get("EllipticalFinSetCfg.General"), null, mainPanel, 
184                                 trans.get("EllipticalFinSetCfg.Generalproperties"), 0);
185                 tabbedPane.setSelectedIndex(0);
186         }
187
188 }