集成Java控件

    可以把Java API中的SWT控件包装成模型。

1.创建模型

    创建一个事物模型(一般是xworker.lang.MetaDescritpor3),定义Java API中相关对象所需要设置的属性和子节点等。

    比如XWorker的Shell模型就定义了Shell对象常用的需要设置的属性。

2.编写create方法

    编写模型的create方法,我们建议为了性能尽量使用JavaAction来编写。

2.1.基本代码

    create方法中的基本代码是创建相应的Java对象,根据模型设置Java对象属性等,最后返回创建的Java对象。

3//示意代码
public static Shell create(ActionContext actionContext){
     //获取模型
     Thing self = actionContext.getObject("self");

     //创建Java对象
     Shell shell = new Shell(diaplsy, SWT.NONE);

     //根据模型属性设置Java对象
     Point sizePoint = UtilSwt.createPoint(self.getString("size"));
     if(sizePoint != null) shell.setSize(sizePoint);

     //保存到到全局变量上下文中
     actionContext.g().put(self.getMetadata().getName(), shell);

     //返回对象
     return shell;
}

2.2.属性常量和变量

    模型的属性的值可以是常量,也可以是变量,如果是变量,那么可以使用var、ognl、action等等表达式。

//常量
int width = self.getInt("width");

//变量,getXXX方法三个参数的,有名字、默认值和变量上下文的通常是获取变量值
int width = self.getInt("width", 10,  actionContext);

2.3.执行创建子节点

    如果模型允许有子节点,比如控件的布局子节点等,那么需要在create方法中执行子节点的create方法。

//把Java对象以变量名parent放到当前的变量栈中
actionContext.peek().put("parent", shell);

//执行子节点的create方法
for(Thing child : self.getChilds()){
    child.doAction("create", actionContext);
} 

2.4.绑定到设计器

    如果希望控件可以设计器所管理,那么调用Designer的attach()方法。

//绑定到designer,使用鼠标中键双击可以打开菜单,可以通过菜单编辑模型等
if(!shell.isDisposed()){
    Designer.attach(shell, self.getMetadata().getPath(), actionContext);
}

3.注册新模型

    把新模型以child的方式注册到xworker.swt.Widgets模型下。

 

Copyright ©  2007-2014 XWorker.org  版权所有

沪ICP备08000575号