项目加载的Eclipse插件

时间:2011-10-07 21:32:09

标签: eclipse eclipse-plugin

我有一个插件,想要检测项目何时添加到工作区,从我的插件代码中设置一些项目设置,Any Ideas。

特别是我想在一些衍生文件的资源中调用setHidden,因为这个设置似乎不是项目的一部分,我的意思是,如果我在新工作区中导入项目,隐藏资源似乎不会持久。

2 个答案:

答案 0 :(得分:8)

具有讽刺意味的是,我昨天刚刚写了这样的话。它比你想要的复杂一点。以下是您可以使用的代码段:

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方法中将其删除。我昨天刚刚写了这段代码。我希望它有所帮助。

答案 1 :(得分:1)

您可以为工作区定义资源侦听器,并查找资源根目录中的更改。有关详细信息,请参阅以下文章:http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html