IResourceChangeListener を使用して、ワークスペースの変更に関する通知を受け取ることができます。IResourceChangelistener API は非常に用途が広く、さまざまな種類の変更に関する変更情報を提供できます。これを具体的に使用してプロジェクトの削除を検出する方法の例を次に示します。
public class ProjectDeletionListenerManager implements IResourceChangeListener {
public interface ProjectDeletionListener {
void projectAboutToBeDeleted(IProject project);
}
private IWorkspace workspace;
private ProjectDeletionListener listener;
public ProjectDeletionListenerManager(ProjectDeletionListener listener) {
this.workspace = ResourcesPlugin.getWorkspace();
this.listener = listener;
this.workspace.addResourceChangeListener(this,
IResourceChangeEvent.PRE_DELETE);
}
@Override
public void resourceChanged(IResourceChangeEvent event) {
IResource rsrc = event.getResource();
if (rsrc instanceof IProject) {
listener.projectAboutToBeDeleted((IProject) rsrc);
}
}
public void dispose() {
if (listener!=null) {
workspace.removeResourceChangeListener(this);
listener = null;
}
}
}
注: コード スニペットはこのコードに基づいています。