blob: 54ae35aef00ff74faac96966c4a6631badcedab9 [file] [log] [blame]
package org.eclipse.ptp.services.core;
import java.io.IOException;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResourceChangeEvent;
import org.eclipse.core.resources.IResourceChangeListener;
import org.eclipse.core.resources.ResourcesPlugin;
/**
* Removes deleted projects from the service model.
*
* @author Mike Kucera
*
*/
public class ProjectDeletionListener implements IResourceChangeListener {
private ProjectDeletionListener() {}
private static final ProjectDeletionListener instance = new ProjectDeletionListener();
public static void startListening() {
// before-the-fact report of pending deletion of a single project
ResourcesPlugin.getWorkspace().addResourceChangeListener(instance, IResourceChangeEvent.PRE_DELETE);
}
public static void stopListening() {
ResourcesPlugin.getWorkspace().removeResourceChangeListener(instance);
}
/**
* Will get notified about project deletion before the project is actually
* deleted, simply remove the project from the service model.
*/
public void resourceChanged(IResourceChangeEvent event) {
IProject project = (IProject) event.getResource();
ServiceModelManager manager = ServiceModelManager.getInstance();
// does nothing if the project is not part of the service model
manager.remove(project);
try {
manager.saveModelConfiguration();
} catch (IOException e) {
ServicesCorePlugin.getDefault().log(e);
}
}
}