在我的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不再是activePartselectionService,因此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/

10-10 19:06