package net.sf.openrocket.preset.loader; import net.sf.openrocket.material.Material; import net.sf.openrocket.preset.ComponentPreset; import net.sf.openrocket.preset.ComponentPreset.Type; import net.sf.openrocket.preset.TypedPropertyMap; import java.io.File; public class ParachuteLoader extends BaseComponentLoader { private final MaterialHolder materials; public ParachuteLoader(MaterialHolder materials, File theBasePath) { super(materials, theBasePath); this.materials = materials; fileColumns.add(new IntegerColumnParser("n sides", ComponentPreset.SIDES)); fileColumns.add(new DoubleUnitColumnParser("OD","Units",ComponentPreset.DIAMETER)); fileColumns.add(new IntegerColumnParser("Shroud Count", ComponentPreset.LINE_COUNT)); fileColumns.add(new DoubleUnitColumnParser("Shroud Len", "Units", ComponentPreset.LINE_LENGTH)); fileColumns.add(new LineMaterialColumnParser(materials,"Shroud Material",ComponentPreset.LINE_MATERIAL)); fileColumns.add(new DoubleUnitColumnParser("Chute Thickness", "Units", ComponentPreset.THICKNESS)); fileColumns.add( new SurfaceMaterialColumnParser(materials,"Chute Material", ComponentPreset.MATERIAL)); } @Override protected Type getComponentPresetType() { return ComponentPreset.Type.PARACHUTE; } @Override protected RocksimComponentFileType getFileType() { return RocksimComponentFileType.PARACHUTE; } @Override protected void postProcess(TypedPropertyMap props) { super.postProcess(props); // Fix the material since some files use bulk materials for streamers. Double thickness = props.get( ComponentPreset.THICKNESS ); Material.Surface myMaterial = (Material.Surface) props.get( ComponentPreset.MATERIAL ); Material.Surface m = materials.getSurfaceMaterial(myMaterial, thickness); props.put(ComponentPreset.MATERIAL, m!=null ? m : myMaterial); } }