提供自訂工作台行為的「進入點」是指定 WorkbenchAdvisor 來配置工作台。您的 Rich Client 外掛程式應該繼承這個抽象類別來提供特定應用程式的配置給工作台。瀏覽器範例使用 BrowserAdvisor 類別來完成這項工作。
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
工作台顧問負責置換方法,將工作台配置為它想要的佈置和特性,比如說,動作列項目或簡介頁面。
工作台顧問提供的生命週期方法讓您的應用程式可隨時連結工作台的建立並影響行為。下列可以被置換的顧問生命週期方法清單是來自 WorkbenchAdvisor 的 Javadoc。
initialize
- 最先被呼叫;在任何視窗之前;用來登錄事項preStartup
- 第二呼叫;在初值設定之後但在第一個視窗開啟之前;用來在啟動或還原期間暫時停用事項postStartup
- 第三呼叫;在第一個視窗開啟之前;用來重新啟用前一步驟中暫時停用的事項postRestore
- 從先前儲存的狀態重新建立工作台與其視窗之後呼叫;用來調整還原的工作台preWindowOpen
- 在每一個視窗即將開啟時呼叫;用來配置動作列以外的視窗外觀fillActionBars
- 在 preWindowOpen
之後呼叫,用來配置視窗的動作列postWindowRestore
- 從先前儲存的狀態重新建立視窗之後呼叫;用來調整還原的視窗postWindowCreate
- 從起始狀態或還原狀態建立視窗之後呼叫;用來調整視窗openIntro
- 視窗開啟之前立即呼叫,為了建立簡介元件(如果有的話)。
postWindowOpen
- 視窗開啟之後呼叫;用來連結視窗接聽器等等。preWindowShellClose
- 當使用者關閉視窗的 Shell 時呼叫;用來預先處理視窗關閉eventLoopException
- 處理事件迴圈毀損的情況時呼叫;用來通知使用者發生問題eventLoopIdle
- 當目前沒有其他事件要處理時呼叫;用來執行其他工作或交出控制權直到新的事件進入佇列preShutdown
- 在事件迴圈終止之後但是關閉任何視窗之前呼叫;允許應用程式否決關閉postShutdown
- 最後呼叫;在事件迴圈終止及所有視窗關閉之後;用來取消登錄在初值設定期間所登錄的事項如您所見,Rich Client 應用程式對於工作台的配置和實作有許多控制權。在瀏覽器範例中,BrowserAdvisor 的主要功能是以適用瀏覽器的功能表項目來配置動作列。這是以 fillActionBars 方法來完成︰
public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { ... BrowserActionBuilder builder = new BrowserActionBuilder(window); getWorkbenchConfigurer().getWindowConfigurer(window).setData(BUILDER_KEY, builder); builder.fillActionBars(configurer, flags); }
在這個方法中,利用特殊化的動作建置器來配置工作台。這個動作建置器是用來填入工作台的動作列。我們將在定義動作中看到如何指定動作的詳細資料。現在,我們著重在如何配置工作台。
請注意以上 getWorkbenchConfigurer() 方法的使用方式。IWorkbenchConfigurer 和 IWorkbenchWindowConfigurer 與 WorkbenchAdvisor 一起使用來自訂視窗。這些類別允許您置換許多不同層次的工作台建立外觀。比如說,IWorkbenchWindowConfigurer 定義假設工作台視窗中控制項的特定配置的協定,如動作列、狀態行、視景列、Cool Bar 等等。它的協定允許您自訂和載入使用這些項目。IWorkbenchConfigurer 在較高的層次運作,允許以工作台來儲存特定應用程式的資料。WorkbenchAdvisor 在上述的生命週期方法中提供這些配置的存取。WorkbenchAdvisor 內較低層次的方法可以被置換而完全取代預設的行為。例如,您的工作台顧問可以置換在視窗中建立 SWT 控制項的方法,以提供完全不同的主視窗實作方式。
換句話說,有許多種方法可以自訂工作台和數個不同層次來使用這些技術。WorkbenchAdvisor、 IWorkbenchConfigurer 和 IWorkbenchWindowConfigurer 的 Javadoc 包括可用協定的完整說明。另請參閱 BrowserAdvisor 的完整實作,以取得替代實作方式的意見。