`

[zt]Item Provider之二 Property Source

阅读更多

FROM:http://www.rcp.org.cn/bbs_topic.do?forumID=8&postID=7

这部分是Eclipse实现的比较复杂费解的一部分,我们知道, Eclipse通过property sheet来显示某个对象的现实的时候通常涉及以下几个类:
IPropertySource: 代表其属性要被显示的类,它会提供一个IPropertyDescripter列表,描述它有哪些属性要被显示。比如我们的“主机”。
IPropertyDescripter: 它描述了IProertySource每个属性的具体信息,例如类型和显示在property sheet上的属性名称,它也肩负着从IProertySource取值的责任。
IPropertySourceProvider:由property sheet调用,提供IProertySource作为其输入。
然而对于EMF的实现,有一套于上述接口类似的另外的接口,功能也类似:

IItemPropertySource 相当于IPropertySource
IItemPropertyDescriptor 相当于IPropertyDescripter
AdapterFactoryContentProvider 相当于IPropertySourceProvider

为什么这样做以及它如何做到的将在以后祥述。
Item Provider实现了IItemPropertySource,并且重写了其父类的方法getPropertyDescriptors():

java 代码
  1. public List getPropertyDescriptors(Object object) {   
  2. if (itemPropertyDescriptors == null) {   
  3. super.getPropertyDescriptors(object);   
  4.   
  5. addNamePropertyDescriptor(object);   
  6. addBandPropertyDescriptor(object);   
  7. addYearPropertyDescriptor(object);   
  8. addNetTypePropertyDescriptor(object);   
  9. addPricePropertyDescriptor(object);   
  10. addCommentsPropertyDescriptor(object);   
  11. add功能PropertyDescriptor(object);   
  12. add配件PropertyDescriptor(object);   
  13. }   
  14. return itemPropertyDescriptors;   
  15. }   

这个方法调用了其他几个生成的方法来创建ItemPropertyDescritpor,并且把它添加到itemProertyDescritptors列表中。默认情况下,所有的属性和非包含(不作为子节点显示的)的reference都将作为其属性被显示在propery sheet上。
下面是一个具体的方法:

java 代码
  1. protected void addNamePropertyDescriptor(Object object) {   
  2. itemPropertyDescriptors.add   
  3. (new ItemPropertyDescriptor   
  4. (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),   
  5. getResourceLocator(),   
  6. getString("_UI_主机_name_feature"),   
  7. getString("_UI_PropertyDescriptor_description""_UI_主机_name_feature""_UI_主机_type"),   
  8. MobilesPackage.eINSTANCE.get主机_Name(),   
  9. true,   
  10. ItemPropertyDescriptor.GENERIC_VALUE_IMAGE));   
  11. }   

它简单的通过构造器new了一个ItemPropertyDescriptor,它的构造器的参数包括:
· 创建Item provider的adapter factory或者它的root。
· 该属性在显示时的属性名,这也是它的ID。
· 属性的描述,当属性栏被选中时会显示在状态条里。
· 属性的feature。
· 是否允许被编辑。
· 属性的图标。

属性名和描述都是从配置文件中读出来的以支持国际化,比较有趣的是属性的描述的读取:

java 代码
  1. getString("_UI_PropertyDescriptor_description""_UI_主机_name_feature""_UI_主机_type")  

可以从plugin.property文件中分别读出这三个key的value:
_UI_PropertyDescriptor_description = The {0} of the {1}
_UI_\u4e3b\u673a_name_feature = Name
_UI_\u4e3b\u673a_type = \u4e3b\u673a

EMF用java.text.MessageFormat来读取_UI_PropertyDescriptor_description,{0}代表着_UI_主机_name_feature的值,{1}代表着_UI_主机_type的值。也就是说最后的结果会是:The Name of the 主机。
默认情况下所有的属性和非包含的reference都是可以编辑的,你可以通过修改ecore里的changeable属性来设置。
属性的图标将决定于它的类型,而非包含的reference的图标将由property descriptor找到reference对象的adapter,由它找到reference的label provider然后调用getImage()方法获得。
除了getPropertyDescriptors(),IItemPropertySource还包含其他两个方法,它们都由父类实现。第一个,getPropertyDescriptor(),它根据参数中传来的feature id返回特定的property descriptor,其实就是遍历getPropertyDescriptors()返回的列表找到第一个id相同的。另一个getEditableValue(),返回被遍记的值,你可以隐藏一部分不想被编辑的值。通常并不需要,所以缺省的实现对值没有做任何改变。
如果你希望添加更多的属性,你可以修改getPropertyDescriptors()方法。通过传给ItemPropertyDescriptor构造器的参数,你可以控制属性的名称,描述,图标,你甚至可以自己继承PropertyDescriptor,修改AdapterFactoryContentProvider来实现自己需要的属性编辑框,比如对于日期属性,将弹出一个calendar共用户选择。具体方法也将在以后的文章中描述。
分享到:
评论

相关推荐

    zt411-zt421-ug-zhcn_ZT411/ZT421_斑马打印机手册_

    斑马打印机ZT411和ZT421是工业级条码和标签打印机,广泛应用于制造业、物流、零售业等对打印质量和效率有高要求的领域。这两款打印机以其出色的性能、耐用性和易用性赢得了用户的信赖。这份中文手册详细地介绍了ZT...

    ZT213/ZT213LEEA规格书V2.10-低功耗RS232多通道USB收发器/驱动器芯片手册

    《ZT213/ZT213LEEA:低功耗RS232多通道USB收发器/驱动器芯片详解》 ZT213/ZT213LEEA是一款专为低功耗应用设计的RS232多通道USB收发器和驱动器芯片,广泛应用于数据通信、工业控制、物联网设备等领域。本文将深入...

    Zebra ZT230 条码打印机驱动

    - ZT230系列打印机支持多种条码格式,包括一维条码(如Code 128、UPC-A、EAN-13等)和二维条码(如QR Code、DataMatrix等),适用于物流、库存管理、零售业等多种场景。 5. **高级功能** - 打印机支持自定义图形...

    ZT410打印机IP地址设置网络打印机

    ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机ZT410打印机IP地址设置网络打印机

    ZT7548 Datasheet Rev.1.0.3.pdf

    ZT7548是一款第五代电容式触控屏幕控制器,支持30x18或18x30的通道配置,可以同时检测最多10个触点。该控制器能够与最多8个键与TSP(触控屏面板)或FPC(柔性印刷电路板)模式一起工作,在多点触控时无扫描率下降的...

    斑马zt410中文库

    斑马(Zebra)ZT410是一款先进的桌面级条码打印机,被广泛应用于物流、零售、医疗、制造业等多个行业。这款打印机以其高效、耐用和易于操作的特点深受用户喜爱。"斑马zt410中文库"指的是为ZT410打印机特别设计的中文...

    斑马打印机ZT210用户指南

    "斑马打印机ZT210用户指南" 本用户指南旨在为Zebra ZT210/ZT220/ZT230打印机的用户提供操作和维护指南,该设备是一种工业级的条码打印机,具有高速打印、高速处理和高质量打印输出等特点。 版权信息 本手册的版权...

    斑马ZT510打印机驱动文件

    斑马ZT510打印机驱动文件

    证通ZT598金属键盘开发资料.rar

    证通ZT598是一款专门用于金融、安防等领域,具备高安全性和可靠性的金属键盘设备。这款设备的开发资料包含在"证通ZT598金属键盘开发资料.rar"压缩包中,主要适用于那些进行嵌入式系统开发的工程师。在深入探讨其开发...

    斑马打印机(ZT210).docx

    斑马打印机ZT210是一款专业的工业级条形码和标签打印机,广泛应用于物流、零售、医疗等行业的标签制作。以下是对如何设置和使用斑马ZT210打印机的详细步骤: 首先,我们需要安装电脑驱动。双击下载好的驱动程序文件...

    RS485通信芯片zt13085e的原理图库和PCB库

    RS485通信芯片ZT13085E是一种常用的工业级串行通信接口芯片,主要用于构建远程、多节点的通信网络。在工业自动化、楼宇自动化、物联网设备等领域有广泛应用。ZT13085E的设计目标是提供一种高效、可靠的数据传输方式...

    zt-exec-1.9-API文档-中文版.zip

    赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:zt-exec-1.9-javadoc-API文档-...

    斑马zt210打印机驱动 v5.1.07.5146 官方版

    斑马zt210是一款专为中国市场设计的工业条码打印机,非常适合不需要频繁更换标签的条码标签应用。这里给大家提供斑马zt210驱动下载,推荐有需要的用户下载安装。斑马zt210打印机优势:◆ 节省空间* 小巧紧凑和流线型...

    ZT210 230加载介质和碳带

    《ZT210 230加载介质和碳带》 在条形码和标签打印领域,Zebra公司的ZT210和ZT230打印机是广泛应用的设备,以其可靠性和效率赢得了广大用户的青睐。这两个型号的打印机都属于入门级工业级条码打印机,适用于各种商业...

    zt-exec-1.9-API文档-中英对照版.zip

    赠送jar包:zt-exec-1.9.jar; 赠送原API文档:zt-exec-1.9-javadoc.jar; 赠送源代码:zt-exec-1.9-sources.jar; 赠送Maven依赖信息文件:zt-exec-1.9.pom; 包含翻译后的API文档:zt-exec-1.9-javadoc-API文档-...

    zebra ZT400系列打印机技术手册

    ### zebra ZT400系列打印机技术手册 #### 知识点概述: 1. **版权及法律声明**:Zebra ZT400系列打印机技术手册的版权及相关软件固件的所有权归属ZIH Corp.及其许可证持有者,未经授权复制会受到法律制裁。 2. **...

    斑马Zebra ZT510 驱动下载安装.exe

    斑马Zebra ZT510 驱动下载安装 使用中有任何问题可以关注并私信,如果资源对您有帮助记得关注收藏好评哟!

    斑马zt410打印机驱动 v5.1.7 官方最新版

    斑马zt410驱动是由斑马官方推出的打印机驱动程序,如果你的打印机与电脑的连接出现了异常而导致打印机无法正常的使用,下载此驱动能帮你很好的解决这个问题,欢迎购买了此型号打印机的朋友下载使用!斑马zt410打印机...

    zt200-ug-zh-cn

    ### 斑马打印机ZT210/ZT220/ZT230用户指南关键知识点 #### 一、版权及商标信息 - **版权声明**:该用户指南及相关软件、固件版权归属ZIH Corp.及其许可证发放者。未经授权复制会受到法律制裁,包括最长一年的监禁...

Global site tag (gtag.js) - Google Analytics