我有一个插件,想检测何时将项目添加到工作区,以便从我的插件代码 Any Ideas 中设置一些项目设置。
特别是我想在派生文件的某些资源中调用 setHidden,因为此设置似乎不是项目的一部分,我的意思是,如果我将项目导入新工作区,无论何时隐藏资源似乎都不会持续存在。
最佳答案
具有讽刺意味的是,我昨天才写了这样的东西。它比您想要的要复杂一些。这是一个代码片段供您使用:
public class ProjectListener implements IResourceChangeListener {
public void resourceChanged(IResourceChangeEvent event) {
if (event.getType() == IResourceChangeEvent.POST_CHANGE) {
List<IProject> projects = getProjects(event.getDelta());
// do something with new projects
}
}
private List<IProject> getProjects(IResourceDelta delta) {
final List<IProject> projects = new ArrayList<IProject>();
try {
delta.accept(new IResourceDeltaVisitor() {
public boolean visit(IResourceDelta delta) throws CoreException {
if (delta.getKind() == IResourceDelta.ADDED &&
delta.getResource().getType() == IResource.PROJECT) {
IProject project = (IProject) delta.getResource();
if (project.isAccessible()) {
projects.add(project);
}
}
// only continue for the workspace root
return delta.getResource().getType() == IResource.ROOT;
}
});
} catch (CoreException e) {
// handle error
}
return projects;
}
然后,您需要将此 ProjectListener 添加到工作区,最好是在您的插件激活器的 start
方法中:
ResourcesPlugin.getWorkspace().addResourceChangeListener(ProjectListener.LISTENER, IResourceChangeEvent.POST_CHANGE);
然后您想在 stop
方法中将其删除。我昨天刚刚写了这段代码。希望对您有所帮助。
关于加载项目上的 Eclipse 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7693060/