基于Eclipse平台“编辑助手”插件开发与实现

以下是资料介绍,如需要完整的请充值下载.
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
1.无需注册登录,支付后按照提示操作即可获取该资料.
2.资料以网页介绍的为准,下载后不会有水印.资料仅供学习参考之用.
密 惠 保
资料介绍:
摘 要
Eclipse是IBM向开放源码社区捐赠的开发框架,一个基于Java的可扩展开发平台,这个平台本身是由多个子系统构成的,而每个子系统又是由一个或多个建立在平台运行库(Platform Runtime)之上的插件实现的。
Eclipse是一个优秀的集成开发环境,它的插件扩展机制更是它的特点和优势所在。Eclipse本身提供了一个用于开发插件的框架,本论文目的就在于从了解Eclipse的平台体系结构开始,逐步深入到它的插件扩展机制以及插件的工作原理,并在Eclipse提供的插件开发环境中开发一个小型插件。
论文的主要工作在于熟练掌握插件扩展点的运用,同时设计并实现一个具有灵敏辅助提示的java源文件编辑器和提供搜索功能的插件,通过实现特定的扩展点与Eclipse平台实现无缝集成。本论文所做的具有探索性和创新性的工作可为读者更快更好地熟悉Eclipse插件开发提供一个实际的、可视化的参考,与读者共享在Eclipse平台上开发的乐趣所在。
关键字: Eclipse,插件,编辑器,内容灵敏提示,搜索1.4 ECLISPE插件开发概述
1.4.1 插件开发简介
插件的无处不在,像音视频播放软件WINAMP绚丽多彩的皮肤插件,Windows Media Player的众多外观插件以及能够增强音效和视频功能的插件等等。但是插件不仅在于只是主软件的边角料,Eclipse插件就与众不同。
Eclipse中有三个最吸引人的地方:一是创新性的图形API,即SWT/JFace;二是插件机制;三是利用Eclipse插件机制开发的众多功能强大的插件。Eclipse也是对插件概念发挥得最炉火纯青的一个软件,插件成就了Eclipse成功的今天。
Eclipse的内核很小,其他功能都是基于这个内核上的插件,如Eclipse自带的JUnit、Ant等。而且Eclipse还开放了自己的插件机制,并提供了良好的插件开发环境,让用户可以轻松开发Eclipse插件。Eclipse的插件能够达到很高的程度,如Eclipse上流行的插件,用于UML建模的Together for Eclipse、用于J2EE的Lomboz和MyEclipse、IBM的Java开发工具WSAD、SYSDEO公司的Tomcat for Eclipse服务器插件等。这些全是Eclipse的插件。甚至程序员可以把Office、Photoshop等软件做成Eclipse的插件, Eclipse中的绘图API,即Draw2D的功能也是很强的。尽管Eclipse主要是一个Java开发环境,但其体系结构确保了对其它编程语言的支持。比如C/C++开发工具箱(C/C++ Development Toolkit,CDT),这是可用于Eclipse的最佳 C/C++ 工具箱。
Eclipse各式插件的出现正如雨后春笋,Eclipse本身已经超越了开发环境的概念,而将成为一个通用的平台,让尽量多的软件作为插件集成在上面,成为未来的集成桌面环境。 [资料来源:http://www.THINK58.com]
1.4.2 插件开发的优势和不足
把一个软件写成Eclipse插件有很多好处。对于用户来说Eclipse的使用环境比较友好,前面谈到的SWT/JFace中还是比较基本的界面元素,像Eclipse中的视图、编辑窗、停泊窗这些界面如果用Application的方式实现会很麻烦,但用Eclipse插件来实现,则不费吹灰之力。因此,Eclipse插件最大的优点就是界面友好、风格统一,特别是对于熟悉Eclipse操作的用户,这种优势会更明显。其次插件的安装和卸载都很方便,详见附录。
当然将软件写成插件形式也有一定的缺陷。比如插件必须依附于Eclipse运行,如果要安装插件就得首先安装Eclipse;并且插件和Eclipse融合在一起,原Eclipse的一些菜单和工具栏无法完全屏蔽。
ECLIPSE平台插件扩展机制的实现
2.2.1适配器模式简介
Adapter(适配器模式)的意图在于将一个类的接口转换成客户希望的另一个口。Adapter 模式使得一些类由于接口不兼容而不能一起工作成为过去。
这个模式适用于以下环境:
1.想使用一个已经存在的类,而它的接口不符合需求。
2.想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
2.2.2 IAdaptable接口
IAdaptable是Eclipse里一个非常重要的接口。核心运行时的类型扩展机制 IAd-
aptable需要通用,做到开源,无数的功能会在平台扩展,Eclipse为了达到这一点使用了大量的设计模式。
IAdaptable这个接口从命名去看是提供适配,其实早期的代码它的名字翻译成中文是扩展,Eclipse在不知道将会被怎样扩展的情况下使用了适配器工厂模式。
在Eclipse 中使用IAdaptable 接口的方式有两种:
1.某个类希望提供新的接口,但又不希望将其暴露在API 中,在这种情况下,
IAdaptable 接口中的方法getAdaptor()方法将由本类实现。(希望支持新的接口,而又不想把已经发布的API 造成影响,这种机制很有用)
2.外界要求某个类提供新的服务,这种情况下不需要修改现有类的代码,getAdaptor()由一个工厂提供。
创建适配器工厂(IAdapterFactory),注册到适配器管理器(IAdapterManager),代码如下:
IadapterFactory factory = new AdapterFactory();
IadapterManager manager = Platform.getAdapterManager();
Manager.registerAdapters(factory,Ifile.class);
适配对象需要实现platformobject:
public Object getAdapter(Class adapter)
{ [来源:http://think58.com]
return InternalPlatform.getDefault().getAdapterManager().getAdapter(this, adapter); think58.com
}
若未实现,则需要下列调用:
Platform.getAdapterManager().getAdapter(this,adapter);
要在运行时为一个已有的类增加功能,只需要定义一个用来转换的工厂类,然后把方法注册到Platform的AdapterManager即可。这种方式在保持UI组件和非UI组件的分离方面特别有用。例如在org.rcpapps.rcpnews.ui和org.rcpapps.rcpnews这两个plugin里,前者的IPropertySource需要与后者的数据对象(data object)相关联,当前者初始化时,它将IPropertySource注册到Platform,当数据对象在导航器(navi-gator)里被选中的时候,属性视图里就会显示正确的属性[3]。
Eclipse是IBM向开放源码社区捐赠的开发框架,一个基于Java的可扩展开发平台,这个平台本身是由多个子系统构成的,而每个子系统又是由一个或多个建立在平台运行库(Platform Runtime)之上的插件实现的。
Eclipse是一个优秀的集成开发环境,它的插件扩展机制更是它的特点和优势所在。Eclipse本身提供了一个用于开发插件的框架,本论文目的就在于从了解Eclipse的平台体系结构开始,逐步深入到它的插件扩展机制以及插件的工作原理,并在Eclipse提供的插件开发环境中开发一个小型插件。
论文的主要工作在于熟练掌握插件扩展点的运用,同时设计并实现一个具有灵敏辅助提示的java源文件编辑器和提供搜索功能的插件,通过实现特定的扩展点与Eclipse平台实现无缝集成。本论文所做的具有探索性和创新性的工作可为读者更快更好地熟悉Eclipse插件开发提供一个实际的、可视化的参考,与读者共享在Eclipse平台上开发的乐趣所在。
关键字: Eclipse,插件,编辑器,内容灵敏提示,搜索1.4 ECLISPE插件开发概述
1.4.1 插件开发简介
插件的无处不在,像音视频播放软件WINAMP绚丽多彩的皮肤插件,Windows Media Player的众多外观插件以及能够增强音效和视频功能的插件等等。但是插件不仅在于只是主软件的边角料,Eclipse插件就与众不同。
本文来自think58 [资料来源:http://think58.com]
Eclipse中有三个最吸引人的地方:一是创新性的图形API,即SWT/JFace;二是插件机制;三是利用Eclipse插件机制开发的众多功能强大的插件。Eclipse也是对插件概念发挥得最炉火纯青的一个软件,插件成就了Eclipse成功的今天。
Eclipse的内核很小,其他功能都是基于这个内核上的插件,如Eclipse自带的JUnit、Ant等。而且Eclipse还开放了自己的插件机制,并提供了良好的插件开发环境,让用户可以轻松开发Eclipse插件。Eclipse的插件能够达到很高的程度,如Eclipse上流行的插件,用于UML建模的Together for Eclipse、用于J2EE的Lomboz和MyEclipse、IBM的Java开发工具WSAD、SYSDEO公司的Tomcat for Eclipse服务器插件等。这些全是Eclipse的插件。甚至程序员可以把Office、Photoshop等软件做成Eclipse的插件, Eclipse中的绘图API,即Draw2D的功能也是很强的。尽管Eclipse主要是一个Java开发环境,但其体系结构确保了对其它编程语言的支持。比如C/C++开发工具箱(C/C++ Development Toolkit,CDT),这是可用于Eclipse的最佳 C/C++ 工具箱。
Eclipse各式插件的出现正如雨后春笋,Eclipse本身已经超越了开发环境的概念,而将成为一个通用的平台,让尽量多的软件作为插件集成在上面,成为未来的集成桌面环境。 [资料来源:http://www.THINK58.com]
1.4.2 插件开发的优势和不足
把一个软件写成Eclipse插件有很多好处。对于用户来说Eclipse的使用环境比较友好,前面谈到的SWT/JFace中还是比较基本的界面元素,像Eclipse中的视图、编辑窗、停泊窗这些界面如果用Application的方式实现会很麻烦,但用Eclipse插件来实现,则不费吹灰之力。因此,Eclipse插件最大的优点就是界面友好、风格统一,特别是对于熟悉Eclipse操作的用户,这种优势会更明显。其次插件的安装和卸载都很方便,详见附录。
当然将软件写成插件形式也有一定的缺陷。比如插件必须依附于Eclipse运行,如果要安装插件就得首先安装Eclipse;并且插件和Eclipse融合在一起,原Eclipse的一些菜单和工具栏无法完全屏蔽。
ECLIPSE平台插件扩展机制的实现
2.2.1适配器模式简介
Adapter(适配器模式)的意图在于将一个类的接口转换成客户希望的另一个口。Adapter 模式使得一些类由于接口不兼容而不能一起工作成为过去。
这个模式适用于以下环境:
1.想使用一个已经存在的类,而它的接口不符合需求。
2.想创建一个可以复用的类,该类可以与其他不相关的类或不可预见的类(即那些接口可能不一定兼容的类)协同工作。
3.(仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可能对每一个都进行子类化以匹配它们的接口。对象适配器可以适配它的父类接口。
think58好,好think58
[来源:http://think58.com]
2.2.2 IAdaptable接口
IAdaptable是Eclipse里一个非常重要的接口。核心运行时的类型扩展机制 IAd-
aptable需要通用,做到开源,无数的功能会在平台扩展,Eclipse为了达到这一点使用了大量的设计模式。
IAdaptable这个接口从命名去看是提供适配,其实早期的代码它的名字翻译成中文是扩展,Eclipse在不知道将会被怎样扩展的情况下使用了适配器工厂模式。
在Eclipse 中使用IAdaptable 接口的方式有两种:
1.某个类希望提供新的接口,但又不希望将其暴露在API 中,在这种情况下,
IAdaptable 接口中的方法getAdaptor()方法将由本类实现。(希望支持新的接口,而又不想把已经发布的API 造成影响,这种机制很有用)
2.外界要求某个类提供新的服务,这种情况下不需要修改现有类的代码,getAdaptor()由一个工厂提供。
创建适配器工厂(IAdapterFactory),注册到适配器管理器(IAdapterManager),代码如下:
IadapterFactory factory = new AdapterFactory();
IadapterManager manager = Platform.getAdapterManager();
Manager.registerAdapters(factory,Ifile.class);
适配对象需要实现platformobject:
public Object getAdapter(Class adapter)
{ [来源:http://think58.com]
return InternalPlatform.getDefault().getAdapterManager().getAdapter(this, adapter); think58.com
}
若未实现,则需要下列调用:
Platform.getAdapterManager().getAdapter(this,adapter);
要在运行时为一个已有的类增加功能,只需要定义一个用来转换的工厂类,然后把方法注册到Platform的AdapterManager即可。这种方式在保持UI组件和非UI组件的分离方面特别有用。例如在org.rcpapps.rcpnews.ui和org.rcpapps.rcpnews这两个plugin里,前者的IPropertySource需要与后者的数据对象(data object)相关联,当前者初始化时,它将IPropertySource注册到Platform,当数据对象在导航器(navi-gator)里被选中的时候,属性视图里就会显示正确的属性[3]。