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