[置顶] 欢迎您。今天是2023年03月30日。

在一般的RCP应用中,经常要在EclipseRCP的工作台界面出现前,弹出自己的对话框,例如登陆校验框。一般的做法是在Application.run(Objectargs)中,在构造工作台之前启动自己的对话框,这样做的坏处就是RCP的工作台没有启动,与工作台相关的数据,参数没有被初始化。如果在对话框中用到这些数据,就会出现问题。

以下是RCP工作台启动和退出时的方法调用顺序:

启动顺序

  1. WorkbenchAdvisor.initialize 在打开每个窗口时调用该方法。
  2. WorkbenchAdvisor.preStartup 其次执行的就是这个方法,但它的调用是在第一个窗口打开之前。在启动或者恢复期间暂时禁用某些项时,该方法非常有用。
  3. WorkbenchAdvisor.openWindows
  4. WorkbenchAdvisor.createWorkbenchWindowAdvisor
  5. WorkbenchWindowAdvisor.preWindowOpen 在打开每个窗口时调用该方法。
  6. WorkbenchWindowAdvisor.createActionBarAdvisor
  7. WorkbenchWindowAdvisor.postWindowCreate
  8. WorkbenchWindowAdvisor.postWindowOpen 在已经打开一个窗口之后调用该方法,可以使用该方法注册任何窗口监听器。
  9. WorkbenchAdvisor.postStartup 对该方法的调用是执行的第三个操作,它的调用是在第一个窗口打开之后,可以用该方法重新启用 preStartup 方法中临时禁用的项。

关闭顺序

  1. WorkbenchWindowAdvisor.preWindowShellClose 在用户关闭窗口外壳时调用该方法。
  2. WorkbenchAdvisor.preShutdown 该方法的调用是在事件循环已经终止,任何窗口尚未关闭之前。
  3. WorkbenchWindowAdvisor.postWindowClose
  4. WorkbenchAdvisor.postShutdown 这是最后一个方法,它在事件循环终止之后被调用。

在关闭工作台的时候,如果是点击“退出”菜单,而不是点击右上角的"X",则不会执行步骤9。

重写WorkbenchWindowAdvisor.publicvoidpostWindowCreate(),该方法定义了在整个Window被创建好,但是还没有打开前执行的操作,要打开的对话框放在这里是最合适的。

问题是要自己关闭splash,执行Platform.endSplash()。

WorkbenchAdvisor 类还包含下列方法:

  1. WorkbenchAdvisor.fillActionBars 在调用 preWindowOpen 方法之后调用该方法,可以使用它配置窗口的动作栏。
  2. WorkbenchAdvisor.postWindowRestore 在根据以前保存的状态重新创建窗口之后调用该方法。
  3. WorkbenchAdvisor.eventLoopException 可以调用该方法处理事件循环崩溃的异常。
  4. WorkbenchAdvisor.eventLoopIdle 在没有更多的事件需要处理的时候调用该方法。
您可能也喜欢

今天给RCP打包测试,遇到了以前的遗留问题,就是打包后配置文件丢失,导致一些功能实现不了,从而用了硬编码实现,今天闲来无事,偶然间把问题解决了。以前用的配置文件格式是ini的,在查看了几个配置文件都是properties格式能打包进去后,我也把ini改成了properties,竟然成功。呵呵~爽啊~

二维码
摄像头