写一个你自己的编辑器 - 第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

 

 

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