【问题标题】:How to programmatically change the selection within package explorer如何以编程方式更改包资源管理器中的选择
【发布时间】:2012-07-04 21:11:06
【问题描述】:

我目前正在为 Eclipse 开发一个插件,它可以分析 Eclipse 工作区中项目之间的依赖关系和引用,并将它们显示在类似 UML 的图表中的自己的视图中。

为了增加我的插件的实用性,我希望通过允许用户在包资源管理器中打开项目并在适用的情况下通过单击显示的图形在编辑器中打开它来为图表添加交互性。

但是,我的问题是,虽然我知道如何从包资源管理器中获取给定的选择,但我无法找到更改选择的方法或简单地以编程方式在包资源管理器中打开项目。

有人有解决这个问题的办法吗?

【问题讨论】:

  • 如果目标是打开一个专注于项目的编辑器,为什么包资源管理器必须参与?它甚至可能不会自己打开。
  • 我需要处理几种类型的数据,并不是所有的数据都可以在编辑器中打开。在这些情况下,我只想在包资源管理器中突出显示它,或者,如果它是一个项目,则在此处打开它。

标签: java eclipse eclipse-plugin package-explorer


【解决方案1】:

此答案扩展了accepted answer 的规定,但对于那些介意关于使用PackageExplorerPart“不鼓励访问” 警告的人来说更进一步。 您看到的确切警告(更多信息以便更轻松地在 Google 上搜索)是

不鼓励访问:PackageExplorerPart 类型由于无法访问 对所需库的限制 /eclipse_install_path/eclipse/plugins/org.eclipse.jdt.ui_3.9.1.v20130820-1427.jar

代码示例:

final IWorkbenchPart activePart = getActivePart();
if (activePart != null && activePart instanceof IPackagesViewPart) {
    ((IPackagesViewPart) activePart).selectAndReveal(newElement);
}

支持代码:

private IWorkbenchPart getActivePart() {
    final IWorkbench workbench = PlatformUI.getWorkbench();
    final IWorkbenchWindow activeWindow = workbench.getActiveWorkbenchWindow();
    if (activeWindow != null) {
        final IWorkbenchPage activePage = activeWindow.getActivePage();
        if (activePage != null) {
            return activePage.getActivePart();
        }
    }
    return null;
}

【讨论】:

    【解决方案2】:

    我找到了解决方案。 Eclipse 确实提供了对 org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart 中包资源管理器的直接访问,但不鼓励这样做。

    import org.eclipse.jdt.internal.ui.packageview.PackageExplorerPart;
    
    ...
    
    PackageExplorerPart part= PackageExplorerPart.getFromActivePerspective();
    IResource resource =  /*any IResource to be selected in the explorer*/;
    
    part.selectAndReveal(resource);
    

    这将突出显示 IResource resource 是什么,并根据需要展开树。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 2020-07-02
    • 1970-01-01
    相关资源
    最近更新 更多