在一般的RCP应用中,经常要在EclipseRCP的工作台界面出现前,弹出自己的对话框,例如登陆校验框。一般的做法是在Application.run(Objectargs)中,在构造工作台之前启动自己的对话框,这样做的坏处就是RCP的工作台没有启动,与工作台相关的数据,参数没有被初始化。如果在对话框中用到这些数据,就会出现问题。
以下是RCP工作台启动和退出时的方法调用顺序:
启动顺序
- WorkbenchAdvisor.initialize 在打开每个窗口时调用该方法。
- WorkbenchAdvisor.preStartup 其次执行的就是这个方法,但它的调用是在第一个窗口打开之前。在启动或者恢复期间暂时禁用某些项时,该方法非常有用。
- WorkbenchAdvisor.openWindows
- WorkbenchAdvisor.createWorkbenchWindowAdvisor
- WorkbenchWindowAdvisor.preWindowOpen 在打开每个窗口时调用该方法。
- WorkbenchWindowAdvisor.createActionBarAdvisor
- WorkbenchWindowAdvisor.postWindowCreate
- WorkbenchWindowAdvisor.postWindowOpen 在已经打开一个窗口之后调用该方法,可以使用该方法注册任何窗口监听器。
- WorkbenchAdvisor.postStartup 对该方法的调用是执行的第三个操作,它的调用是在第一个窗口打开之后,可以用该方法重新启用 preStartup 方法中临时禁用的项。
关闭顺序
- WorkbenchWindowAdvisor.preWindowShellClose 在用户关闭窗口外壳时调用该方法。
- WorkbenchAdvisor.preShutdown 该方法的调用是在事件循环已经终止,任何窗口尚未关闭之前。
- WorkbenchWindowAdvisor.postWindowClose
- WorkbenchAdvisor.postShutdown 这是最后一个方法,它在事件循环终止之后被调用。
在关闭工作台的时候,如果是点击“退出”菜单,而不是点击右上角的"X",则不会执行步骤9。
重写WorkbenchWindowAdvisor.publicvoidpostWindowCreate(),该方法定义了在整个Window被创建好,但是还没有打开前执行的操作,要打开的对话框放在这里是最合适的。
问题是要自己关闭splash,执行Platform.endSplash()。
WorkbenchAdvisor 类还包含下列方法:
- WorkbenchAdvisor.fillActionBars 在调用 preWindowOpen 方法之后调用该方法,可以使用它配置窗口的动作栏。
- WorkbenchAdvisor.postWindowRestore 在根据以前保存的状态重新创建窗口之后调用该方法。
- WorkbenchAdvisor.eventLoopException 可以调用该方法处理事件循环崩溃的异常。
- WorkbenchAdvisor.eventLoopIdle 在没有更多的事件需要处理的时候调用该方法。
最新评论