如何以编程方式更改包资源管理器中的选择

时间:2012-07-04 21:11:07

标签: java eclipse eclipse-plugin package-explorer

我目前正在开发一个eclipse插件,用于分析Eclipse Workspace中项目之间的依赖关系和引用,并在类似UML的图表中将它们显示在自己的View中。

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

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

有没有人能解决这个问题?

2 个答案:

答案 0 :(得分:2)

这个答案扩展了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;
}

答案 1 :(得分:1)

我找到了解决方案。 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,并根据需要展开树。