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