內部和外部編輯器

org.eclipse.ui.editors

這個延伸點用來在工作台中新增編輯器。編輯器是工作台頁面內的視覺化元件。它通常用來編輯或瀏覽文件或輸入物件。如果要開啟一個編輯器,使用者通常會在 IFile 上呼叫 "Open"。當執行這個動作時,會參照工作台登錄來判斷檔案類型的適當編輯器,再建立一個編輯器類型的新實例。實際的結果會隨著編輯器的類型而不同。工作台支援建立緊密整合在工作台中的內部編輯器,以及從個別頁框視窗中啟動的外部編輯器。另外亦提供這些內外部編輯器之間的各種層次的整合。

在內部編輯器中,工作台視窗與編輯器組件之間可以達到緊密的整合。工作台功能表和工具列預先載入了若干共用動作,如剪下、複製和貼上。作用中的組件、視圖或編輯器應該提供這些動作的實作。內部編輯器也可以定義會出現在工作台視窗中的新動作。這些動作只有在編輯器作用中時才會出現。

工作台和外部編輯器之間的整合比較弱。在這個情況下,工作台可啟動編輯器,但之後就沒有辦法判斷外部編輯器的狀態, 且除了檔案系統之外,也沒有任何方法可以與它合作。

<!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>

如果使用 command 屬性的話,會將它當作以平台相依方式執行的外部程式指令行來處理。

如果使用 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 屬性值來建立的:

新增至這些路徑的動作和功能表只有在相關編輯器在作用中時才會顯示。當關閉編輯器時,會移除功能表和動作。

工作台提供一個「預設文字編輯器」。一般使用者產品可含有其他編輯器作為出貨連結銷售的一部分。在這個情況下,會利用上述語法將編輯器登錄為延伸。