--- /dev/null
+package tim.prune.gui;
+
+import java.util.ArrayList;
+import javax.swing.AbstractListModel;
+
+import tim.prune.data.DataPoint;
+import tim.prune.data.Track;
+
+/**
+ * Class to act as list model for the waypoint list
+ */
+public class WaypointListModel extends AbstractListModel<String>
+{
+ Track _track = null;
+ ArrayList<DataPoint> _waypoints = null;
+
+ /**
+ * Constructor giving Track object
+ * @param inTrack Track object
+ */
+ public WaypointListModel(Track inTrack)
+ {
+ _track = inTrack;
+ _waypoints = new ArrayList<DataPoint>();
+ _track.getWaypoints(_waypoints);
+ }
+
+ /**
+ * @see javax.swing.ListModel#getSize()
+ */
+ public int getSize()
+ {
+ return _waypoints.size();
+ }
+
+ /**
+ * @see javax.swing.ListModel#getElementAt(int)
+ */
+ public String getElementAt(int inIndex)
+ {
+ DataPoint p = null;
+ if (inIndex < 0 || inIndex >= getSize()
+ || _waypoints == null || (p = _waypoints.get(inIndex)) == null)
+ return "";
+ return p.getWaypointName();
+ }
+
+ /**
+ * Get the waypoint at the given index
+ * @param inIndex index number, starting at 0
+ * @return DataPoint object
+ */
+ public DataPoint getWaypoint(int inIndex)
+ {
+ return _waypoints.get(inIndex);
+ }
+
+ /**
+ * Fire event to notify that contents have changed
+ */
+ public void fireChanged()
+ {
+ _track.getWaypoints(_waypoints);
+ this.fireContentsChanged(this, 0, getSize()-1);
+ }
+}