Implement MaterialHolder, a container for the Material objects loaded during processi...
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / ParachuteLoader.java
1 package net.sf.openrocket.preset.loader;
2
3 import net.sf.openrocket.material.Material;
4 import net.sf.openrocket.preset.ComponentPreset;
5 import net.sf.openrocket.preset.ComponentPreset.Type;
6 import net.sf.openrocket.preset.TypedPropertyMap;
7
8 public class ParachuteLoader extends BaseComponentLoader {
9
10         private final MaterialHolder materials;
11
12         public ParachuteLoader(MaterialHolder materials) {
13                 super(materials);
14                 this.materials = materials;
15                 fileColumns.add(new IntegerColumnParser("n sides", ComponentPreset.SIDES));
16                 fileColumns.add(new DoubleUnitColumnParser("OD","Units",ComponentPreset.DIAMETER));
17                 fileColumns.add(new IntegerColumnParser("Shroud Count", ComponentPreset.LINE_COUNT));
18                 fileColumns.add(new DoubleUnitColumnParser("Shroud Len", "Units", ComponentPreset.LINE_LENGTH));
19                 fileColumns.add(new LineMaterialColumnParser(materials,"Shroud Material",ComponentPreset.LINE_MATERIAL));
20                 fileColumns.add(new DoubleUnitColumnParser("Chute Thickness", "Units", ComponentPreset.THICKNESS));
21                 fileColumns.add( new SurfaceMaterialColumnParser(materials,"Chute Material", ComponentPreset.MATERIAL));
22         }
23
24         
25         @Override
26         protected Type getComponentPresetType() {
27                 return ComponentPreset.Type.PARACHUTE;
28         }
29
30
31         @Override
32         protected RocksimComponentFileType getFileType() {
33                 return RocksimComponentFileType.PARACHUTE;
34         }
35
36
37         @Override
38         protected void postProcess(TypedPropertyMap props) {
39                 super.postProcess(props);
40
41                 // Fix the material since some files use bulk materials for streamers.
42                 Double thickness = props.get( ComponentPreset.THICKNESS );
43                 Material.Surface material = (Material.Surface) props.get( ComponentPreset.MATERIAL );
44                 
45                 material = materials.getSurfaceMaterial(material, thickness);
46                 props.put(ComponentPreset.MATERIAL, material);
47         }
48
49 }