Eclipse 源代码阅读笔记1 - 概览

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
 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。将它的继承关系整理可以得到

 

IWorkbenchPart
 Workbench
现在可以仔细看看WorkbenchPart了。
public abstract class WorkbenchPart extends EventManager implements
  IWorkbenchPart3, IExecutableExtension, IWorkbenchPartOrientation
 
WorkbenchPart
 WorkbenchPart

 

这里实现了一个基本的WorkbenchPart,如果要实现一个WorkbenchPart,只需要覆盖两个抽象方法即可。public abstract void createPartControl(Composite parent)用由生成界面, public abstract void setFocus()用于响应获取焦点。

下面再看看类EditorPart

 

EditorPart
这应该很清晰了,这个类提供了对打开和保存的支持。Eclipse有着非常灵活的框架,这里并不是打开和保存文件,而是把我们通常的文件抽象成Input和Output,这样的好处自然不用多说,比如可以打开URL。
 
下面是AbstractTextEditor,这是个大家伙,这将是阅读的一个重点,我会在接下来的文章中继续分析。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值