package net.sf.openrocket.gui.dialogs.motor.thrustcurve; import java.text.Collator; import java.util.Comparator; import net.sf.openrocket.database.motor.ThrustCurveMotorSet; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.motor.DesignationComparator; import net.sf.openrocket.motor.ThrustCurveMotor; import net.sf.openrocket.startup.Application; import net.sf.openrocket.unit.UnitGroup; import net.sf.openrocket.unit.Value; import net.sf.openrocket.unit.ValueComparator; /** * Enum defining the table columns. */ enum ThrustCurveMotorColumns { //// Manufacturer MANUFACTURER("TCurveMotorCol.MANUFACTURER", 100) { @Override public String getValue(ThrustCurveMotorSet m) { return m.getManufacturer().getDisplayName(); } @Override public Comparator<?> getComparator() { return Collator.getInstance(); } }, //// Designation DESIGNATION("TCurveMotorCol.DESIGNATION") { @Override public String getValue(ThrustCurveMotorSet m) { return m.getDesignation(); } @Override public Comparator<?> getComparator() { return new DesignationComparator(); } }, //// TotalImpulse TOTAL_IMPULSE("TCurveMotorCol.TOTAL_IMPULSE") { @Override public Object getValue(ThrustCurveMotorSet m) { return m.getTotalImpuse(); } @Override public Comparator<?> getComparator() { return new Comparator<Long>() { public int compare(Long o1, Long o2) { return o1.compareTo(o2); } }; } }, //// Type TYPE("TCurveMotorCol.TYPE") { @Override public String getValue(ThrustCurveMotorSet m) { return m.getType().getName(); } @Override public Comparator<?> getComparator() { return Collator.getInstance(); } }, //// Diameter DIAMETER("TCurveMotorCol.DIAMETER") { @Override public Object getValue(ThrustCurveMotorSet m) { return new Value(m.getDiameter(), UnitGroup.UNITS_MOTOR_DIMENSIONS); } @Override public Comparator<?> getComparator() { return ValueComparator.INSTANCE; } }, //// Length LENGTH("TCurveMotorCol.LENGTH") { @Override public Object getValue(ThrustCurveMotorSet m) { return new Value(m.getLength(), UnitGroup.UNITS_MOTOR_DIMENSIONS); } @Override public Comparator<?> getComparator() { return ValueComparator.INSTANCE; } }; private final String title; private final int width; private static final Translator trans = Application.getTranslator(); ThrustCurveMotorColumns(String title) { this(title, 50); } ThrustCurveMotorColumns(String title, int width) { this.title = title; this.width = width; } public abstract Object getValue(ThrustCurveMotorSet m); public abstract Comparator<?> getComparator(); public String getTitle() { return trans.get(title); } public int getWidth() { return width; } public String getToolTipText(ThrustCurveMotor m) { String tip = "<html>"; tip += "<b>" + m.toString() + "</b>"; tip += " (" + m.getMotorType().getDescription() + ")<br><hr>"; String desc = m.getDescription().trim(); if (desc.length() > 0) { tip += "<i>" + desc.replace("\n", "<br>") + "</i><br><hr>"; } tip += (trans.get("TCurveMotor.ttip.diameter") + " " + UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(m.getDiameter()) + "<br>"); tip += (trans.get("TCurveMotor.ttip.length") + " " + UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(m.getLength()) + "<br>"); tip += (trans.get("TCurveMotor.ttip.maxThrust") + " " + UnitGroup.UNITS_FORCE.getDefaultUnit().toStringUnit(m.getMaxThrustEstimate()) + "<br>"); tip += (trans.get("TCurveMotor.ttip.avgThrust") + " " + UnitGroup.UNITS_FORCE.getDefaultUnit().toStringUnit(m.getAverageThrustEstimate()) + "<br>"); tip += (trans.get("TCurveMotor.ttip.burnTime") + " " + UnitGroup.UNITS_SHORT_TIME.getDefaultUnit() .toStringUnit(m.getBurnTimeEstimate()) + "<br>"); tip += (trans.get("TCurveMotor.ttip.totalImpulse") + " " + UnitGroup.UNITS_IMPULSE.getDefaultUnit() .toStringUnit(m.getTotalImpulseEstimate()) + "<br>"); tip += (trans.get("TCurveMotor.ttip.launchMass") + " " + UnitGroup.UNITS_MASS.getDefaultUnit().toStringUnit(m.getLaunchCG().weight) + "<br>"); tip += (trans.get("TCurveMotor.ttip.emptyMass") + " " + UnitGroup.UNITS_MASS.getDefaultUnit() .toStringUnit(m.getEmptyCG().weight)); return tip; } }