以开发带有视图功能的透视图插件为例,视图带有解析XML功能,采用JDOM方法实现。
首先,插件要实现XML解析以获取数据模型需要添加的库有:ant.jar , commons-io.jar , commom-lang.jar , jdom.jar , org.eclipse.jdt.debug.ui.jar , saxpath.jar , xlan.jar , xercesImpl.jar , xml-apis.jar , jaxen-core.jar , jaxen-jdom.jar .以上库需要加载到插件的build path和runtime中。插件扩展和依赖项主要有:perspectives , views , actionSets , commands , bindings , popupMenus , editorActions 等。
第一次开发Eclipse插件,对需要建的类准备不足,Demo做完之后,才发现需要将不同功能的类整理归包(目前是所有在perspective中的类都混在一个包中,比较混乱)。
大致将功能区块的包分为以下几个(位于xxx.xxxx.xxxx插件包中):perspective , view , activator , acttion , model , util(用于存放资源路径信息)。
首先应该将将要读取的XML文件中的对象属性集合成类,在之后的对XML文件的解析修改,读取或写入节点下信息的时候,都要用的对象类的基本构造方法以及get(),set方法;在对象类中需要实现IAdaptable接口,实现接口中的getAdapter()方法,才能对后续的对象属性视图的成功显示提供可能性,方法代码如下:
1 public Object getAdapter(Class adapter) { 2 if (adapter == IPropertySource.class) {3 return new EmployeePropertySource(this);4 }5 return null;6 }
这次的Demo因为是一个雇员管理插件,EMployee类继承自Object类,而属性视图中只能理解IPropertySource对象,Eclipse提供的org.eclipse.core.runtime.IAdapter接口为此提供了解决方法,它允许一个对象把它不理解的对象转换成另外一种可以询问和控制的类型对象,这就意味着在TableViewer中被选择的Employee对象可以按照属性视图的要求,翻译成为IPropertySource元素,从而无需对属性视图做任何修改。这是对Adapter模式的经典使用,Adapter模式是一种结构型模式,又称为包装器(Wrapper);很多情况下,为复用而设计的工具箱类不能被真正的复用仅仅是因为它的接口与应用领域所需要的接口不匹配而已,Adapter提供了恰当的方法将应用对象包装为工具箱类可以接受的接口。
创建透视图需要扩展org.eclipse.ui.perspectives的内容,新建的xxxPerspectiveFactory类实现了IPerspectiveFactory接口,在createInitialLayout(IPageLayout factory)中初始化透视图的布局,动作等。之后的一系列addxxx方法提供了应该在createInitialLayout中被调用的方法实现,通常要实现的有添加视图(Views)、视图快捷方式(ShotCuts)、初始配置(ActionSets)等;IPageLayout提供了一系列Eclipse内置的视图ID,包含BOOKMARKS , TASKLIST , EDITOR_AREA , NAVIGATE_ACTION , OUTLINE , PROP_SHEET , PROBLEM , PROGRESS_VIEW , PROJECT_EXPLORER , RES_NAV等等。
先到这里,下一篇交代数据模型管理包,包含Manager , ManagerEvent , ManagerListener等相关类。