Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / Parachute.java
index 640810bb2e50e9d27e79e4b01a8023b3457cc1e0..aabb6117fda8f48d7d495876fd8e7b929e265fa5 100644 (file)
@@ -2,6 +2,8 @@ package net.sf.openrocket.rocketcomponent;
 
 import net.sf.openrocket.l10n.Translator;
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.ComponentPreset.Type;
 import net.sf.openrocket.startup.Application;
 import net.sf.openrocket.util.MathUtil;
 
@@ -32,6 +34,7 @@ public class Parachute extends RecoveryDevice {
                if (MathUtil.equals(this.diameter, d))
                        return;
                this.diameter = d;
+               clearPreset();
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
        
@@ -62,6 +65,7 @@ public class Parachute extends RecoveryDevice {
                if (this.lineCount == n)
                        return;
                this.lineCount = n;
+               clearPreset();
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
        
@@ -94,6 +98,7 @@ public class Parachute extends RecoveryDevice {
                if (MathUtil.equals(getArea(), area))
                        return;
                diameter = MathUtil.safeSqrt(area / Math.PI) * 2;
+               clearPreset();
                fireComponentChangeEvent(ComponentChangeEvent.BOTH_CHANGE);
        }
        
@@ -118,5 +123,29 @@ public class Parachute extends RecoveryDevice {
        public boolean isCompatible(Class<? extends RocketComponent> type) {
                return false;
        }
+
+
+       @Override
+       protected void loadFromPreset(ComponentPreset preset) {
+               if( preset.has( ComponentPreset.DIAMETER )) {
+                       this.diameter = preset.get( ComponentPreset.DIAMETER );
+               }
+               if( preset.has( ComponentPreset.LINE_COUNT )) {
+                       this.lineCount = preset.get( ComponentPreset.LINE_COUNT );
+               }
+               if( preset.has( ComponentPreset.LINE_LENGTH )) {
+                       this.lineLength = preset.get( ComponentPreset.LINE_LENGTH );
+               }
+               if( preset.has( ComponentPreset.LINE_MATERIAL )) {
+                       this.lineMaterial = preset.get( ComponentPreset.LINE_MATERIAL );
+               }
+               super.loadFromPreset(preset);
+       }
+
+
+       @Override
+       public Type getPresetType() {
+               return ComponentPreset.Type.PARACHUTE;
+       }
        
 }