--- /dev/null
+package tim.prune.gui;
+
+import javax.swing.AbstractListModel;
+
+import tim.prune.data.Photo;
+import tim.prune.data.PhotoList;
+
+/**
+ * Class to act as list model for the photo list
+ */
+public class PhotoListModel extends AbstractListModel
+{
+ PhotoList _photos = null;
+
+ /**
+ * Constructor giving PhotoList object
+ * @param inList PhotoList
+ */
+ public PhotoListModel(PhotoList inList)
+ {
+ _photos = inList;
+ }
+
+ /**
+ * @see javax.swing.ListModel#getSize()
+ */
+ public int getSize()
+ {
+ return _photos.getNumPhotos();
+ }
+
+ /**
+ * @see javax.swing.ListModel#getElementAt(int)
+ */
+ public Object getElementAt(int inIndex)
+ {
+ return _photos.getPhoto(inIndex).getFile().getName();
+ }
+
+ /**
+ * Get the Photo at the given index
+ * @param inIndex index number, starting at 0
+ * @return Photo object
+ */
+ public Photo getPhoto(int inIndex)
+ {
+ return _photos.getPhoto(inIndex);
+ }
+
+ /**
+ * Fire event to notify that contents have changed
+ */
+ public void fireChanged()
+ {
+ this.fireContentsChanged(this, 0, getSize()-1);
+ }
+}