Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / StructuralComponent.java
index d37af27e5744829cddc44a9a8a108d5bc986838b..b7143c68297b50e8fb882aee058b4964866efa10 100644 (file)
@@ -1,6 +1,7 @@
 package net.sf.openrocket.rocketcomponent;
 
 import net.sf.openrocket.material.Material;
+import net.sf.openrocket.preset.ComponentPreset;
 import net.sf.openrocket.startup.Application;
 
 public abstract class StructuralComponent extends InternalComponent {
@@ -12,6 +13,30 @@ public abstract class StructuralComponent extends InternalComponent {
                material = Application.getPreferences().getDefaultComponentMaterial(this.getClass(), Material.Type.BULK);
        }
        
+       @Override
+       protected void loadFromPreset(ComponentPreset preset) {
+               super.loadFromPreset(preset);
+               if ( preset.has(ComponentPreset.MATERIAL ) ) {
+                       Material mat = preset.get(ComponentPreset.MATERIAL);
+                       if ( mat != null ) {
+                               this.material = mat;
+                       } /*
+                       TODO - 
+                       else if (c.isMassOverridden()) {
+                               double mass = c.getOverrideMass();
+                               double volume = getComponentVolume();
+                               double density;
+                               if (volume > 0.00001) {
+                                       density = mass / volume;
+                               } else {
+                                       density = 1000;
+                               }
+                               mat = Material.newMaterial(Type.BULK, mat.getName(), density, true);
+                               setMaterial(mat);
+                       }
+                       */
+               }
+       }
 
        public final Material getMaterial() {
                return material;
@@ -24,6 +49,7 @@ public abstract class StructuralComponent extends InternalComponent {
                if (mat.equals(material))
                        return;
                this.material = mat;
+               clearPreset();
                fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
        }
 }