软件开发人员离不开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中:
记得设置<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