說明:這個延伸點用來新增新的編輯器到工作台中。編輯器是工作台頁面內的一個視覺化元件。 它通常用來編輯或瀏覽文件或輸入物件。如果要開啟編輯器,使用者通常會在 IFile 中呼 "Open"。 當執行這個動作時,會參照工作台登錄來判斷檔案類型的適當編輯器,再建立一個編輯器類型的新實例。 實際的結果會隨著編輯器的類型而不同。 工作台支援建立緊密整合在工作台中的內部編輯器,以及從個別頁框視窗中啟動的外部編輯器。 另外在這些極端之間的各種層次的整合。
在內部編輯器的情況中,可在工作台視窗和編輯器部份之間獲致緊密的整合。 工作台功能表及工具列預先載入了若干共用動作,如剪下、複製和貼上。 作用中的部份、檢視畫面或編輯器應該提供這些動作的實作。 內部編輯器也可以定義會出現在工作台視窗中的新動作。 這些動作只有在編輯器作用中時才會出現。
工作台和外部編輯器之間的整合比較弱。 在這個情況中,工作台可啟動編輯器,但之後就沒有辦法判斷外部編輯器的狀態,且除了檔案系統之外,也沒有任何方法可以與它合作。
配置標記:
<!ELEMENT editor EMPTY>
<!ATTLIST editor
id
CDATA #REQUIRED
name
CDATA #REQUIRED
icon
CDATA #IMPLIED
class
CDATA #IMPLIED
command
CDATA #IMPLIED
launcher
CDATA #IMPLIED
contributorClass
CDATA #IMPLIED
extensions
CDATA #OPTIONAL
filenames
CDATA #OPTIONAL
default
CDATA (true|false) "false"
以下是內部編輯器延伸定義的範例:
<extension point="org.eclipse.ui.editors">
<editor
id="com.xyz.XMLEditor"
name="Fancy XYZ
XML editor"
icon="./icons/XMLEditor.gif"
extensions="xml"
class="com.xyz.XMLEditor"
contributorClass="com.xyz.XMLEditorContributor"
default="false">
</editor>
</extension>
API 資訊:
如果使用 command 屬性的話,會將它當作以平台相依方式執行的外部程式指令行來處理。
如果使用 launcher 屬性,也會將編輯器當作外部程式來處理。 在這個情況中,指定的類別必須實作 org.eclipse.ui.IEditorLauncher。 發射台會產生實例,之後,會呼叫 open(IFile file) 來啟動編輯器。
如果使用 class 屬性的話,工作台會假設它是一個內部編輯器,且指定的類別必須實作 org.eclipse.ui.IEditorPart。 當定義新的編輯器類型時,建立 org.eclipse.ui.EditorPart 的子類別是通用的作法。另外也必須定義 contributorClass 屬性。 指定的類別必須實作 org.eclipse.ui.IEditorActionBarContributor,且用來新增新動作到反映編輯器類型特性的工作台功能表及工具列中。
在工作台內,相同特定類型可能會有多個開啟的編輯器。比方說,可能會有一或多個開啟的 Java 編輯器。 為了避免建立重複的動作及動作影像,編輯器概念已分成兩個。 IEditorActionBarContributor 負責建立動作。這個編輯器負責動作的實作。 此外,contributer 也由每個開啟的編輯器來共用。 這個設計的結果是一或多個開啟的編輯器只有一組動作。
contributer會將新動作新增到反映編輯器類型的工作台功能表和工具列中。 這些動作是共用的,在受到呼叫時,會作用於作用中的編輯器。 作用中的編輯器會因 IEditorActionBarContributor#setActiveEditor 受到呼叫而傳遞給contributer。 工作台視窗內的動作和主要群組的識別碼定義在 org.eclipse.ui.IWorkbenchActionConstants 中。 這些應該作為新增新動作的參照點。 最上層功能表是利用 path 屬性的下列值來建立的:
提供的實作:工作台提供一個「預設文字編輯器」。 一般使用者產品可含有其它編輯器作為出貨連結銷售的一部份。 在這個情況中,會利用上述語法將編輯器登錄為延伸項目。