◆扩展(extension):对扩展点的实现。每个插件至少实现了一个扩展点。
1.4.2 Eclipse插件的通信机制
插件之间的通信是通过扩展点来实现的。首先插件A声明了扩展点P及其实现规则接口I。插件B如果要扩展插件A的扩展点P,则生成一个实现接口I的类C,从而实现对P的扩展。在实际运行时,插件A找到类C并实例化,然后调用其实现了接口I中的方法。
图2 插件的通信机制
当需要与实现某扩展点的插件通信时,根据实现扩展的插件清单plugin.xml中extension标签声明中的“class”属性查找并装入类,再根据实现扩展类的规则来调用该类中的方法,从而实现了扩展。
2.1 开发插件
利用PDE可以方便快捷把应用程序开发成插件,打包后放到plugins目录下,Eclipse启动时会找到相应的插件。这种方式可开发GUI和非GUI插件。如开发GUI插件,一般是对平台的操作组(actionSets)进行扩展,实现在菜单栏中添加菜单项。然后提供透视图、视图、编辑器的扩展。其过程如下。使用这种方式开发的应用只能作为Eclipse的插件运行,必须安装Eclipse。
插件开发的流程
1)决定插件如何与平台集成
2)标识需要进行添加的扩展点以便与用户的插件进行集成
3)根据扩展点的规范来实现这些扩展。如实现扩展点所要求的特定的接口。
4)提供清单文件(plugin.xml),它描述用户正在提供的扩展以及代码的封装。Eclipse就是解析这个文件来加载插件的。
2.2 开发RCP应用
胖客户端程序(RCP)是指运算和商务逻辑是在客户端实现的应用,相反的在服务器端实现的称为瘦客户端程序。
Eclipse RCP提供了一个通用的工作台,开发人员可以扩展该工作台来构造自己的应用程序。利用RCP可以开发出独立的应用,从而脱离了Eclipse平台的IDE环境。一个RCP至少要实现一个插件,并且可以使用与 Eclipse IDE 相同的用户界面元素。运行Eclipse RCP不需要安装Eclipse。
开发Eclipse RCP的步骤:
1)确定扩展点。插件需要实现哪些扩展点。
2)编写插件清单plugin.xml。
3)生成组件类来实现扩展。
4)创建WorkbenchAdvisor 类。构建 RCP的核心任务之一就是创建一个实现抽象类WorkbenchAdvisor的类。WorkbenchAdvisor负责配置工作台,当执行 RCP 应用程序时,将显示该工作台。
5)接下来需要创建Application类。它相当于与Java类中的main方法,是RCP应用程序的主要入口点,需要定义org.eclipse.core.runtime.applications 扩展点,并实现IPlatformRunnable接口。