【问题标题】:Eclipse plug-in on project loaded项目加载的 Eclipse 插件
【发布时间】:2011-10-07 21:32:08
【问题描述】:

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

我特别想在派生文件的某些资源中调用 setHidden,因为此设置似乎不是项目的一部分,我的意思是,如果我在新工作区中导入项目,每当隐藏资源时似乎不会持续存在。

【问题讨论】:

    标签: eclipse eclipse-plugin


    【解决方案1】:

    具有讽刺意味的是,我昨天才写了这样的东西。它比您想要的要复杂一些。这是一个代码 sn-p 供您使用:

    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 添加到 Workspace,最好在您的插件激活器的 start 方法中:

    ResourcesPlugin.getWorkspace().addResourceChangeListener(ProjectListener.LISTENER, IResourceChangeEvent.POST_CHANGE);
    

    然后你想在stop 方法中删除它。我昨天刚写了这段代码。希望对你有帮助。

    【讨论】:

    • 但是我的激活器如何在启动时调用,我的激活器在项目首次构建时被调用,我的插件是 IDL 的自定义构建器。
    • 我发现 org.eclipse.ui.startup 扩展点解决了我在启动期间没有启动 Activator 的问题。
    • 这正是你应该这样做的方式。
    【解决方案2】:

    您可以为工作区定义一个资源侦听器,并在资源根目录中查找更改。详情见以下文章:http://www.eclipse.org/articles/Article-Resource-deltas/resource-deltas.html

    【讨论】:

      猜你喜欢
      • 2021-06-29
      • 2012-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      相关资源
      最近更新 更多