create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / StructuralComponent.java
1 package net.sf.openrocket.rocketcomponent;
2
3 import net.sf.openrocket.material.Material;
4 import net.sf.openrocket.preset.ComponentPreset;
5 import net.sf.openrocket.startup.Application;
6
7 public abstract class StructuralComponent extends InternalComponent {
8
9         private Material material;
10         
11         public StructuralComponent() {
12                 super();
13                 material = Application.getPreferences().getDefaultComponentMaterial(this.getClass(), Material.Type.BULK);
14         }
15         
16         @Override
17         protected void loadFromPreset(ComponentPreset preset) {
18                 super.loadFromPreset(preset);
19                 if ( preset.has(ComponentPreset.MATERIAL ) ) {
20                         Material mat = preset.get(ComponentPreset.MATERIAL);
21                         if ( mat != null ) {
22                                 this.material = mat;
23                         } /*
24                         TODO - 
25                         else if (c.isMassOverridden()) {
26                                 double mass = c.getOverrideMass();
27                                 double volume = getComponentVolume();
28                                 double density;
29                                 if (volume > 0.00001) {
30                                         density = mass / volume;
31                                 } else {
32                                         density = 1000;
33                                 }
34                                 mat = Material.newMaterial(Type.BULK, mat.getName(), density, true);
35                                 setMaterial(mat);
36                         }
37                         */
38                 }
39         }
40
41         public final Material getMaterial() {
42                 return material;
43         }
44         
45         public final void setMaterial(Material mat) {
46                 if (mat.getType() != Material.Type.BULK) {
47                         throw new IllegalArgumentException("Attempted to set non-bulk material "+mat);
48                 }
49                 if (mat.equals(material))
50                         return;
51                 this.material = mat;
52                 clearPreset();
53                 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
54         }
55 }