package GUI.TableModels;
import java.util.Vector;
import javax.swing.DefaultListModel;
import model.Video;
import model.VideoUnit;
import model.events.EventManager;
import model.events.InRentCreatedEvent;
import model.events.VideoDeletedEvent;
import model.events.VideoEditedEvent;
import model.events.VideoUnitCreatedEvent;
import model.events.VideothekEvent;
import model.events.VideothekEventListener;
import GUI.MainWindow;
/**
*
* @author Waldemar Smirnow
* @author Volha Baranouskaya
*/
public class VideoUnitListModel extends DefaultListModel implements
VideothekEventListener {
private MainWindow mainWindow;
/**
* Konstruktor
* @param mainWindow
*/
public VideoUnitListModel(MainWindow mainWindow) {
super();
this.mainWindow = mainWindow;
}
/**
* registriert sich für passende Events bei EventManager
*/
private void registerAsEventListener() {
EventManager.registerEventListener(VideoUnitCreatedEvent.class, this);
EventManager.registerEventListener(VideoEditedEvent.class, this);
EventManager.registerEventListener(VideoDeletedEvent.class, this);
EventManager.registerEventListener(InRentCreatedEvent.class, this);
}
@Override
public void handleEvent(VideothekEvent event) {
if (event instanceof VideoUnitCreatedEvent) {
if (super.getSize() > 0) {
if (((VideoUnit) get(0)).getVideoID() == ((VideoUnitCreatedEvent) event).getVideoUnit().getVideoID()) {
reloadList(((VideoUnitCreatedEvent) event).getVideoUnit().getVideo());
}
}
} else if (event instanceof VideoEditedEvent) {
if (super.getSize() > 0) {
if (((VideoUnit) get(0)).getVideoID() == ((VideoUnitCreatedEvent) event).getVideoUnit().getVideoID()) {
reloadList(((VideoEditedEvent) event).getVideo());
}
}
} else if (event instanceof VideoDeletedEvent) {
if (super.getSize() > 0) {
if (((VideoUnit) get(0)).getVideoID() == ((VideoUnitCreatedEvent) event).getVideoUnit().getVideoID()) {
reloadList(((VideoDeletedEvent) event).getVideo());
}
}
} else if (event instanceof InRentCreatedEvent) {
}
}
/**
* läd Liste neu
* @param video
*/
private void reloadList(Video video) {
Vector<VideoUnit> videoUnits = new Vector<VideoUnit>(video.getSortedVideoUnits());
mainWindow.getDetailPanel().getListDetailVUnit().setListData(videoUnits);
}
}