X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Ffunction%2Fgpsies%2FTrackListModel.java;h=274c0b882a3bf51f1ee7c7dfe278646f756ff235;hb=7f5ed2be62905bd37717376dc22d09e5ea7edb4d;hp=275ae83ab715117841efc47dae90d0bf18160354;hpb=112bb0c9b46894adca9a33ed8c99ea712b253185;p=GpsPrune.git diff --git a/tim/prune/function/gpsies/TrackListModel.java b/tim/prune/function/gpsies/TrackListModel.java index 275ae83..274c0b8 100644 --- a/tim/prune/function/gpsies/TrackListModel.java +++ b/tim/prune/function/gpsies/TrackListModel.java @@ -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 _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; } /** @@ -48,6 +57,12 @@ public class TrackListModel extends AbstractTableModel return _trackList.size(); } + /** @return true if there are no rows */ + public boolean isEmpty() + { + return getRowCount() == 0; + } + /** * @param inColNum column number * @return column label for given column @@ -68,12 +83,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 +97,15 @@ public class TrackListModel extends AbstractTableModel public void addTracks(ArrayList inList) { if (_trackList == null) {_trackList = new ArrayList();} + 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); } /**