diff --git a/swing/src/net/sf/openrocket/gui/adaptors/Column.java b/swing/src/net/sf/openrocket/gui/adaptors/Column.java index 92df4b54f..d0fd9ffbc 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/Column.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/Column.java @@ -4,6 +4,8 @@ import java.util.Comparator; import javax.swing.table.TableColumnModel; +import net.sf.openrocket.unit.UnitGroup; + public abstract class Column { private final String name; private final String toolTip; @@ -59,7 +61,9 @@ public abstract class Column { return 0; } - + public UnitGroup getUnits() { + return UnitGroup.UNITS_NONE; + } /** * Return the column type class. This is necessary for example for numerical * sorting of Value objects, showing booleans as checkboxes etc. diff --git a/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java b/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java index 052f9b975..7b546b6ae 100644 --- a/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java +++ b/swing/src/net/sf/openrocket/gui/adaptors/ValueColumn.java @@ -31,6 +31,10 @@ public abstract class ValueColumn extends Column { return ValueComparator.INSTANCE; } + @Override + public UnitGroup getUnits() { + return this.unit; + } /** * Returns the double value to show in the Value object * diff --git a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java index 7f2b2bc6f..6b371f513 100644 --- a/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java +++ b/swing/src/net/sf/openrocket/gui/main/SimulationPanel.java @@ -22,6 +22,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; +import java.util.HashMap; import javax.swing.AbstractAction; import javax.swing.JButton; @@ -119,6 +120,7 @@ public class SimulationPanel extends JPanel { private final SimulationAction deleteSimulationAction; private final SimulationAction dumpSimulationTableAction; + private final HashMap valueColumnToUnitString = new HashMap<>(); private int[] previousSelection = null; private JMenuItem exportSimTableToCSVMenuItem; @@ -624,11 +626,31 @@ public class SimulationPanel extends JPanel { class DumpSimulationToCSVAction extends SimulationAction { private String lastSelectedLocation = ""; + private HashMap cToUnit; public DumpSimulationToCSVAction() { putValue(NAME, trans.get("simpanel.pop.export_to_csv")); putValue(SMALL_ICON, Icons.FILE_EXPORT_AS); } + /** + * Means by wich the CSV export will clean up units on the values and + * describe them on the header fields instead. + */ + private void populateColumnNameToUnitsHashTable() { + if (null == simulationTableModel) { + return; + } + valueColumnToUnitString.clear(); // necessary if units changed during session + for (int i=0; i rowColumnElement = new ArrayList<>(); for (int j=1; j 0! for (int j=1; j