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; } } }