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;
9 public class ShockCord extends MassObject {
10 private static final Translator trans = Application.getTranslator();
12 private Material material;
13 private double cordLength;
16 material = Application.getPreferences().getDefaultComponentMaterial(ShockCord.class, Material.Type.LINE);
22 public Material getMaterial() {
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))
32 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
36 public double getCordLength() {
40 public void setCordLength(double length) {
41 length = MathUtil.max(length, 0);
42 if (MathUtil.equals(length, this.length))
44 this.cordLength = length;
45 fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
51 public double getComponentMass() {
52 return material.getDensity() * cordLength;
56 public String getComponentName() {
58 return trans.get("ShockCord.ShockCord");
62 public boolean allowsChildren() {
67 public boolean isCompatible(Class<? extends RocketComponent> type) {