]> git.gag.com Git - debian/openrocket/blob - core/src/net/sf/openrocket/rocketcomponent/NoseCone.java
First cut at making component presets work for nose cones.
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / NoseCone.java
1 package net.sf.openrocket.rocketcomponent;
2
3 import net.sf.openrocket.l10n.Translator;
4 import net.sf.openrocket.preset.ComponentPreset;
5 import net.sf.openrocket.preset.ComponentPreset.Type;
6 import net.sf.openrocket.startup.Application;
7
8 /**
9  * Rocket nose cones of various types.  Implemented as a transition with the
10  * fore radius == 0.
11  *
12  * @author Sampo Niskanen <sampo.niskanen@iki.fi>
13  */
14
15 public class NoseCone extends Transition {
16         private static final Translator trans = Application.getTranslator();
17         
18         
19         /********* Constructors **********/
20         public NoseCone() {
21                 this(Transition.Shape.OGIVE, 6 * DEFAULT_RADIUS, DEFAULT_RADIUS);
22         }
23         
24         public NoseCone(Transition.Shape type, double length, double radius) {
25                 super();
26                 super.setType(type);
27                 super.setForeRadiusAutomatic(false);
28                 super.setForeRadius(0);
29                 super.setForeShoulderLength(0);
30                 super.setForeShoulderRadius(0.9 * radius);
31                 super.setForeShoulderThickness(0);
32                 super.setForeShoulderCapped(filled);
33                 super.setThickness(0.002);
34                 super.setLength(length);
35                 super.setClipped(false);
36                 
37         }
38         
39         
40         /********** Get/set methods for component parameters **********/
41         
42         @Override
43         public double getForeRadius() {
44                 return 0;
45         }
46         
47         @Override
48         public void setForeRadius(double r) {
49                 // No-op
50         }
51         
52         @Override
53         public boolean isForeRadiusAutomatic() {
54                 return false;
55         }
56         
57         @Override
58         public void setForeRadiusAutomatic(boolean b) {
59                 // No-op
60         }
61         
62         @Override
63         public double getForeShoulderLength() {
64                 return 0;
65         }
66         
67         @Override
68         public double getForeShoulderRadius() {
69                 return 0;
70         }
71         
72         @Override
73         public double getForeShoulderThickness() {
74                 return 0;
75         }
76         
77         @Override
78         public boolean isForeShoulderCapped() {
79                 return false;
80         }
81         
82         @Override
83         public void setForeShoulderCapped(boolean capped) {
84                 // No-op
85         }
86         
87         @Override
88         public void setForeShoulderLength(double foreShoulderLength) {
89                 // No-op
90         }
91         
92         @Override
93         public void setForeShoulderRadius(double foreShoulderRadius) {
94                 // No-op
95         }
96         
97         @Override
98         public void setForeShoulderThickness(double foreShoulderThickness) {
99                 // No-op
100         }
101         
102         @Override
103         public boolean isClipped() {
104                 return false;
105         }
106         
107         @Override
108         public void setClipped(boolean b) {
109                 // No-op
110         }
111         
112         
113
114         /********** RocketComponent methods **********/
115         
116         @Override
117         public Type getPresetType() {
118                 return ComponentPreset.Type.NOSE_CONE;
119         }
120
121         @Override
122         protected void loadFromPreset(ComponentPreset preset) {
123                 if ( preset.has(ComponentPreset.SHAPE) ) {
124                         Shape s = preset.get(ComponentPreset.SHAPE);
125                         this.setType(s);
126                 }
127                 if ( preset.has(ComponentPreset.OUTER_DIAMETER) )  {
128                         double outerDiameter = preset.get(ComponentPreset.OUTER_DIAMETER);
129                         this.setAftRadiusAutomatic(false);
130                         this.setAftRadius(outerDiameter/2.0);
131                 }
132                 if ( preset.has(ComponentPreset.SHOULDER_LENGTH) ) {
133                         double length = preset.get(ComponentPreset.SHOULDER_LENGTH);
134                         this.setAftShoulderLength(length);
135                 }
136                 if ( preset.has(ComponentPreset.SHOULDER_DIAMETER) ) {
137                         double d = preset.get(ComponentPreset.SHOULDER_DIAMETER);
138                         this.setAftShoulderRadius(d/2.0);
139                 }
140
141                 super.loadFromPreset(preset);
142
143                 fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
144         }
145
146         /**
147          * Return component name.
148          */
149         @Override
150         public String getComponentName() {
151                 //// Nose cone
152                 return trans.get("NoseCone.NoseCone");
153         }
154         
155 }