加载项目上的 Eclipse 插件

标签 eclipse eclipse-plugin

我有一个插件,想检测何时将项目添加到工作区,以便从我的插件代码 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/

相关文章:

eclipse - Eclipse 中清理项目的快捷方式?

android - Eclipse 未检测到与其连接的移动设备。

java - 在 Eclipse 中查找特定方法的重写方法

java - 如何使用命令访问 Eclipse RCP 中的右键单击文件?

eclipse - 如何以编程方式调用命令并向其传递参数?

eclipse-plugin - 是否有适用于 Eclipse 的 DDD(数据显示调试器)插件?

c++ - git clone 修改eclipse C/C++项目包含路径

java - Eclipse自定义程序构建链——添加源文件

eclipse - 创建 Acceleo 插件时出错 : failed to create task or type apitooling. apigeneration

java - 安卓应用程序错误5