A dynamic data model for an image browser, consisting of a sorted list of images that is kept in sync with all the image files in a given directory. The list changes asynchronously all the time as metadata are discovered, the sort order is updated, thumbnails are computed, resized, and rotated, and files appear and disappear from the directory.
The ImageDatum List is touched from three threads:
- the event thread (to update displays);
- the polling thread (responding to file modifications);
- from the task thread (as background tasks complete).
It is presumed that all public access to this class happens on the event thread, and it is promised that all ImageListListener notifications will also run on that thread.