+package net.sf.openrocket.gui.dialogs.preset;
+
+import java.util.Set;
+
+import javax.swing.table.TableColumn;
+
+import net.sf.openrocket.l10n.Translator;
+import net.sf.openrocket.preset.ComponentPreset;
+import net.sf.openrocket.preset.TypedKey;
+import net.sf.openrocket.startup.Application;
+import net.sf.openrocket.unit.Unit;
+import net.sf.openrocket.unit.UnitGroup;
+import net.sf.openrocket.unit.Value;
+
+public abstract class ComponentPresetTableColumn extends TableColumn {
+
+ private static final Translator trans = Application.getTranslator();
+
+ protected ComponentPresetTableColumn( String header, int modelIndex ) {
+ this.setHeaderValue(header);
+ this.setModelIndex(modelIndex);
+
+ }
+
+ public abstract Object getValueFromPreset( Set<String> favorites, ComponentPreset preset );
+
+ public static class Favorite extends ComponentPresetTableColumn {
+
+ public Favorite(int modelIndex) {
+ super(trans.get("table.column.Favorite"), modelIndex);
+ }
+
+ @Override
+ public Object getValueFromPreset( Set<String> favorites, ComponentPreset preset ) {
+ return Boolean.valueOf(favorites.contains(preset.preferenceKey()));
+ }
+
+ }
+
+ public static class Parameter extends ComponentPresetTableColumn {
+
+ protected final TypedKey<?> key;
+
+ public Parameter( TypedKey<?> key, int modelIndex ) {
+ super( trans.get("table.column." + key.getName()), modelIndex );
+ this.key = key;
+ }
+
+ @Override
+ public Object getValueFromPreset(Set<String> favorites, ComponentPreset preset) {
+ return preset.has(key) ? preset.get(key) : null;
+ }
+
+ }
+
+
+ public static class DoubleWithUnit extends Parameter {
+
+ UnitGroup unitGroup;
+ Unit selectedUnit;
+
+ public DoubleWithUnit( TypedKey<Double> key, int modelIndex ) {
+ super(key,modelIndex);
+ this.unitGroup = key.getUnitGroup();
+ this.selectedUnit = unitGroup.getDefaultUnit();
+ }
+
+ @Override
+ public Object getValueFromPreset(Set<String> favorites, ComponentPreset preset) {
+ Double value = (Double) super.getValueFromPreset(favorites, preset);
+ if ( value != null ) {
+ return new Value((Double)super.getValueFromPreset(favorites, preset),selectedUnit);
+ } else {
+ return null;
+ }
+ }
+
+
+ }
+
+}
+
+
+