FAQ:What support is there for creating custom text editors?

Eclipse官方FAQ翻譯系列

Eclipse中有什麼是支持自定義文本編輯器的?

原始鏈接:http://wiki.eclipse.org/FAQ_What_support_is_there_for_creating_custom_text_editors%3F

Eclipse爲創建象程序語言編輯器和文檔編輯器這類文本編輯器提供了豐富的支持。而文本編輯框架被設計爲多層,以增加與Eclipse平臺的耦合。某些較低級別的組件可以輕易的在Eclipse之外的獨立應用中重用,而框架的其他部分只能在一個運行的Eclipse平臺中使用。使用這個框架,你可以只做很少的工作就快速的創建功能強大的編輯器。

Eclipse中有大量針對文本編輯的基礎結構,以至於指出從哪裏開始非常困難,這裏僅有一些提供文本處理功能的插件的簡短說明。

  • org.eclipse.text.

這個plugin是少有的幾個沒有依賴於其他插件的插件之一。因爲它沒有依賴於Eclipse平臺,甚至是SWT。這個插件可以輕易的在獨立的應用中被使用。這個插件提供了一個操作文本的模型並且沒有可視化組件,因此它可以被用於處理或操作文本的程序中。你可以把這個插件想象爲java.lang.StringBuffer的增強版本,它支持改變通知事件(event change notification)、分區、查找和替換,還有其他一些文本處理功能。

org.eclipse.swt.

SWT在本書的其他部分敘述,但在文本編輯環境中,StyledText類在這裏應該被提及。StyledTextSWT中用於顯示和編輯文本的用戶接口對象。用戶所看見一切都呈現在這裏:顏色、字體、選中、插入符號(I型光標)等等。你可以添加任何種類的監聽器來跟蹤用戶正在做什麼。某些令人着迷的功能如單詞包裝(word wrapping),雙向文本(bi-directional text)被用於很多非拉丁語言環境,同時還支持打印。

  • org.eclipse.jface.text.

這個插件是org.eclipse.text提供的模型和StyledText提供的視圖的結合。對應於JFace的思想,這裏的意圖不是隱藏SWT層,而是用一個豐富的模型和控制器來增強可視化表現。這個plugin是文本框架的核型,而它提供的功能實在太多以至於無法一一列出。這裏僅僅展現一小部分:它支持內容輔助(content assist),基於規則的文本掃描(用於語法着色)和分區,一個垂直的標尺(編輯器左邊顯示line number的部分),incremental reconciling(漸進調解?)、格式化,還有盤旋顯示(鼠標放置在方法上,出現提示)。本章的其他FAQ中詳細描述這些功能的大部分。

  • org.eclipse.ui.workbench.texteditor.

這個插件將Eclipse平臺和文本框架聯繫在一起。你只能在某個運行中的Workbench中使用這個插件提供的功能(它與Eclipse平臺緊密相連)。特別的,這個插件支持文本編輯器出現在workbench區域中,並使用一大堆Action的子類來操作編輯器的內容,並且支持annotation(注意,這裏不是Java語言特性中的Annotation,而是“註解”的意思,比如書籤,代碼摺疊等都稱爲annotation),增量的查找等等。如果你正在設置一個在Eclipse平臺中使用的編輯器,你可以繼承本插件中的AbstractTextEditor類。這個抽象編輯器包含Eclipse中默認文本編輯器的大部分功能,而不假定編輯的內容存儲在哪裏,它(被編輯的內容)不一定是在workspace中。對於一個需要文本編輯支持的RCP應用,這個插件非常適合。

org.eclipse.ui.editors.

這個插件提供了Eclipse基礎平臺中主要的功能明確的編輯器(main concrete editor):他們是默認的文本編輯器。當編寫你自己的編輯器時,你通常並不需要使用這個插件,因爲所有有用的功能已經被抽象到我們已經提到過的其他插件。concrete編輯器專門適用於IFileEditorInput,而IFileEditorInput用於一個本地workspaceIFile對象。

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