如何以编程方式更改包资源管理器中选择(How to programmatically change

2019-06-26 01:28发布

我目前正在开发的Eclipse,分析了Eclipse工作空间内项目之间的依赖关系和引用,并将其显示在自己的视图中的UML类图中的插件。

为了提高我的插件的实用性,我希望通过允许用户在Package Explorer中打开了一个项目,添加交互图,如果适用通过点击所显示的图形在编辑器中打开它。

然而,我的问题是,尽管我知道如何获得包浏览器给定的选择,我一直没能找到一种方法来改变选择或者干脆编程方式打开了在Package Explorer中的项目。

有没有人有这个问题的解决方案?

Answer 1:

这个答案扩展一下接受的答案状态,但需要进一步对谁介意使用的“望而却步访问”警告人们PackageExplorerPart 。 确切的警告(更易于搜索关闭谷歌),你看到的是

灰心访问:类型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;
}


Answer 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是并展开树是必要的。



文章来源: How to programmatically change the selection within package explorer