在我的Eclipse插件中,我有以下工作流程:
在包资源管理器中获取当前选定的项目
做点什么
在Package Explorer中获取当前选定的项目(与1相同)
做一些不同的事情
1(和3)是这样实现的:
ISelectionService selectionService = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getSelectionService();
ISelection selection = selectionService.getSelection();
[...]
现在的问题是,在1之前选择了Package Explorer,因为这是触发工作流的唯一方法。但是第2步更改了活动部件,因为它刷新了TreeView使其成为活动部件。现在,当我尝试运行3(与1相同的方法)时,我遇到一个问题:Package Explorer不再是
activePart
的selectionService
,因此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();
关于java - Eclipse RCP:以编程方式设置 Activity 零件或选择不 Activity 零件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35624592/