create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / preset / loader / StreamerLoader.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 StreamerLoader extends BaseComponentLoader {
11
12         private final MaterialHolder materials;
13
14         public StreamerLoader(MaterialHolder theMaterials, File theBasePath) {
15                 super(theMaterials, theBasePath);
16                 materials = theMaterials;
17
18         //The base component loader adds a bulk material loader, which is incompatible with the surface loader
19         //for a streamer.  Remove the file column parser here so we can set your own in the code that follows.
20         for (int i = 0; i < fileColumns.size(); i++) {
21             RocksimComponentFileColumnParser rocksimComponentFileColumnParser = fileColumns.get(i);
22             if (rocksimComponentFileColumnParser instanceof MaterialColumnParser) {
23                 fileColumns.remove(rocksimComponentFileColumnParser);
24             }
25         }
26
27                 fileColumns.add(new SurfaceMaterialColumnParser(materials,"Material",ComponentPreset.MATERIAL));
28                 fileColumns.add(new DoubleUnitColumnParser("Length","Units",ComponentPreset.LENGTH));
29                 fileColumns.add(new DoubleUnitColumnParser("Width","Units",ComponentPreset.WIDTH));
30                 fileColumns.add(new DoubleUnitColumnParser("Thickness","Units",ComponentPreset.THICKNESS));
31         }
32
33
34         @Override
35         protected Type getComponentPresetType() {
36                 return ComponentPreset.Type.STREAMER;
37         }
38
39
40         @Override
41         protected RocksimComponentFileType getFileType() {
42                 return RocksimComponentFileType.STREAMER;
43         }
44
45
46         @Override
47         protected void postProcess(TypedPropertyMap props) {
48                 super.postProcess(props);
49
50                 // Fix the material since some files use bulk materials for streamers.
51                 Double thickness = props.get( ComponentPreset.THICKNESS );
52                 Material.Surface myMaterial = (Material.Surface) props.get( ComponentPreset.MATERIAL );
53
54                 Material.Surface m = materials.getSurfaceMaterial(myMaterial, thickness);
55
56                 props.put(ComponentPreset.MATERIAL, m!=null? m : myMaterial);
57         }
58
59 }