內容概要畫面

編輯器通常有對應的內容概要畫面,它提供編輯器內容的結構化檢視畫面並 協助使用者導覽編輯器的內容。

工作台針對這個目的提供標準概要檢視畫面。   工作台使用者使用 視景->顯示檢視畫面功能表來控制何時可看見這個檢視畫面。

因為通用 TextEditor 完全不瞭解它的文字結構,所以它無法為有趣的概要檢視畫面提供操作方式。   因此,下面顯示的預設概要檢視畫面沒什麼作用。

外掛程式只能為了新增自訂內容概要頁面到概要檢視畫面來延伸 TextEditor。    在工作台 Readme 工具範例即使用這 種方式。  ReadmeEditor 置換 TextEditor 中的幾種方法以提供自己的概要畫面。  

工作台要求IContentOutlinePage 類型的配接器時會指定編輯器的概要畫面。

public Object getAdapter(Class key) {
    if (key.equals(IContentOutlinePage.class)) {
        IEditorInput input = getEditorInput();
        if (input instanceof IFileEditorInput) {
            page = new ReadmeContentOutlinePage(
                ((IFileEditorInput)input).getFile());
            return page;
        }
    }
    return super.getAdapter(key);

開啟 ReadmeEditor 時(在 .readme 檔)會顯示對應的 Readme 概要畫面(如果工作台使用者顯示概要檢視畫面的話。)

內容概要畫面必須實作 IContentOutlinePage 。   這個介面結合通知選項變更接聽器的能力 (ISelectionProvider) 與在檢視畫面中作為頁面的操作方式 (IPage) 。   通常使用 JFace 檢視程式實作內容概要畫面。   內容概要畫面的 預設實作 (ContentOutlinePage) 使用 JFace 樹狀結構檢視程式顯示概要的階層式表示法。   這個表示法適合 許多結構化概要畫面,包括 ReadmeContentOutlinePage 在內。

ReadmeContentOutlinePage 的外觀類似下面顯示的 Readme 區段檢視畫 面,  當我們實作 Readme 檢視 畫面延伸時會看到此檢視畫面。

事實上,唯一真正的差別是概要畫面顯示區段的階層式檢視畫面,但是 Readme 區段檢視畫面顯示區段的一般清單。   概要畫面的實作十分類似此檢視畫面並不 令人意外。   唯一差別是概要畫面使用樹狀結構檢視程式而不是清單檢視程式。

編輯器建立概要頁面之後,編輯器在建構子的輸入元素會傳遞給它。  通常 可以直接傳送這個輸入到概要頁面的檢視程式,如下面所示。

public void createControl(Composite parent) {
    ...
    TreeViewer viewer = getTreeViewer();
    viewer.setContentProvider(new WorkbenchContentProvider());
    viewer.setLabelProvider(new WorkbenchLabelProvider());
    viewer.setInput(getContentOutline(input));
    ...
}

樹狀結構檢視程式之建立是從 ContentOutlinePage 繼承而來。  此處使用已經在 Readme 區段檢視畫面使用的 相同內容和標籤提供者,而且使用建構檢視畫面區段的相同 ReadmeModelFactory 來建構內容的概要。

private IAdaptable getContentOutline(IAdaptable input) {
    return ReadmeModelFactory.getInstance().getContentOutline(input);
}

以上就是它的所有內容!

當然,概要畫面本身不提供任何有趣的操作方式。  選取區段並不會導覽編 輯器中的文字!  那麼這個內容概要畫面究竟有何用處?   您可能認為 內容概要畫面沒有提供我們在區段檢視畫面未看過的操作方式(除了階層式表示法 以外)。  我們不能在區段檢視畫面只使用樹狀結構檢視程式而不必提供沒有任何效 用的概要畫面嗎? 

它只是一個範例!   實際上,有提供 ReadmeContentOutlinePage 示範如何能夠為文字編輯器自訂內容概要畫面。   它本身並不是一個好的內容概要畫面範例。   使用者期望內容概要畫 面能協助他們導覽編輯器內容,所以如果唯一的目的是顯示內容的結構,那麼建議您 使用區段檢視畫面。

到哪裡可以找到更有趣的內容概要畫面?  請查看 ContentOutlinePage 的子類別以及它們的對應編輯器。  更典型的型樣是編輯器提供概要頁面 並在上面登錄選項事件。  在內容概要中選取項目時,編輯器也會適當地更新 自己。

Java 原始碼編輯器(由 JDT 提供)示範一個有趣的內容概要畫面。   Java 概要畫面顯示 Java 原始碼的結構化檢視畫面並可讓使用者在對應編輯器導覽 宣告、方法和欄位。   當概要畫面報告選項事件時,Java 編輯器會更新它的垂直尺 規來顯示概要畫面中的元素位於原始碼的什麼位置。