在內部編輯器中,工作台視窗與編輯器組件之間可以達到緊密的整合。工作台功能表和工具列預先載入了若干共用動作,如剪下、複製和貼上。作用中的組件、視圖或編輯器應該提供這些動作的實作。內部編輯器也可以定義會出現在工作台視窗中的新動作。這些動作只有在編輯器作用中時才會出現。
工作台和外部編輯器之間的整合比較弱。在這個情況下,工作台可啟動編輯器,但之後就沒有辦法判斷外部編輯器的狀態, 且除了檔案系統之外,也沒有任何方法可以與它合作。
<!ELEMENT extension (editor*)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED>
<!ELEMENT editor (contentTypeBinding*)>
<!ATTLIST editor
id CDATA #REQUIRED
name CDATA #REQUIRED
icon CDATA #IMPLIED
extensions CDATA #IMPLIED
class CDATA #IMPLIED
command CDATA #IMPLIED
launcher CDATA #IMPLIED
contributorClass CDATA #IMPLIED
default (true | false) "false"
filenames CDATA #IMPLIED
symbolicFontName CDATA #IMPLIED
matchingStrategy CDATA #IMPLIED>
請注意,此時這個屬性只允許用於檔名和延伸關聯。而不允許用於內容類型連結。以內容類型為基礎的解析作業會以先進先服務的原則進行,且不會明確指定。
<!ELEMENT contentTypeBinding EMPTY>
<!ATTLIST contentTypeBinding
contentTypeId CDATA #REQUIRED>
包含編輯器的通告能夠瞭解給定的內容類型,且適合編輯該類型的檔案。
<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"
symbolicFontName=
"org.eclipse.jface.textfont"
default=
"false"
>
</editor>
</extension>
如果使用 launcher 屬性,也會將編輯器當作外部程式來處理。在這個情況下,指定的類別必須實作 org.eclipse.ui.IEditorLauncher。啟動程式會產生實例,之後,會呼叫 open(IFile file) 來啟動編輯器。
如果使用 class 屬性,工作台將假設它是內部編輯器, 而且指定的類別必須實作 org.eclipse.ui.IEditorPart。當定義新的編輯器類型時,建立 subclass org.eclipse.ui.EditorPart 的子類別是通用的作法。另外也必須定義 contributorClass 屬性。指定的類別必須實作 org.eclipse.ui.IEditorActionBarContributor, 且用來將新動作新增至反映編輯器類型特性的工作台功能表和工具列中。
在工作台內,特定類型可能有多個開啟的編輯器。比方說,可能會有一或多個開啟的「Java 編輯器」。為了避免建立重複的動作及動作影像,編輯器概念已分成兩個。IEditorActionBarContributor 負責建立動作。這個編輯器負責動作的實作。此外,contributor 由每個開啟的編輯器來共用。這個設計的結果是一或多個開啟的編輯器只有一組動作。
contributor 會將新動作新增至反映編輯器類型的工作台功能表和工具列中。這些動作是共用的,在受到呼叫時,會作用於作用中的編輯器。作用中的編輯器會因 IEditorActionBarContributor.setActiveEditor 受到呼叫而傳遞給 contributer。工作台視窗內的動作和主要群組的 ID 定義在 org.eclipse.ui.IWorkbenchActionConstants 中。這些應該作為新增動作的參照點。最上層功能表是利用下列 path 屬性值來建立的:
Copyright (c) 2002, 2005 IBM Corporation and others.
All
rights reserved. 本程式與隨附的資料依照 Elipse Public License 1.0 版此次發行所隨附的條款而提供,
可以在以下網址取得:http://www.eclipse.org/legal/epl-v10.html