X-Git-Url: http://gitweb.fperrin.net/?a=blobdiff_plain;f=src%2Ftim%2Fprune%2Fgui%2FSegmentListModel.java;fp=src%2Ftim%2Fprune%2Fgui%2FSegmentListModel.java;h=bfe53afea10c68cbd7ac4e944f608a2b6abae78b;hb=95fa04a4fe8fbab0c350b85d3d0c9081fe196ac1;hp=0000000000000000000000000000000000000000;hpb=610ed03f6d2142bc7d5bc95e2de6b825a9b78a2a;p=GpsPrune.git diff --git a/src/tim/prune/gui/SegmentListModel.java b/src/tim/prune/gui/SegmentListModel.java new file mode 100644 index 0000000..bfe53af --- /dev/null +++ b/src/tim/prune/gui/SegmentListModel.java @@ -0,0 +1,72 @@ +package tim.prune.gui; + +import java.util.ArrayList; +import javax.swing.AbstractListModel; + +import tim.prune.data.DataPoint; +import tim.prune.data.Track; +import tim.prune.I18nManager; + +/** + * Class to act as list model for the segment list + */ +public class SegmentListModel extends AbstractListModel +{ + Track _track = null; + ArrayList _segmentStarts = null; + + /** + * Constructor giving Track object + * @param inTrack Track object + */ + public SegmentListModel(Track inTrack) + { + _track = inTrack; + _segmentStarts = new ArrayList(); + _track.getSegmentStarts(_segmentStarts); + } + + /** + * @see javax.swing.ListModel#getSize() + */ + public int getSize() + { + return _segmentStarts.size(); + } + + /** + * @see javax.swing.ListModel#getElementAt(int) + */ + public String getElementAt(int inIndex) + { + return I18nManager.getText("details.lists.segments.label") + (inIndex + 1) + " (" + (getSegmentStart(inIndex) + 1) + " " + I18nManager.getText("details.lists.segments.to") + " " + (getSegmentEnd(inIndex) + 1) + ")"; + } + + /** + * Fire event to notify that contents have changed + */ + public void fireChanged() + { + _track.getSegmentStarts(_segmentStarts); + this.fireContentsChanged(this, 0, getSize()-1); + } + + /** + + */ + public int getSegmentStart(int inIndex) + { + return _track.getPointIndex(_segmentStarts.get(inIndex)); + } + + public int getSegmentEnd(int inIndex) + { + if (inIndex < getSize() - 1) { + return _track.getPointIndex(_segmentStarts.get(inIndex + 1)) - 1; + } + else + { + return _track.getNumPoints() - 1; + } + } +}