Java 範例編輯器從 AbstractTextEditor 繼承許多有用的預設行為。 文字編輯組織架構會處理數個其他責任,您可以藉由置換 AbstractTextEditor 中的方法, 來自訂這些責任。 瀏覽這個類別及其子類別的實作,以查看如何在組織架構中自訂行為。
下列是一些可以配置的有用組織架構特性。
文字編輯器通常會提供若干使用者喜好設定,來控制編輯器的呈現方式和行為。 在文字組織架構中,每一個文字編輯器實例都具有一個用於存取使用者喜好設定的相關聯喜好設定儲存庫。 您的編輯器可以設定這個喜好設定儲存庫,或者, 您可以繼承已在組織架構中使用的喜好設定儲存庫。
在 Java 範例編輯器的情況下,它繼承由 TextEditor 初值設定的喜好設定儲存庫。 這是由工作台編輯器外掛程式定義的喜好設定儲存庫。
protected void initializeEditor() { ... setPreferenceStore(EditorsPlugin.getDefault().getPreferenceStore()); }您可以在一般 > 編輯器和一般 > 編輯器 > 文字編輯器喜好設定頁面中, 操作編輯器外掛程式喜好設定。
如果您不想要對編輯器使用標準工作台文字喜好設定,您可以設定不同的喜好設定儲存庫。通常,做法是置換 initializeEditor 並設定您自己的喜好設定儲存庫。 如果您真的使用自己的喜好設定儲存庫,也將需要置換每當更新喜好設定時就會觸發的 handlePreferenceStoreChanged() 方法。
按鍵連結環境定義有助於建立按鍵連結的查閱次序。 具有環境定義按鍵連結可減少不同外掛程式提供衝突的按鍵順序的機會。 依預設,工作台是在通用環境定義中運作,以便使用視窗或對話框。 當文字編輯器變成作用中時,它負責將環境定義重設為文字編輯環境定義, 以便將編輯器特有的按鍵連結變成作用中。
在平台文字組織架構中,每一個文字編輯器實例都具有相關聯的按鍵連結範圍陣列。 當它變成作用中時,它負責設定這些正確的範圍。 AbstractDecoratedTextEditor 定義這個範圍並負責讓它變成作用中。這個範圍是在呼叫自建構子的方法中指定:
protected void initializeKeyBindingScopes() { setKeyBindingScopes(new String[] { "org.eclipse.ui.textEditorScope" }); }
方法的引數是已定義給環境定義之 ID 的陣列。 如果想要編輯器定義它自己的按鍵連結環境定義,您可以在編輯器類別中置換這個方法,或使用 setKeybindingScopes,以動態方式設定範圍。
環境定義本身必須以 org.eclipse.ui.contexts 延伸點中的對應 ID 來加以定義。下列是文字編輯器環境定義的定義。
<extension point="org.eclipse.ui.contexts"> <context name="%context.editingText.name" description="%context.editingText.description" id="org.eclipse.ui.textEditorScope" parentId="org.eclipse.ui.contexts.window"> </context> ...
(附註:我們在本討論中會交錯使用範圍和環境定義詞彙。文字類別中的方法名稱仍然將按鍵連結環境定義稱為範圍。這些方法名稱會將環境定義的原始實作反映為範圍,並使用過時的辭彙。)