create changelog entry
[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 import java.io.File;
9
10 public class ParachuteLoader extends BaseComponentLoader {
11
12         private final MaterialHolder materials;
13
14         public ParachuteLoader(MaterialHolder materials, File theBasePath) {
15                 super(materials, theBasePath);
16                 this.materials = materials;
17                 fileColumns.add(new IntegerColumnParser("n sides", ComponentPreset.SIDES));
18                 fileColumns.add(new DoubleUnitColumnParser("OD","Units",ComponentPreset.DIAMETER));
19                 fileColumns.add(new IntegerColumnParser("Shroud Count", ComponentPreset.LINE_COUNT));
20                 fileColumns.add(new DoubleUnitColumnParser("Shroud Len", "Units", ComponentPreset.LINE_LENGTH));
21                 fileColumns.add(new LineMaterialColumnParser(materials,"Shroud Material",ComponentPreset.LINE_MATERIAL));
22                 fileColumns.add(new DoubleUnitColumnParser("Chute Thickness", "Units", ComponentPreset.THICKNESS));
23                 fileColumns.add( new SurfaceMaterialColumnParser(materials,"Chute Material", ComponentPreset.MATERIAL));
24         }
25
26
27         @Override
28         protected Type getComponentPresetType() {
29                 return ComponentPreset.Type.PARACHUTE;
30         }
31
32
33         @Override
34         protected RocksimComponentFileType getFileType() {
35                 return RocksimComponentFileType.PARACHUTE;
36         }
37
38
39         @Override
40         protected void postProcess(TypedPropertyMap props) {
41                 super.postProcess(props);
42
43                 // Fix the material since some files use bulk materials for streamers.
44                 Double thickness = props.get( ComponentPreset.THICKNESS );
45                 Material.Surface myMaterial = (Material.Surface) props.get( ComponentPreset.MATERIAL );
46
47                 Material.Surface m = materials.getSurfaceMaterial(myMaterial, thickness);
48                 props.put(ComponentPreset.MATERIAL, m!=null ? m : myMaterial);
49         }
50
51 }