FAQ:我還是搞不懂,編輯器的各個部分是怎麼組合在一起的。

Eclipse官方FAQ翻譯系列

FAQ I'm still confused! How do all the editor pieces fit together?

原文地址http://wiki.eclipse.org/FAQ_I%27m_still_confused%21_How_do_all_the_editor_pieces_fit_together%3F

譯者注:我把Presentation context翻譯成了“表述上下文”,可能不太正確,有更好的翻譯方法請指正一下。

當你開始遊覽Eclipse的編輯器插件,一大堆的名詞涌入你的眼睛:IDocumentSytledTextISourceViewerITextViewerTextITextEditor等等、等等。此外,許多這些模塊似乎是重疊的,他們經常提供相似的功能。說句實話,當需要實現某個功能時,很難指出你應該關注哪一個模塊。

對於新手來說,掌握這些確實不容易,但爲了達到最大可重用,這些重疊的模塊層都是經過仔細設計的。Eclipse被設計成可被第三方擴展以應付各種不同的應用需求。相對於提供一個單一的API來滿足所有的需要,編輯器框架給了你一個聯繫鬆散的工具包(loosely coupled toolkit),以使你可以根據自己的特定應用來自主選擇。這裏有一個較高層次的概覽來幫助你開始。

text-editing框架和Eclipse平臺的其他部分一樣遵循相同的體系原則。四層分別是模型(核心),視圖(SWT),控制器(JFace)和表述上下文(Presentation context,通常是workbench)。模型和視圖都是自包含模塊且互不瞭解。如果你有一個簡單的GUI應用,你可以僅僅創建視圖並直接控制它,某些工具直接操作模型而不在乎presentation context。通常,模型、視圖、控制器被同時使用,但這三者可能出現在不同的上下文:被用於一個workbench part中,一個對話框中等等。如果你的應用需要它,你可以用一個完全不同的實現來替換他們中的任何一層,而重用其他部分。
Figure 15.1 show how these layers map onto the text-editing framework(譯者注:源站就沒圖,他們把鏈接弄錯了)

在文本編輯框架(text-editing framework)中,模型(model)是org.eclipse.jface.text.IDocument,它不依賴於任何UI模塊。

文本框架的視圖(view)是org.eclipse.swt.custom.StyledText。不要被org.eclipse.swt.widgets.Text迷惑,它(通常)是一個僅有非常今本功能的地組件。它僅僅適用於對話框中簡單的輸入域,且沒有提供豐富編輯功能。StyledText是呈現文本編輯器的真正部件。

文本框架的控制器層(controller)由org.eclipse.jface.text.ITextViewer提供。org.eclipse.jface.text.ISourceViewer擴展了它以提供針對程序語言編輯器特定的功能。而在workbench part中呈現文本編輯器的上下文由org.eclipse.ui. texteditor.ITextEditor提供。這是文本框架對普通編輯器接口org.eclipse.ui.IEditorPart的擴展。

    <img src=../images/texteditor.png>

    Figure 15.1   Model-view-controller collaboration in the Eclipse text-editing framework (譯者注:不同怪我,源鏈接就沒圖)

 

 
發佈了43 篇原創文章 · 獲贊 29 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章