如何以编程方式更改包浏览器中的选择

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

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

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

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

这个答案扩展了所接受的答案所陈述的内容,但对于那些在使用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; } 

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