扩展Visual Editor的控件和属性 - 编程入门网
为属性名称和控件类,通过这两个信息就可以反射获取到控件类中某一属性特定的内容。该属性显示在属性视图中的效果如下图所示:
图 3:属性视图结构 对应代码来看: 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的控件和属性(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 扩展点
其中,path 指向保存 override 文件的路径。对应于 TextItem 而言,其 override 文件为 TextItem.override,该文件的目的就是由定制话的编辑行为覆盖掉原有属性的编辑行为。本例中的 TextItem.override 如下: 清单 6:Override 文件清单
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |