Merge commit '42b2e5ca519766e37ce6941ba4faecc9691cc403' into upstream
[debian/openrocket] / core / src / net / sf / openrocket / gui / dialogs / preset / ComponentPresetTableColumn.java
diff --git a/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java b/core/src/net/sf/openrocket/gui/dialogs/preset/ComponentPresetTableColumn.java
new file mode 100644 (file)
index 0000000..5d5d12d
--- /dev/null
@@ -0,0 +1,84 @@
+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;
+                       }
+               }
+               
+               
+       }
+
+}
+
+
+