package net.sf.openrocket.rocketcomponent;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.util.BugException;
import net.sf.openrocket.util.MathUtil;
public class ShockCord extends MassObject {
private static final Translator trans = Application.getTranslator();
private Material material;
private double cordLength;
public ShockCord() {
material = Application.getPreferences().getDefaultComponentMaterial(ShockCord.class, Material.Type.LINE);
cordLength = 0.4;
}
public Material getMaterial() {
return material;
}
public void setMaterial(Material m) {
if (m.getType() != Material.Type.LINE)
throw new BugException("Attempting to set non-linear material.");
if (material.equals(m))
return;
this.material = m;
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
public double getCordLength() {
return cordLength;
}
public void setCordLength(double length) {
length = MathUtil.max(length, 0);
if (MathUtil.equals(length, this.length))
return;
this.cordLength = length;
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
@Override
public double getComponentMass() {
return material.getDensity() * cordLength;
}
@Override
public String getComponentName() {
//// Shock cord
return trans.get("ShockCord.ShockCord");
}
@Override
public boolean allowsChildren() {
return false;
}
@Override
public boolean isCompatible(Class<? extends RocketComponent> type) {
return false;
}
}