]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/function/gpsies/TrackListModel.java
Version 14, October 2012
[GpsPrune.git] / tim / prune / function / gpsies / TrackListModel.java
index 275ae83ab715117841efc47dae90d0bf18160354..904dd8bc62248d49fe4e5669ee37fccc19a643a3 100644 (file)
@@ -5,9 +5,9 @@ import java.util.ArrayList;
 
 import javax.swing.table.AbstractTableModel;
 
-import tim.prune.Config;
 import tim.prune.I18nManager;
-import tim.prune.data.Distance;
+import tim.prune.config.Config;
+import tim.prune.data.Unit;
 
 /**
  * Model for list of tracks from gpsies.com
@@ -17,17 +17,26 @@ public class TrackListModel extends AbstractTableModel
        /** List of tracks */
        private ArrayList<GpsiesTrack> _trackList = null;
        /** Column heading for track name */
-       private static final String _nameColLabel = I18nManager.getText("dialog.gpsies.column.name");
+       private String _nameColLabel = null;
        /** Column heading for length */
-       private static final String _lengthColLabel = I18nManager.getText("dialog.gpsies.column.length");
+       private String _lengthColLabel = null;
+       /** Number of columns */
+       private int _numColumns = 2;
        /** Formatter for distances */
        private NumberFormat _distanceFormatter = NumberFormat.getInstance();
 
        /**
         * Constructor
+        * @param inColumn1Key key for first column
+        * @param inColumn2Key key for second column
         */
-       public TrackListModel()
+       public TrackListModel(String inColumn1Key, String inColumn2Key)
        {
+               _nameColLabel = I18nManager.getText(inColumn1Key);
+               if (inColumn2Key != null) {
+                       _lengthColLabel = I18nManager.getText(inColumn2Key);
+               }
+               _numColumns = (_lengthColLabel != null?2:1);
                _distanceFormatter.setMaximumFractionDigits(1);
        }
 
@@ -36,7 +45,7 @@ public class TrackListModel extends AbstractTableModel
         */
        public int getColumnCount()
        {
-               return 2;
+               return _numColumns;
        }
 
        /**
@@ -68,12 +77,11 @@ public class TrackListModel extends AbstractTableModel
                GpsiesTrack track = _trackList.get(inRowNum);
                if (inColNum == 0) {return track.getTrackName();}
                double lengthM = track.getLength();
-               if (Config.getConfigBoolean(Config.KEY_METRIC_UNITS)) {
-                       return _distanceFormatter.format(lengthM / 1000.0) + " " + I18nManager.getText("units.kilometres.short");
-               }
-               // must be imperial
-               return _distanceFormatter.format(Distance.convertMetresToMiles(lengthM))
-                       + " " + I18nManager.getText("units.miles.short");
+               // convert to current distance units
+               Unit distUnit = Config.getUnitSet().getDistanceUnit();
+               double length = lengthM * distUnit.getMultFactorFromStd();
+               // Make text
+               return _distanceFormatter.format(length) + " " + I18nManager.getText(distUnit.getShortnameKey());
        }
 
        /**
@@ -83,10 +91,15 @@ public class TrackListModel extends AbstractTableModel
        public void addTracks(ArrayList<GpsiesTrack> inList)
        {
                if (_trackList == null) {_trackList = new ArrayList<GpsiesTrack>();}
+               final int prevCount = _trackList.size();
                if (inList != null && inList.size() > 0) {
                        _trackList.addAll(inList);
                }
-               fireTableDataChanged();
+               final int updatedCount = _trackList.size();
+               if (prevCount <= 0)
+                       fireTableDataChanged();
+               else
+                       fireTableRowsInserted(prevCount, updatedCount-1);
        }
 
        /**