我目前正在开发的Eclipse,分析了Eclipse工作空间内项目之间的依赖关系和引用,并将其显示在自己的视图中的UML类图中的插件。
为了提高我的插件的实用性,我希望通过允许用户在Package Explorer中打开了一个项目,添加交互图,如果适用通过点击所显示的图形在编辑器中打开它。
然而,我的问题是,尽管我知道如何获得包浏览器给定的选择,我一直没能找到一种方法来改变选择或者干脆编程方式打开了在Package Explorer中的项目。
有没有人有这个问题的解决方案?
我目前正在开发的Eclipse,分析了Eclipse工作空间内项目之间的依赖关系和引用,并将其显示在自己的视图中的UML类图中的插件。
为了提高我的插件的实用性,我希望通过允许用户在Package Explorer中打开了一个项目,添加交互图,如果适用通过点击所显示的图形在编辑器中打开它。
然而,我的问题是,尽管我知道如何获得包浏览器给定的选择,我一直没能找到一种方法来改变选择或者干脆编程方式打开了在Package Explorer中的项目。
有没有人有这个问题的解决方案?
这个答案扩展一下接受的答案状态,但需要进一步对谁介意使用的“望而却步访问”警告人们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
是并展开树是必要的。