寫一個你自己的編輯器 - 第1章:前言

    軟件開發人員離不開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 環境搭建

      在某些地方,比如工程命名,類命名等,你可以取不同的名字,但我建議你最好跟我取一樣的名稱,可以避免不必要的麻煩。待你熟悉代碼後再隨心所欲。

·31 建立project

Ø       新建一個Plugin project

Ø       工程命名com.bbebfe.sql

·32 添加插件依賴

Ø       雙擊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

·33 新建編輯器類ZSqlEidtor,繼承AbstractDecoratedTextEditor

    AbstractDecoratedTextEditor類本身提供了大量適合於代碼編輯器使用的功能,因此我們的編輯器繼承自它。類關係圖如下:

    此時我們還不需要爲ZSqlEidtor類編寫任何代碼,AbstractDecoratedTextEditor已經提供了足夠的能力來打開一個文本編輯器。

·34 編寫plugin.xml文件

    此時工程裏可能還沒有plugin.xml文件,因爲自從Eclipse遵循OSGi標準後,就將plugin.xml文件的大部分功能移到MANIFEST.MF文件中。

    現在使用File -> new -> file,創建一個plugin.xml文件。然後拷貝如下文本到plugin.xml中:

    

<?xml version="1.0" encoding="UTF-8"?>

<?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"描述了我們對什麼後綴的文件感興趣,通過EclipseFile -> Open file菜單打開任意.sql文件,就會激活我們的編輯器。

 

·35 運行

    試試我們的插件吧。記得在運行對話框的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

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章