man*_*uel 2 java eclipse eclipse-plugin
我有一个带有增量构建器的项目。考虑到项目具有某种性质,构建器将所有资源及其更改的模型表示写入模型中。这运行得很好。但是如果从工作区中删除整个项目,则不会调用增量构建器。为此创建事件处理程序的最佳方法是什么?
我知道我可以IResourceChangeListener根据自己的本性创建一个并将其附加到所有项目中。但是我必须在 IDE 启动时启动我的插件,这相当混乱。
那么,捕获“项目删除”事件的最佳方法是什么?
您可以使用 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
注意:基于此代码的代码片段。
| 归档时间: |
|
| 查看次数: |
739 次 |
| 最近记录: |