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; } } } }