Eclipse从3.0开始,就引入了OSGi框架作为其运行框架,虽然之前Eclipse也有一套非常精巧的框架,但笔者觉得没有太大的必要再学习以前的框架,所以直接学习最新的Eclipse版本的源代码。
从www.elcipse.org上下载到最新的Eclipse Plugin Development项目包,这里面包含了eclipse的源代码,笔者下载是为3.5.1,解压运行。阅读代码当然最好有参考,Eclipse自带的帮助文档就是很好的参考。当然还有eclipse项目的主页,这上面有很多有用的资源,扯远了,回到Eclipse,为了能在Eclipse里打开源代码,先建立一个插件工程(File->New...->Plug-in Project)。
打开META-INF下的MANIFEST.MF文件,
打开Dependencies选单,添加org.eclipse.jdt,org.eclipse.jdt.ui,保存,现在就可以用Ctrl+Shift+T打开一个类了。笔者的方法不是最好的,有更好方法欢迎指正。
MANIFEST.MF
|
Elcipse源代码非常庞大,从哪里入手呢?JDT是每个使用Eclipse开发Java应用的人最常用的Eclipse部件之一,就从这个开始吧。源代码在哪里呢?猜吧,Ctrl+Shift+T打开类型打开对话框,org.eclipse.jdt.ui.javaeditor,选择JavaEditor,呵呵就是它了,这就是我们日常使用的那个功能强大的Java编辑器了。
打开一看,好大啊,从哪里开始呢?先看看其父类AbstractDecoratedTextEditor,不行还是太复杂,再看其父类StatusTextEditor,还是再上!AbstractTextEditor,再上EditorPart,好了,到这个类能看懂了。
在Eclipse中窗口中的东西除了工具栏,菜单状态栏这些东西之外,构成Eclipse的UI的部件叫WorkbenchPart,主窗口中有两种部件,一种叫Editor就是我们能使用输入设备编辑其内容的容器,另一种叫View,就是只给显示用的(这不绝对,其实很多View是可以通过不同方法改变其中内容的)。
public abstract class EditorPart extends WorkbenchPart implements IEditorPart
既然是阅读代码就不怕深入,再看看WorkbenchPart 这是一个抽象类,继承自EventManager,实现了IWorkbenchPart3,而IWorkbenchPart3继承自IWorkbenchPart2,IWorkbenchPart2 继承自IWorkbenchPart。将它的继承关系整理可以得到
Workbench
现在可以仔细看看WorkbenchPart了。
public abstract class WorkbenchPart extends EventManager implements
IWorkbenchPart3, IExecutableExtension, IWorkbenchPartOrientation
|
这里实现了一个基本的WorkbenchPart,如果要实现一个WorkbenchPart,只需要覆盖两个抽象方法即可。public abstract void createPartControl(Composite parent)用由生成界面, public abstract void setFocus()用于响应获取焦点。
下面再看看类EditorPart
这应该很清晰了,这个类提供了对打开和保存的支持。Eclipse有着非常灵活的框架,这里并不是打开和保存文件,而是把我们通常的文件抽象成Input和Output,这样的好处自然不用多说,比如可以打开URL。
下面是AbstractTextEditor,这是个大家伙,这将是阅读的一个重点,我会在接下来的文章中继续分析。
|