在Eclipse RCP中,我想在IWorkbenchWindow和IPartService中安装某些监听器。 Eclipse启动后这很容易。但是在启动时,当我的插件Activator被调用时,这些对象还不可用;例如,如果我使用:
IWorkbench wb = PlatformUI.getWorkbench();
IWorkbenchWindow wbw = wb.getActiveWorkbenchWindow();
IPartService ps = wbw.getPartService();
这只会导致NullPointerExceptions。
解决此问题的一种方法是安排工作,看看我是否可以获得IPartService。如果我不能,我会重新安排工作,以便在一秒左右再次运行,直到成功为止。这绝对是一个肮脏的黑客,我觉得我在这里遗漏了一些东西。
处理这个问题的正确方法是什么?
答案 0 :(得分:1)
在RCP中,从WorkbenchWindowAdvisor
派生的类可以覆盖preWindowOpen
类,以便在打开主窗口之前设置挂钩。
例如,Eclipse RCP使用它来设置IPageListener以监视工作台页面的更改。