]> gitweb.fperrin.net Git - GpsPrune.git/blob - src/tim/prune/gui/SegmentListModel.java
Add a panel to select by segment
[GpsPrune.git] / src / tim / prune / gui / SegmentListModel.java
1 package tim.prune.gui;
2
3 import java.util.ArrayList;
4 import javax.swing.AbstractListModel;
5
6 import tim.prune.data.DataPoint;
7 import tim.prune.data.Track;
8 import tim.prune.I18nManager;
9
10 /**
11  * Class to act as list model for the segment list
12  */
13 public class SegmentListModel extends AbstractListModel<String>
14 {
15         Track _track = null;
16         ArrayList<DataPoint> _segmentStarts = null;
17
18         /**
19          * Constructor giving Track object
20          * @param inTrack Track object
21          */
22         public SegmentListModel(Track inTrack)
23         {
24                 _track = inTrack;
25                 _segmentStarts = new ArrayList<DataPoint>();
26                 _track.getSegmentStarts(_segmentStarts);
27         }
28
29         /**
30          * @see javax.swing.ListModel#getSize()
31          */
32         public int getSize()
33         {
34                 return _segmentStarts.size();
35         }
36
37         /**
38          * @see javax.swing.ListModel#getElementAt(int)
39          */
40         public String getElementAt(int inIndex)
41         {
42                 return I18nManager.getText("details.lists.segments.label") + (inIndex + 1) + " (" + (getSegmentStart(inIndex) + 1) + " " + I18nManager.getText("details.lists.segments.to") + " " + (getSegmentEnd(inIndex) + 1) + ")";
43         }
44
45         /**
46          * Fire event to notify that contents have changed
47          */
48         public void fireChanged()
49         {
50                 _track.getSegmentStarts(_segmentStarts);
51                 this.fireContentsChanged(this, 0, getSize()-1);
52         }
53
54         /**
55
56          */
57         public int getSegmentStart(int inIndex)
58         {
59                 return _track.getPointIndex(_segmentStarts.get(inIndex));
60         }
61
62         public int getSegmentEnd(int inIndex)
63         {
64                 if (inIndex < getSize() - 1) {
65                         return _track.getPointIndex(_segmentStarts.get(inIndex + 1)) - 1;
66                 }
67                 else
68                 {
69                         return _track.getNumPoints() - 1;
70                 }
71         }
72 }