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