3 import java.util.ArrayList;
4 import javax.swing.AbstractListModel;
6 import tim.prune.data.DataPoint;
7 import tim.prune.data.Track;
8 import tim.prune.I18nManager;
11 * Class to act as list model for the segment list
13 public class SegmentListModel extends AbstractListModel<String>
16 ArrayList<DataPoint> _segmentStarts = null;
19 * Constructor giving Track object
20 * @param inTrack Track object
22 public SegmentListModel(Track inTrack)
25 _segmentStarts = new ArrayList<DataPoint>();
26 _track.getSegmentStarts(_segmentStarts);
30 * @see javax.swing.ListModel#getSize()
34 return _segmentStarts.size();
38 * @see javax.swing.ListModel#getElementAt(int)
40 public String getElementAt(int inIndex)
42 return I18nManager.getText("details.lists.segments.label") + (inIndex + 1) + " (" + (getSegmentStart(inIndex) + 1) + " " + I18nManager.getText("details.lists.segments.to") + " " + (getSegmentEnd(inIndex) + 1) + ")";
46 * Fire event to notify that contents have changed
48 public void fireChanged()
50 _track.getSegmentStarts(_segmentStarts);
51 this.fireContentsChanged(this, 0, getSize()-1);
57 public int getSegmentStart(int inIndex)
59 return _track.getPointIndex(_segmentStarts.get(inIndex));
62 public int getSegmentEnd(int inIndex)
64 if (inIndex < getSize() - 1) {
65 return _track.getPointIndex(_segmentStarts.get(inIndex + 1)) - 1;
69 return _track.getNumPoints() - 1;