快速业务通道

扩展Visual Editor的控件和属性 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
为属性名称和控件类,通过这两个信息就可以反射获取到控件类中某一属性特定的内容。该属性显示在属性视图中的效果如下图所示:

图 3:属性视图结构

扩展Visual Editor的控件和属性 - 编程入门网

对应代码来看:

setDisplayName() 用以定义该属性在属性视图中显示的名称,如上图中所示“TextItem notifier”;

setShortDescription() 用以设置对该属性的文字描述,该描述会在选中该属性时显示在状态栏的左方,如上图所示“Beep when the length exceed specified.”;

setValue() 设置该属性对应的值。因为本属性是布尔型,所以希望做出下拉列表框的样式,所以 setValue() 方法的 key 设置为了枚举类型“enumerationValues”,后续的六个参数每三个为一组,表达下拉列表框中的一个选项。它们的意思分别是显示的字符串、实际对应的值以及与生成代码对应的初始化字符串。以前三个参数而言,“No Beep”是显示的字符串,其对应的值是 false,即调用该控件的 setBeep(false),而在代码编辑区生成的代码行如下:

textitem.setBeep(developerworks.ve.example.textitem.TextItem.NO_BEEP);

在 BeanInfo 类中,体现对属性描述的方法是 getPropertyDescriptors(),它返回上文所述的 PropertyDescriptor 的一个数组,每个 PropertyDescriptor 都包含了对该控件的某个属性的具体描述。

属性编辑器的实现

对 TextItem 的 TextItemModel 属性来说,它是一个定制的属性类,而不是简单的数据类型或者字符串类型,对于它,用户可能希望拥有独立的编辑器对其进行编辑,实现的效果大概像下面的样子:

图 4:属性编辑器预览

扩展Visual Editor的控件和属性 - 编程入门网

扩展Visual Editor的控件和属性(5)

时间:2011-03-06 IBM 王 浩

该属性编辑对话框是 TitleAreaDialog 的一个实现,实现过程略去不谈,如何在属性视图中激活该对话框?

属性视图中每个属性都是 key 和 value 的集合,对于 Value 的设置,可以是简单的文本框,比如字符串型,整数型等,也可以是下拉列表框,如布尔型等。与此同时,也可以实现为弹出对话框的编辑框。该种类的编辑框可以是 JFace 的 DialogCellEditor 的实现子类,并继承 Visual Editor 的 INeedData 接口。DialogCellEditor 是抽象类,它的唯一的抽象方法就是 openDialogBox(),用以打开上图所示的对话框。

定制化的编辑框,如何建立与控件相应属性的连接?这需要借助 Visual Editor 的 override 机制。BeanInfo 提供了 override 的技术,用以扩展属性的编辑行为。Visual Editor 通过 override 文件来扩展出丰富的可定制化的编辑器。

向 Visual Editor 扩展 override 文件,需要对“org.eclipse.jem.beaninfo.registrations”扩展点进行扩展,使其能够识别扩展的 Override 文件的位置。本例中的扩展如下:

清单 5:org.eclipse.jem.beaninfo.registrations 扩展点

<extension      point="org.eclipse.jem.beaninfo.registrations">     <registration        container="developerworks.ve.example.textitem">      <override         package="developerworks.ve.example.textitem"         path="overrides/developerworks/ve/example/textitem">      </override>     </registration>    </extension>

其中,path 指向保存 override 文件的路径。对应于 TextItem 而言,其 override 文件为 TextItem.override,该文件的目的就是由定制话的编辑行为覆盖掉原有属性的编辑行为。本例中的 TextItem.override 如下:

清单 6:Override 文件清单

<?xml version="1.0" encoding="UTF-8"?&g

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号