import java.util.List;
+import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.material.Material;
+import net.sf.openrocket.material.Material.Type;
+import net.sf.openrocket.preset.ExternalComponentPreset;
+import net.sf.openrocket.preset.RocketComponentPreset;
+import net.sf.openrocket.startup.Application;
import net.sf.openrocket.unit.UnitGroup;
import net.sf.openrocket.util.Prefs;
/**
* Class of components with well-defined physical appearance and which have an effect on
- * aerodynamic simulation. They have material defined for them, and the mass of the component
+ * aerodynamic simulation. They have material defined for them, and the mass of the component
* is calculated using the component's volume.
- *
+ *
* @author Sampo Niskanen <sampo.niskanen@iki.fi>
*/
public abstract class ExternalComponent extends RocketComponent {
public enum Finish {
- ROUGH("Rough", 500e-6),
- UNFINISHED("Unfinished", 150e-6),
- NORMAL("Regular paint", 60e-6),
- SMOOTH("Smooth paint", 20e-6),
- POLISHED("Polished", 2e-6);
+ //// Rough
+ ROUGH("ExternalComponent.Rough", 500e-6),
+ //// Unfinished
+ UNFINISHED("ExternalComponent.Unfinished", 150e-6),
+ //// Regular paint
+ NORMAL("ExternalComponent.Regularpaint", 60e-6),
+ //// Smooth paint
+ SMOOTH("ExternalComponent.Smoothpaint", 20e-6),
+ //// Polished
+ POLISHED("ExternalComponent.Polished", 2e-6);
+ private static final Translator trans = Application.getTranslator();
private final String name;
private final double roughnessSize;
@Override
public String toString() {
- return name + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")";
+ return trans.get(name) + " (" + UnitGroup.UNITS_ROUGHNESS.toStringUnit(roughnessSize) + ")";
}
}
if (material.equals(mat))
return;
material = mat;
+ clearPreset();
fireComponentChangeEvent(ComponentChangeEvent.MASS_CHANGE);
}
}
-
+ @Override
+ protected void loadFromPreset(RocketComponentPreset preset) {
+ super.loadFromPreset(preset);
+
+ ExternalComponentPreset p = (ExternalComponentPreset) preset;
+ String materialName = p.getMaterialName();
+ double mass = p.getMass();
+
+ double volume = getComponentVolume();
+ double density;
+ if (volume > 0.00001) {
+ density = mass / volume;
+ } else {
+ density = 1000;
+ }
+
+ Material mat = Material.newMaterial(Type.BULK, materialName, density, true);
+ setMaterial(mat);
+ }
+
+
@Override
protected List<RocketComponent> copyFrom(RocketComponent c) {
ExternalComponent src = (ExternalComponent) c;
return super.copyFrom(c);
}
- /**
- * Accept a visitor to this ExternalComponent in the component hierarchy.
- *
- * @param theVisitor the visitor that will be called back with a reference to this ExternalComponent
- */
- @Override
- public void accept (final ComponentVisitor theVisitor) {
- theVisitor.visit(this);
- }
-
}