Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / LaunchLug.java
index 5614e07710c1cd0edfa1ed07818ce9e9684b181d..437094368d7483486b2936c596846b938d4d5d19 100644 (file)
@@ -4,6 +4,8 @@ import java.util.ArrayList;
 import java.util.Collection;
 
 import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.ComponentPreset.Type;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.Coordinate;
 import net.sf.openrocket.util.MathUtil;
@@ -43,6 +45,7 @@ public class LaunchLug extends ExternalComponent implements Coaxial {
                        return;
                this.radius = radius;
                this.thickness = Math.min(this.thickness, this.radius);
+               clearPreset();
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
        
@@ -65,6 +68,7 @@ public class LaunchLug extends ExternalComponent implements Coaxial {
                if (MathUtil.equals(this.thickness, thickness))
                        return;
                this.thickness = MathUtil.clamp(thickness, 0, radius);
+               clearPreset();
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
        
@@ -109,6 +113,29 @@ public class LaunchLug extends ExternalComponent implements Coaxial {
        
        
 
+       @Override
+       protected void loadFromPreset(ComponentPreset preset) {
+               if ( preset.has(ComponentPreset.OUTER_DIAMETER) )  {
+                       double outerDiameter = preset.get(ComponentPreset.OUTER_DIAMETER);
+                       this.radius = 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 Type getPresetType() {
+               return ComponentPreset.Type.LAUNCH_LUG;
+       }
+
+
        @Override
        public Coordinate[] shiftCoordinates(Coordinate[] array) {
                array = super.shiftCoordinates(array);