【问题标题】:Eclipse RCP: Set active part programmatically or get selection of inactive partEclipse RCP:以编程方式设置活动部分或选择非活动部分
【发布时间】:2016-02-25 10:25:25
【问题描述】:

在我的 Eclipse 插件中,我有这个工作流程:

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

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

ISelectionService selectionService = PlatformUI.getWorkbench()
    .getActiveWorkbenchWindow().getSelectionService();
ISelection selection = selectionService.getSelection();
[...]

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

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

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

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

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

    IViewPart part = .. find package explorer view part
    
    IViewSite viewSite = part.getViewSite();
    
    ISelectionProvider provider = viewSite.getSelectionProvider();
    
    ISelection selection = provider.getSelection();
    

    【讨论】:

      猜你喜欢
      • 2018-07-22
      • 1970-01-01
      • 2018-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      相关资源
      最近更新 更多