5

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

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

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

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

4

2 回答 2

3

这个答案扩展了接受的答案状态,但对于那些介意使用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;
}
于 2013-11-29T09:14:39.390 回答
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);

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

于 2012-07-08T03:51:03.407 回答