package au.com.langdale.cimtoole.views;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import au.com.langdale.cimtoole.project.Info;
import au.com.langdale.cimtoole.project.ModelMinder;
import au.com.langdale.cimtoole.project.Cache.CacheListener;
import au.com.langdale.kena.OntModel;
public abstract class ProjectModelFollower extends SelectionFollower implements CacheListener {
private ModelMinder models = new ModelMinder(this);
private IProject activeProject;
public abstract void selectModel(OntModel model);
@Override
public void dispose() {
models.dispose();
super.dispose();
}
public void selectProject(IProject project) {
if( activeProject == null || ! project.equals(activeProject)) {
//System.out.println("ProjectModelView switching to " + project);
activeProject = project;
viewActiveProject();
}
}
private void viewActiveProject() {
OntModel merger = models.getProjectOntology(Info.getSchemaFolder(activeProject));
selectModel(merger);
}
public void modelCached(IResource key) {
if( activeProject != null) {
viewActiveProject();
followSelection(getSite().getPage().getSelection());
}
}
public void modelDropped(IResource key) {
// ignored
}
}