在一般的 RCP 應用中,經常要在 Eclipse RCP 的工作臺界面出現前,彈出自己的對話框,例如登陸校驗框。一般的做法是在 Application.run(Object args) 中,在構造工作臺之前啓動自己的對話框,這樣做的壞處就是 RCP 的工作臺沒有啓動,與工作臺相關的數據,參數沒有被初始化。如果在對話框中用到這些數據,就會出現問題。
以下是 eclipse RCP 工作臺啓動和退出時的方法調用順序:
啓動順序
WorkbenchAdvisor.preStartup
WorkbenchAdvisor.openWindows
WorkbenchAdvisor.createWorkbenchWindowAdvisor
WorkbenchWindowAdvisor.preWindowOpen
WorkbenchWindowAdvisor.createActionBarAdvisor
WorkbenchWindowAdvisor.postWindowCreate
WorkbenchWindowAdvisor.postWindowOpen
WorkbenchAdvisor.postStartup
關閉順序
WorkbenchWindowAdvisor.preWindowShellClose
WorkbenchAdvisor.preShutdown
WorkbenchWindowAdvisor.postWindowClose
WorkbenchAdvisor.postShutdown
在關閉工作臺的時候,如果是點擊 “ 退出 ” 菜單,而不是點擊右上角的 “X” , 則不會執行 步驟 1 。
重寫 WorkbenchWindowAdvisor.public void postWindowCreate(), 該方法定義了在整個 Window 被創建好,但是還沒有打開前執行的操作,要打開的對話框放在這裏是最合適的。問題是要自己關閉 splash ,執行 Platform.endSplash(); 。