1 package net.sf.openrocket.rocketcomponent;
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 import net.sf.openrocket.util.Prefs;
10 public class ShockCord extends MassObject {
11 private static final Translator trans = Application.getTranslator();
13 private Material material;
14 private double cordLength;
17 material = Prefs.getDefaultComponentMaterial(ShockCord.class, Material.Type.LINE);
23 public Material getMaterial() {
27 public void setMaterial(Material m) {
28 if (m.getType() != Material.Type.LINE)
29 throw new BugException("Attempting to set non-linear material.");
30 if (material.equals(m))
33 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
37 public double getCordLength() {
41 public void setCordLength(double length) {
42 length = MathUtil.max(length, 0);
43 if (MathUtil.equals(length, this.length))
45 this.cordLength = length;
46 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
52 public double getComponentMass() {
53 return material.getDensity() * cordLength;
57 public String getComponentName() {
59 return trans.get("ShockCord.ShockCord");
63 public boolean allowsChildren() {
68 public boolean isCompatible(Class<? extends RocketComponent> type) {