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 { private Material material; public StructuralComponent() { super(); 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; } public final void setMaterial(Material mat) { if (mat.getType() != Material.Type.BULK) { throw new IllegalArgumentException("Attempted to set non-bulk material "+mat); } if (mat.equals(material)) return; this.material = mat; clearPreset(); fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE); } }