X-Git-Url: https://git.gag.com/?a=blobdiff_plain;ds=sidebyside;f=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Floader%2FStreamerLoader.java;fp=core%2Fsrc%2Fnet%2Fsf%2Fopenrocket%2Fpreset%2Floader%2FStreamerLoader.java;h=403ea0f6e28b980e0a59a28b10ef51be0070af3c;hb=9349577cdfdff682b2aabd6daa24fdc3a7449b58;hp=0000000000000000000000000000000000000000;hpb=30ba0a882f0c061176ba14dbf86d3d6fad096c02;p=debian%2Fopenrocket diff --git a/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java b/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java new file mode 100644 index 00000000..403ea0f6 --- /dev/null +++ b/core/src/net/sf/openrocket/preset/loader/StreamerLoader.java @@ -0,0 +1,59 @@ +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 StreamerLoader extends BaseComponentLoader { + + private final MaterialHolder materials; + + public StreamerLoader(MaterialHolder theMaterials, File theBasePath) { + super(theMaterials, theBasePath); + materials = theMaterials; + + //The base component loader adds a bulk material loader, which is incompatible with the surface loader + //for a streamer. Remove the file column parser here so we can set your own in the code that follows. + for (int i = 0; i < fileColumns.size(); i++) { + RocksimComponentFileColumnParser rocksimComponentFileColumnParser = fileColumns.get(i); + if (rocksimComponentFileColumnParser instanceof MaterialColumnParser) { + fileColumns.remove(rocksimComponentFileColumnParser); + } + } + + fileColumns.add(new SurfaceMaterialColumnParser(materials,"Material",ComponentPreset.MATERIAL)); + fileColumns.add(new DoubleUnitColumnParser("Length","Units",ComponentPreset.LENGTH)); + fileColumns.add(new DoubleUnitColumnParser("Width","Units",ComponentPreset.WIDTH)); + fileColumns.add(new DoubleUnitColumnParser("Thickness","Units",ComponentPreset.THICKNESS)); + } + + + @Override + protected Type getComponentPresetType() { + return ComponentPreset.Type.STREAMER; + } + + + @Override + protected RocksimComponentFileType getFileType() { + return RocksimComponentFileType.STREAMER; + } + + + @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); + } + +}