Eclipse RCP:以编程方式设置活动部分或选择非活动部分
Eclipse RCP: Set active part programmatically or get selection of inactive part
在我的 Eclipse 插件中我有这个工作流程:
- 在 Package Explorer 中获取当前选择的项目
- 做点什么
- 获取Package Explorer中当前选中的项目(同1)
- 做点不一样的事
1(和3)是这样实现的:
ISelectionService selectionService = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getSelectionService();
ISelection selection = selectionService.getSelection();
[...]
现在,问题是在 1 之前,选择了 Package Explorer,因为这是触发工作流的唯一方式。但是第 2 步更改了活动部分,因为它刷新了一个 TreeView,使其成为活动部分。当我现在尝试 运行 3(与 1 的方法相同)时,我遇到了一个问题:Package Explorer 不再是 selectionService
的 activePart
,因此 selection
一片空白。
我的问题是:有没有什么方法可以为不是活动视图的特定视图获取 ISelectionService
?如果没有,有没有办法在执行步骤 3 之前以编程方式设置活动部分?
顺便说一句,这是一个 Eclipse 3.x 插件。
如果您找到包资源管理器的 IViewPart
,您可以直接使用以下方法访问它的 ISelectionProvider
:
IViewPart part = .. find package explorer view part
IViewSite viewSite = part.getViewSite();
ISelectionProvider provider = viewSite.getSelectionProvider();
ISelection selection = provider.getSelection();
在我的 Eclipse 插件中我有这个工作流程:
- 在 Package Explorer 中获取当前选择的项目
- 做点什么
- 获取Package Explorer中当前选中的项目(同1)
- 做点不一样的事
1(和3)是这样实现的:
ISelectionService selectionService = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getSelectionService();
ISelection selection = selectionService.getSelection();
[...]
现在,问题是在 1 之前,选择了 Package Explorer,因为这是触发工作流的唯一方式。但是第 2 步更改了活动部分,因为它刷新了一个 TreeView,使其成为活动部分。当我现在尝试 运行 3(与 1 的方法相同)时,我遇到了一个问题:Package Explorer 不再是 selectionService
的 activePart
,因此 selection
一片空白。
我的问题是:有没有什么方法可以为不是活动视图的特定视图获取 ISelectionService
?如果没有,有没有办法在执行步骤 3 之前以编程方式设置活动部分?
顺便说一句,这是一个 Eclipse 3.x 插件。
如果您找到包资源管理器的 IViewPart
,您可以直接使用以下方法访问它的 ISelectionProvider
:
IViewPart part = .. find package explorer view part
IViewSite viewSite = part.getViewSite();
ISelectionProvider provider = viewSite.getSelectionProvider();
ISelection selection = provider.getSelection();