快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-04
t; <xmi:XMI xmi:version="2.0"    xmlns:xmi="http://www.omg.org/XMI"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xmlns:org.eclipse.ve.internal.cde.decorators=             "http:///org/eclipse/ve/internal/cde/decorators.ecore"    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore"    xmlns:event="event.xmi">    <event:Add featureName="eStructuralFeatures">      <addedEObjects xsi:type="ecore:EReference" name="model" unsettable="true">      <eAnnotations xsi:type="org.eclipse.ve.internal.cde.decorators:BasePropertyDecorator"        cellEditorClassname=          "developerworks.ve.example.textitem/ \             developerworks.ve.example.textitem.TextItemModelEditor" />      </addedEObjects>    </event:Add> </xmi:XMI>

该文件中值得注意的几个地方地方:

name=“model”,建立了与名为 model 的属性的连接,即可以通过 setModel() 与 getModel() 访问该属性,这与前面编写的控件行为一致。

cellEditorClassname 一项,指向了定制化后的编辑器类,该属性的值,分割线“/”前为该编辑器所在插件的 id,分割线后为该编辑器的类路径。

通过上述几步操作,即可以用定制化的编辑器行为覆盖掉 BeanInfo 中缺省的编辑器行为,实现了对属性编辑的自由扩展。

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

时间:2011-03-06 IBM 王 浩

属性编辑器与 Java 代码的同步

属性编辑器与 Java 代码有同步的需求,即可以将已经生成的 Java 代码进行解析,将解析的结果赋给打开后的属性编辑器显示,同时又需要对用户在属性编辑器中输入的信息进行解析,并生成 Java 代码。这两个是互逆的过程。

Visual Editor 的核心部分,是描述被编辑控件的EMF模型,该模型描述了控件实例,控件之间的各种关系,以及可对控件进行编辑操作的各种属性等内容。该模型的实例实现了 org.eclipse.jem.internal.instantiation.base.IJavaInstance 接口。也就是所,上述的解析 Java 代码的过程,可以转化为解析 IJavaInstance 对象的过程;而生成 Java 代码的过程,也就是生成 IJavaInstance 对象的过程。

如何解析 IJavaInstance 对象?对于本例来讲,下面是解析的一个片段,可以看到,对 IJavaObjectInstance 对象的解析,就是对其主体构造函数的解析,因为 set 和 get 方法对该属性操作,会创建一个该属性对象对应的实例,该创建就是通过构造函数。解析出该构造函数,就可以还原该对象的内容。getArguments() 方法,就是获取该构造函数传入的参数,由这些参数,最终还原出该对象。

清单 7:解析 IJavaObjectInstance 对象

JavaAllocation allocation = ((IJavaObjectInstance) getValue()).getAllocation();    PTExpression exp = ((ParseTreeAllocation) allocation).getExpression();    PTClassInstanceCreation instance = ((PTClassInstanceCreation) exp);    PTStringLiteral stringLiteral = (PTStringLiteral) instance.getArguments().get(0);    String title = stringLiteral.getLiteralValue();    PTNumberLiteral numberLiteral = (PTNumberLiteral) instance.getArguments().get(1);    int max = Integer.parseInt(numberLiteral.getToken());    model = new TextItemModel(title, max);

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号