/**
*
*/
package org.korsakow.ide.ui.controller;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import org.korsakow.domain.interf.IProject;
import org.korsakow.domain.interf.IResource;
import org.korsakow.ide.Application;
import org.korsakow.ide.controller.ApplicationAdapter;
import org.korsakow.ide.ui.resourceexplorer.ResourceTreeTable;
import org.korsakow.ide.ui.resources.UnusedMediaResourceTreeTableModel;
public class PossiblePoolApplicationListener extends ApplicationAdapter implements Runnable, PropertyChangeListener
{
private final ResourceTreeTable treeTable;
public PossiblePoolApplicationListener(ResourceTreeTable treeTable)
{
this.treeTable = treeTable;
}
public void run()
{
doUpdate();
}
private void doUpdate()
{
((UnusedMediaResourceTreeTableModel)treeTable.getTreeTableModel()).update();
}
private void enqueueUpdate()
{
Application.getInstance().enqueueCommonTask(this);
}
@Override
public void onProjectLoaded(IProject project) {
enqueueUpdate();
}
@Override
public void onResourceAdded(IResource resource) {
enqueueUpdate();
}
@Override
public void onResourceDeleted(IResource resource) {
enqueueUpdate();
}
@Override
public void onResourceModified(IResource resource) {
enqueueUpdate();
}
@Override
public void onResourcesCleared() {
enqueueUpdate();
}
@Override
public void onKeywordsChanged() {
enqueueUpdate();
}
/**
* Listening for property changes on not this.treeTable but ResourceBrowser.ResourceTreeTable
*/
public void propertyChange(PropertyChangeEvent evt) {
if (evt.getPropertyName().equals("model")) {
boolean includeImages = ((UnusedMediaResourceTreeTableModel)treeTable.getTreeTableModel()).isIncludeImages();
boolean includeVideos = ((UnusedMediaResourceTreeTableModel)treeTable.getTreeTableModel()).isIncludeVideos();
treeTable.setTreeTableModel(new UnusedMediaResourceTreeTableModel(treeTable, Application.getInstance().getProjectExplorer().getResourceBrowser().getResourceTreeTable().getTreeTableModel(), includeImages, includeVideos));
}
}
}