+++ /dev/null
-package tim.prune.function.distance;
-
-import tim.prune.I18nManager;
-import tim.prune.config.Config;
-import tim.prune.data.DataPoint;
-import tim.prune.data.Distance;
-import tim.prune.data.Unit;
-
-/**
- * Class to hold the table model for the distances table
- */
-public class DistanceTableModel extends GenericTableModel
-{
- /** Distances */
- private double[] _distances = null;
- /** Column heading */
- private static final String _toColLabel = I18nManager.getText("dialog.distances.column.to");
- /** Column heading (depends on metric/imperial settings) */
- private String _distanceLabel = null;
- /** Previous distance units */
- private Unit _previousDistUnit = null;
-
- /**
- * @return column count
- */
- public int getColumnCount()
- {
- return 2;
- }
-
- /**
- * @param inRowIndex row index
- * @param inColumnIndex column index
- * @return cell value
- */
- public Object getValueAt(int inRowIndex, int inColumnIndex)
- {
- if (inColumnIndex == 0) {return getPointName(inRowIndex);}
- if (_distances == null) {return 0.0;}
- return new Double(_distances[inRowIndex]);
- }
-
- /**
- * @param inColumnIndex column index
- * @return column name
- */
- public String getColumnName(int inColumnIndex)
- {
- if (inColumnIndex == 0) {return _toColLabel;}
- return _distanceLabel;
- }
-
- /**
- * Get the column class (required for sorting)
- * @param inColumnIndex column index
- * @return Class of specified column
- */
- public Class<?> getColumnClass(int inColumnIndex)
- {
- if (inColumnIndex == 0) return String.class;
- return Double.class;
- }
-
- /**
- * Recalculate the distances
- * @param inIndex index of selected 'from' point
- */
- public void recalculate(int inIndex)
- {
- // Which units to use?
- Unit distUnit = Config.getUnitSet().getDistanceUnit();
- _distanceLabel = I18nManager.getText("fieldname.distance") + " (" +
- I18nManager.getText(distUnit.getShortnameKey()) + ")";
- final boolean distUnitsChanged = (distUnit != _previousDistUnit);
- _previousDistUnit = distUnit;
-
- // Initialize array of distances
- int numRows = getRowCount();
- if (_distances == null || _distances.length != numRows) {
- _distances = new double[numRows];
- }
- DataPoint fromPoint = _pointList.get(inIndex);
- for (int i=0; i<numRows; i++) {
- if (i == inIndex) {
- _distances[i] = 0.0;
- }
- else {
- double rads = DataPoint.calculateRadiansBetween(fromPoint, _pointList.get(i));
- _distances[i] = Distance.convertRadiansToDistance(rads);
- }
- }
- // Let table know that it has to refresh data, and maybe the whole table too
- if (distUnitsChanged) {
- fireTableStructureChanged();
- }
- else {
- fireTableDataChanged();
- }
- }
-}