軟件開發人員離不開IDE,而IDE的核心之一就是編輯器環境,這些編輯器提供代碼着色(語法着色),自動提示,代碼格式化等衆多功能,大大的提高了我們的工作效率。
那麼你是否也想擁有一個自定義的編輯器?它提供代碼着色、代碼提示、格式化,代碼摺疊等衆多功能。看到這裏,也許你已經開始退縮,這些似乎都是專業IDE公司才具有的能力,怎麼可能輕易實現。
是的,要開發一個功能完善的編輯器並非易事。但自從Eclipse出世,它就證明了一切皆有可能。從現在開始,就讓我們利用Eclipse提供的輪子,來造一輛功能完善的編輯器車子。
本系列文章僅僅是一個引子,我儘量說最少的話,用最少的例子讓你明白一個如何開發一個類似於Eclipse IDE環境下的編輯器。可能有許多的問題,可以通過[email protected]郵箱與我交流。
·前言:
·什麼是擴展,什麼是重寫
比如B類繼承A類,A有一個方法prt(),B如下實現叫做擴展。
public void prt() {
super.prt();
System.out.println(“In B”);
}
如下實現叫重寫
public void prt() {
System.out.println(“In B”);
}
很明顯,它們之間有很大的不同。在開發我們的編輯器時,某些情況下是擴展,而不是重寫,因爲在我們編輯器的父類中已經進行了大量的環境配置和初始化,我們僅僅需要在此基礎上擴展部分功能。這點需要注意。
·方框中的文字是額外的說明,可以不看。
·2 目的
我們的最終目的在開發一個Eclipse編輯器插件,該編輯器支持SQL關鍵字SELECT等代碼着色、代碼提示、代碼格式化、代碼摺疊。今天我們我們僅僅搭建一個環境,並實現最基本的文本編輯功能。
開發環境:Eclipse3.2
開發語言:Java
·3 環境搭建
在某些地方,比如工程命名,類命名等,你可以取不同的名字,但我建議你最好跟我取一樣的名稱,可以避免不必要的麻煩。待你熟悉代碼後再隨心所欲。
·3.1 建立project
Ø 新建一個Plugin project。
Ø 工程命名com.bbebfe.sql
·3.2 添加插件依賴
Ø 雙擊META-INF/MANIFEST.MF文件,選中dependencies選項卡,在Required plug-ins項中通過“Add”按鈕添加如下插件:
n org.eclipse.ui,
n org.eclipse.core.runtime,
n org.eclipse.text,
n org.eclipse.ui.editors,
n org.eclipse.ui.ide,
n org.eclipse.ui.workbench.texteditor,
n org.eclipse.core.resources,
n org.eclipse.jface.text
·3.3 新建編輯器類ZSqlEidtor,繼承AbstractDecoratedTextEditor類
AbstractDecoratedTextEditor類本身提供了大量適合於代碼編輯器使用的功能,因此我們的編輯器繼承自它。類關係圖如下:
此時我們還不需要爲ZSqlEidtor類編寫任何代碼,AbstractDecoratedTextEditor已經提供了足夠的能力來打開一個文本編輯器。
·3.4 編寫plugin.xml文件
此時工程裏可能還沒有plugin.xml文件,因爲自從Eclipse遵循OSGi標準後,就將plugin.xml文件的大部分功能移到MANIFEST.MF文件中。
現在使用File -> new -> file,創建一個plugin.xml文件。然後拷貝如下文本到plugin.xml中:
<?eclipse version="3.2"?>
<plugin>
<extension
id="com.bbebfe.sql"
name="com.bbebfe.sql"
point="org.eclipse.ui.editors">
<editor
id="com.bbebfe.sqleditor.ZSqlEditor"
name="com.bbebfe.sqleditor.ZSqlEditor"
class="com.bbebfe.sqleditor.ZSqlEditor"
extensions="sql"
icon="icons/sqlfile.gif">
</editor>
</extension>
</plugin>
記得設置<editor>節的icon屬性,否則編輯器打不開。
可能你已經主要到,我們並沒有建立IEditorInput接口的子類,因爲我們並不需要通過某個Action來打開我們的編輯器,而是通過打開特定類型的文件來打開編輯器。
extensions="sql"描述了我們對什麼後綴的文件感興趣,通過Eclipse的File -> Open file菜單打開任意.sql文件,就會激活我們的編輯器。
·3.5 運行
試試我們的插件吧。記得在運行對話框的plug-ins中選中我們的com.bbebfe.sql插件。如果當前環境中已有以sql爲後綴的編輯器,你可以嘗試把extensions="sql"換成其他的形式的後綴。
運行後,在新打開的Eclipse環境中,通過File -> open file打開任意.sql文件,雖然沒有語法着色、代碼摺疊等功能,但已經能夠進行編輯了。而且還支持保存。
·4 總結
在本章中,我們搭建了編輯器的基本框架,並且獲得了一個可以運行的編輯器。我們感興趣的文件後綴是“sql”,你可以根據自己的需要,在Plugin.xml文件中配置你自己的後綴名。
下一章我們將讓編輯器支持語法着色。
·5 插件和源代碼
com.bbebfe.sql.jar是打包的插件,拷貝到你的Eclipse文件夾下就可以運行了。
com.bbebfe.sql.rar是源代碼工程,導入到你的Eclipse工程中即可。
·6 參考文獻
[美]Jim D’Anjou等,《Eclipse權威開發指南》,清華大學出版社
Eclipse示例:org.eclipse.ui.examples.javaeditor