我們已瞭解工作台讓使用者控制外掛程式功能外觀的一些方法。 視圖可使用視窗 > 顯示視圖功能表來隱藏或顯示。 動作集可使用視窗 > 自訂視景... 功能表來隱藏或顯示。這些特性幫助使用者組織工作台。
視景提供工作台視窗中額外的組織層。 當使用者在作業之間移動時,可以在視景之間切換。 視景定義視圖集合、視圖佈置和當使用者第一次開啟視景時必須使用的可見動作集。
視景係使用 IPerspectiveFactory 來實作。IPerspectiveFactory 的實作者應以說明視景及其視景頁面佈置的資訊來配置 IPageLayout。
IPageLayout 的主要工作之一是說明編輯器的位置和工作台視窗中的視圖。 請注意:這些佈置不同於 SWT 中的 Layout 類別。 雖然 IPageLayout 和 Layout 可解決類似問題(調整較大區域內的小組件的大小及位置),但是要提供視景頁面 佈置,您不需要瞭解 SWT 佈置。
初值設定後的視景頁面佈置會有一個用來顯示編輯器的區域。視景 Factory 負 責新增與編輯器相對的其他視圖。視圖新增至與另一組件相關(上、下、左、右)的佈置中。 對不是一開始就顯示的項目也可新增位置保留元(空的空間)。
要組織相關的視圖和減少雜亂,您可以使用 IFolderLayout 來將視圖分組至已標示的資料夾中。例如,「資 源」視景將資源導覽器安置在工作台左上角的某個資料夾內。位置保留 元通常搭配資料夾佈置使用。 「資源」視景對與資源導覽器相同資料夾中的書籤視圖定義位置保留元。 如果使用者顯示書籤視圖,則會出現在與導覽器相同的資料夾內,每一個視圖都有一個標示。
IPageLayout 也容許您定義視景中可用的動作和捷徑。
視景和 IPageLayout 提供的另一項珍貴服務就是協助在編輯器及其相關視圖之間進行導覽。 我們通常把視圖看作可協助使用者尋找要在編輯器中使用的物件的視圖。 然而,相反的作業也是有用的:在編輯器中使用物件的使用者可能需要導覽至視圖內的該物件。 做法為使用工作台的導覽 > 顯示位置功能表。 這個指令可讓使用者跳至目前編輯(或選取)之物件的環境定義中任意數目相關視圖之一。 舉例來說,編輯檔案的使用者可能想要跳至資源導覽器中的該檔案。
工作台的外掛程式架構可讓開發人員在甚至彼此不明白對方的不同外掛程式中提供視圖和編輯器。藉由實作「顯示位置」的支援,您的視圖或編輯器可以支援方便地來回導覽其他外掛程式所提供的視圖和編輯器。
這種導覽可讓使用者在視圖之間迅速移動,並輕易地開啟通常不顯示在特殊視景中的視圖。舉例來說,在 Java 視景中工作的使用者可以使用導覽 > 顯示位置, 在「導覽器」視圖中檢視目前編輯的 Java 檔案。
如果您想要容許使用者從您的編輯器或視圖使用導覽 > 顯示位置以跳至另一個視圖, 則必須實作 IShowInSource。 您的組件可以直接使用通訊協定 (getShowInSource()) 或當作配接器,來提供它的 IShowInSource。 IShowInSource 可讓您的組件提供環境定義 (ShowInContext),而目標會使用這個環境定義來判斷如何顯示來源。編輯器中的顯示位置環境定義通常是它的輸入元素。對於視圖, 環境定義通常是它的選項。ShowInContext 中提供選項和輸入元素兩者,給予目標判斷如何顯示來源的彈性。
提供有編輯器的預設環境定義,以便您的編輯器不需任何特殊編碼,就可以參與「顯示位置」。 對於編輯器,輸入元素和選項是用來建立適當的環境定義。
對於視圖,IShowInSource 必須由視圖實作,才能提供導覽 > 顯示位置功能。
如果您想要視圖成為「顯示位置」作業的有效目標,您必須實作 IShowInTarget。 目標負責以適合於其呈現方式的方式來顯示給定的環境定義。 舉例來說,「導覽器」視圖會展現其樹狀結構,以選取和顯示環境定義中指定的資源。
目標應該首先檢查 ShowInContext 中的選項, 以決定要顯示什麼,因為這是更特定的資訊。僅在沒有指出任何選項時,它才應該顯示輸入元素。
如何判定可用的目標清單?您可以在 IPageLayout 中, 指定您視景的可用目標。 請回想,「顯示位置」導覽可以開啟一個未呈現在視景中的視圖。 使用 IPageLayout.addShowInPart, 您可以按照 ID 指定有效的「顯示位置」目標。如此一來,不需建立任何視圖, 就可以建立有效的目標。