如何在插件激活器中获取选择服务

时间:2012-04-12 10:26:22

标签: eclipse-plugin

我需要以某种方式获得激活器中选择服务的参考。我试过这个:

IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow ww = wb.getActiveWorkbenchWindow();
ww.getSelectionService().addSelectionListener(new GlobalSelectionListener());

ww总是null。我还没有找到另一个代码来获取选择服务参考。此代码仅在Eclepse完全初始化时有效。

1 个答案:

答案 0 :(得分:0)

您需要确保在Display线程上调用getActiveWorkbenchWindow()以获得非null返回。

尝试:

final IWorkbench workbench = PlatformUI.getWorkbench();
workbench.getDisplay().asyncExec(new Runnable() {
  public void run() {
    IWorkbenchWindow window = workbench.getActiveWorkbenchWindow();
    if (window != null) {
      // do something
    }
  }
});

该示例来自org.eclipse.ui.IStartup的javadoc。如果您希望在初始化工作台后尽快执行代码,则应考虑扩展org.eclipse.ui.startup扩展点。