在前面我介绍了在首选项中来对bstekIDE进行扩展(dorado studio插件定制扩展应用两则 ),这个扩展只能应付一些简单的基于已有的,静态的定制(比如修改前缀,修改已有组件的属性来得到一个新的组件等等),如果要实现更复杂的定制(比如通过自定义dataset,在加载数据的地方加入一些其他的业务信息),则可以通过我们提供的扩展点(com.bstek.ide.core.viewRules)以插件的方式来进行定制扩展.
在dorado studio Swing版本中,为了做到对view-rules.xml进行定制,一般的步骤是:先将写好的java打成jar包以及需要依赖的jar包放到studio的lib目录下,然后把自定义user-view-rules.xml文件放到studio的configs目录下即可
在插件版本中的做法基本类似,下面我们就具体做法进行介绍
在2007-11-07之后我们推出的插件版本中增加了一个扩展点com.bstek.ide.core.viewRules,它就是用来实现user-view-rules.xml配置文件的作用
首先我们需要先使用带有插件开发功能的PDE插件的Eclipse创建一个插件工程,具体步骤,可以参考"bstekIDE Eclipse插件扩展点应用介绍 "这篇文章的介绍
创建好插件工程之后,打开MANIFEST.MF文件,转到Dependencies设置页,添加依赖的插件工程,这里我们需要选择两个依赖插件: com.bstek.ide.core, com.bstek.libraries
接着是转到extensions设置页,点击add按钮,添加要使用的扩展点:com.bstek.ide.core.viewRules
如果你以前在dorado studio Swing版本下已经定义好了user-view-rules.xml文件,那么,我们可以直接将其copy到我们当前添加的扩展点下.但是还有一些小的地方需要修改
虽然dorado插件版和Swing版使用的xxx-view.xml配置文件大部分情况下是一致的,但是还是有少部分区别,一个是listener和objectClazz property定义加了个kind以及superClazz属性,这里的kind值目前均为java,而superClazz如同他的名字一样,就是在给属性dataset的listener属性生成一个java类的时候,指定的父类,对于dataset的listener一般为"com.bstek.dorado.data.AbstractDatasetListener", 另一个是function的clazz属性,在定义的时候注意一下区别,比如:
对于dataset来说,如果你的dataset的object属性指定的类是从com.bstek.dorado.data.db.AutoSqlDataset继承过来的,那么"Auto create fields"这个function的clazz属性要保持跟Dataset-AutoSql里面的"Auto create fields" function一致,其他的以此类推,如果是直接从AbstractViewDataset继承的,则function的clazz需要设置为com.bstek.ide.action.GenerateViewDatasetFieldAction
下面是我们为了与synchroflow工作流进行整合而自定义的几个dataset的plugin.xml配置文件
在这个插件配置文件中<rules></rules>节点下的配置基本上跟我们以前在Swing版本下的配置一样.
在自定义的dataset中,我们使用到了一些自己定义的java类,这些java类已经打包,为了插件能调用到,我们需要在当前工程下新建一个文件夹lib,然后将我们的java文件打成的jar包以及相关的依赖jar包放到lib目录下.此外,还给我们自定义的dataset一个新的图标,这个我们也要添加到当前工程下
在打包前,我们还需要对我们引用的jar包进行一下设置
打开MANIFEST.MF文件,转到Runtime设置页的classpath选项,点击"add"按钮,选中我们添加的两个jar包,得到如下的设置
因为默认情况下在build的时候不会包含我们添加的资源文件,所以我们应该在Build选项页的"Binary Build"中将view文件夹选中
最后一步就是打包(选中工程,选择右键"export..."->"Plugin-in Development"->"Deployable plug-ins and fragment"选项,然后next->finish),因为我们这里使用图片资源文件,因此在打包的时候需要将"Package plug-ins as individual JAR archive"选项去掉,打包成文件夹的形式
将打包完成的插件放到Eclipse安装目录下的plugins文件夹中,重新启动Eclipse即可