private Observer getWatchedEntryObserver()
  {
    return new Observer(){

      @Override
      public void update(Observable o,
          Object arg)
      {
        if (arg instanceof File)
        {
          File file = (File)arg;
          EntryDataModel model = (EntryDataModel)list.getModel();
          EntryInterface entry = model.getEntryByUUID(file.toString());
          boolean isCurrentSelection = (entry == getCurrentEntry());
          if (file.isFile())
          {
            try
            {
              Entry newEntry = new Entry(file);
              int index = model.indexOf(entry);
              if (index >= 0)
              {
                model.setElementAt(newEntry, index);
              }
              else
              {
                model.addElement(newEntry);
              }
              
              if (isCurrentSelection || model.size() == 1)
              {
                list.setSelectedValue(newEntry, true);
                updateEntry();
                photoChanged(entry);
              }
            }
            catch (FileNotFoundException e)
            {
              // do nothing
            }
          }
          else
          {
            model.removeElement(entry);
            if (isCurrentSelection)
            {
              list.clearSelection();
              if (!model.isEmpty())
              {
                list.setSelectedIndex(0);
                updateEntry();
                photoChanged(entry);
              }
            }
          }          
          list.repaint();
          
        }        
      }   
    };  }