0

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

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

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

4

1 回答 1

0

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

尝试:

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扩展点。

于 2012-06-23T00:34:57.360 回答