Updates for 0.9.5
[debian/openrocket] / src / net / sf / openrocket / rocketcomponent / ShockCord.java
1 package net.sf.openrocket.rocketcomponent;
2
3 import net.sf.openrocket.material.Material;
4 import net.sf.openrocket.util.BugException;
5 import net.sf.openrocket.util.MathUtil;
6 import net.sf.openrocket.util.Prefs;
7
8 public class ShockCord extends MassObject {
9
10         private Material material;
11         private double cordLength;
12
13         public ShockCord() {
14                 material = Prefs.getDefaultComponentMaterial(ShockCord.class, Material.Type.LINE);
15                 cordLength = 0.4;
16         }
17         
18         
19         
20         public Material getMaterial() {
21                 return material;
22         }
23         
24         public void setMaterial(Material m) {
25                 if (m.getType() != Material.Type.LINE)
26                         throw new BugException("Attempting to set non-linear material.");
27                 if (material.equals(m))
28                         return;
29                 this.material = m;
30                 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
31         }
32         
33         
34         public double getCordLength() {
35                 return cordLength;
36         }
37         
38         public void setCordLength(double length) {
39                 length = MathUtil.max(length, 0);
40                 if (MathUtil.equals(length, this.length))
41                         return;
42                 this.cordLength = length;
43                 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
44         }
45         
46         
47         
48         @Override
49         public double getComponentMass() {
50                 return material.getDensity() * cordLength;
51         }
52
53         @Override
54         public String getComponentName() {
55                 return "Shock cord";
56         }
57
58         @Override
59         public boolean isCompatible(Class<? extends RocketComponent> type) {
60                 return false;
61         }
62
63 }