Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / BodyTube.java
index 07bae72246209497bffc3440798e8b2d0dbed275..65317a3c2f6c79a19b24a3caab32dc18f5cdfde7 100644 (file)
@@ -6,6 +6,7 @@ import java.util.HashMap;
 
 import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.motor.Motor;
+import net.sf.openrocket.preset.ComponentPreset;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Coordinate;
 import net.sf.openrocket.util.MathUtil;
@@ -62,6 +63,11 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
        
        /************  Get/set component parameter methods ************/
        
+       @Override
+       public ComponentPreset.Type getPresetType() {
+               return ComponentPreset.Type.BODY_TUBE;
+       }
+
        /**
         * Return the outer radius of the body tube.
         *
@@ -134,17 +140,22 @@ public class BodyTube extends SymmetricComponent implements MotorMount, Coaxial
        
        
        @Override
-       protected void loadFromPreset(RocketComponent preset) {
-               super.loadFromPreset(preset);
-               BodyTube bt = (BodyTube) preset;
+       protected void loadFromPreset(ComponentPreset preset) {
                this.autoRadius = false;
-               this.outerRadius = bt.getOuterRadius();
-               this.thickness = (bt.getOuterRadius() - bt.getInnerRadius());
-               this.length = bt.getLength();
+               if ( preset.has(ComponentPreset.OUTER_DIAMETER) )  {
+                       double outerDiameter = preset.get(ComponentPreset.OUTER_DIAMETER);
+                       this.outerRadius = outerDiameter/2.0;
+                       if ( preset.has(ComponentPreset.INNER_DIAMETER) ) {
+                               double innerDiameter = preset.get(ComponentPreset.INNER_DIAMETER);
+                               this.thickness = (outerDiameter-innerDiameter) / 2.0;
+                       }
+               }
+
+               super.loadFromPreset(preset);
 
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
-               
        }
+       
        @Override
        public double getAftRadius() {
                return getOuterRadius();