我如何等待IWorkbenchWindow可用?

时间:2014-11-20 16:20:09

标签: eclipse eclipse-rcp

在Eclipse RCP中,我想在IWorkbenchWindow和IPartService中安装某些监听器。 Eclipse启动后这很容易。但是在启动时,当我的插件Activator被调用时,这些对象还不可用;例如,如果我使用:

IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow wbw = wb.getActiveWorkbenchWindow();
IPartService ps = wbw.getPartService();

这只会导致NullPointerExceptions。

解决此问题的一种方法是安排工作,看看我是否可以获得IPartService。如果我不能,我会重新安排工作,以便在一秒左右再次运行,直到成功为止。这绝对是一个肮脏的黑客,我觉得我在这里遗漏了一些东西。

处理这个问题的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

在RCP中,从WorkbenchWindowAdvisor派生的类可以覆盖preWindowOpen类,以便在打开主窗口之前设置挂钩。

例如,Eclipse RCP使用它来设置IPageListener以监视工作台页面的更改。