Eclipse RCP:以编程方式设置活动部分或选择非活动部分

Jdv*_*Jdv 4 java eclipse eclipse-plugin eclipse-rcp

在我的 Eclipse 插件中,我有以下工作流程:

  1. 获取Package Explorer中当前选定的项目
  2. 做一点事
  3. 获取Package Explorer中当前选中的项目(同1)
  4. 做一些不同的事情

1(和3)是这样实现的:

ISelectionService selectionService = PlatformUI.getWorkbench()
    .getActiveWorkbenchWindow().getSelectionService();
ISelection selection = selectionService.getSelection();
[...]
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在 1 之前,选择了 Package Explorer,因为这是触发工作流的唯一方法。但步骤 2 更改了活动部分,因为它刷新了 TreeView,使其成为活动部分。当我现在尝试运行 3(与 1 相同的方法)时,我遇到了一个问题:Package Explorer 不再是 的activePartselectionService因此selection为 null。

我的问题是:有什么方法可以获取ISelectionService非活动视图的特定视图吗?如果没有,有没有办法在执行步骤 3 之前以编程方式设置活动部分?

顺便说一句,这是一个 Eclipse 3.x 插件。

gre*_*449 5

如果您找到IViewPart包资源管理器的 ,您可以ISelectionProvider使用以下方式直接访问它:

IViewPart part = .. find package explorer view part

IViewSite viewSite = part.getViewSite();

ISelectionProvider provider = viewSite.getSelectionProvider();

ISelection selection = provider.getSelection();
Run Code Online (Sandbox Code Playgroud)