import java.text.Collator;
import java.util.ArrayList;
import java.util.Comparator;
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import net.sf.openrocket.gui.components.StyledLabel;
import net.sf.openrocket.motor.Motor;
import net.sf.openrocket.unit.UnitGroup;
+import net.sf.openrocket.unit.Value;
+import net.sf.openrocket.unit.ValueComparator;
import net.sf.openrocket.util.GUIUtil;
import net.sf.openrocket.util.Prefs;
public String getValue(Motor m) {
return m.getManufacturer().getDisplayName();
}
-// @Override
-// public String getToolTipText(Motor m) {
-// return "<html>" + m.getDescription().replace((CharSequence)"\n", "<br>");
-// }
@Override
public Comparator<?> getComparator() {
return Collator.getInstance();
public String getValue(Motor m) {
return m.getDesignation();
}
-// @Override
-// public String getToolTipText(Motor m) {
-// return "<html>" + m.getDescription().replace((CharSequence)"\n", "<br>");
-// }
@Override
public Comparator<?> getComparator() {
return Motor.getDesignationComparator();
public String getValue(Motor m) {
return m.getMotorType().getName();
}
-// @Override
-// public String getToolTipText(Motor m) {
-// return m.getMotorType().getDescription();
-// }
@Override
public Comparator<?> getComparator() {
return Collator.getInstance();
},
DIAMETER("Diameter") {
@Override
- public String getValue(Motor m) {
- return UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(
- m.getDiameter());
+ public Object getValue(Motor m) {
+ return new Value(m.getDiameter(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
}
@Override
public Comparator<?> getComparator() {
- return getNumericalComparator();
+ return ValueComparator.INSTANCE;
}
},
LENGTH("Length") {
@Override
- public String getValue(Motor m) {
- return UnitGroup.UNITS_MOTOR_DIMENSIONS.getDefaultUnit().toStringUnit(
- m.getLength());
+ public Object getValue(Motor m) {
+ return new Value(m.getLength(), UnitGroup.UNITS_MOTOR_DIMENSIONS);
}
@Override
public Comparator<?> getComparator() {
- return getNumericalComparator();
+ return ValueComparator.INSTANCE;
}
},
IMPULSE("Impulse") {
@Override
- public String getValue(Motor m) {
- return UnitGroup.UNITS_IMPULSE.getDefaultUnit().toStringUnit(
- m.getTotalImpulse());
+ public Object getValue(Motor m) {
+ return new Value(m.getTotalImpulse(), UnitGroup.UNITS_IMPULSE);
}
@Override
public Comparator<?> getComparator() {
- return getNumericalComparator();
+ return ValueComparator.INSTANCE;
}
},
TIME("Burn time") {
@Override
- public String getValue(Motor m) {
- return UnitGroup.UNITS_SHORT_TIME.getDefaultUnit().toStringUnit(
- m.getAverageTime());
+ public Object getValue(Motor m) {
+ return new Value(m.getAverageTime(), UnitGroup.UNITS_SHORT_TIME);
}
@Override
public Comparator<?> getComparator() {
- return getNumericalComparator();
+ return ValueComparator.INSTANCE;
}
};
}
- public abstract String getValue(Motor m);
+ public abstract Object getValue(Motor m);
public abstract Comparator<?> getComparator();
public String getTitle() {
public boolean filterByString(Motor m) {
main: for (String s : searchTerms) {
for (MotorColumns col : MotorColumns.values()) {
- String str = col.getValue(m).toLowerCase();
+ String str = col.getValue(m).toString().toLowerCase();
if (str.indexOf(s) >= 0)
continue main;
}
}
}
-
- private static Comparator<String> numericalComparator = null;
- private static Comparator<String> getNumericalComparator() {
- if (numericalComparator == null)
- numericalComparator = new NumericalComparator();
- return numericalComparator;
- }
-
- private static class NumericalComparator implements Comparator<String> {
- private Pattern pattern =
- Pattern.compile("^\\s*([0-9]*[.,][0-9]+|[0-9]+[.,]?[0-9]*).*?$");
- private Collator collator = null;
- @Override
- public int compare(String s1, String s2) {
- Matcher m1, m2;
-
- m1 = pattern.matcher(s1);
- m2 = pattern.matcher(s2);
- if (m1.find() && m2.find()) {
- double d1 = Double.parseDouble(m1.group(1));
- double d2 = Double.parseDouble(m2.group(1));
-
- return (int)((d1-d2)*1000);
- }
-
- if (collator == null)
- collator = Collator.getInstance(Locale.US);
- return collator.compare(s1, s2);
- }
- }
-
}