使用动态模型编写SWT & RAP应用1

1.基本概念

    动态模型是一种面向对象的标记语言,可以在运行时编程。它使用XML这样结构化数据作为模型,模型同时也是对象,模型有属性和可以执行的行为。

    SWT是Eclipse的项目,用于编写桌面程序。

    RAP是Eclipse的项目,它可以让SWT程序在浏览器中运行。

    XWorker是动态模型的IDE和开发环境,也包含了各种模型库。

    动态模型引擎X-Meta和XWorker都是Apache2.0开源协议。

2.示例

   示例截图。

    

    示例在线网址,http://www.xworker.org/do?sc=xworker.app.orgweb.web.Index&id=1828

3.开发环境设置

3.1.下载XWorker

     XWorker是动态模型的开发环境,使用XWorker开发RAP程序需要先下载和安装XWorker。

     XWorker的下载和安装地址:http://www.xworker.org/do?sc=xworker.app.orgweb.web.Index&id=175

3.2.创建模型项目

    XWorker下载和安装完毕后,准备一个空目录,创建一个名为dml.prj的空文件,表示该目录现在是一个动态模型的项目根目录。

3.3.运行Jetty

     XWorker内置了Jetty,在项目目录下创建jetty.dml文件,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<SimpleHttpServer name="TestLongConnectioJettyServer" descriptors="xworker.http.server.SimpleHttpServer"
     port="8080" resourcesForCopy="fckeditor,js/xworker,js/jquery,js/syntaxhighlighter" 
     contextPath="/test">
</SimpleHttpServer>

  其中port="8080"是端口号,contextPath="/text"是web应用的路径,启动后项目在浏览器中的地址是:http://localhost:8080/test/。

    在控制台下执行下面的命令来运行jetty。

#windows
dml-rap jetty

#linux
dml-rap.sh jetty

    注意运行前需要确保已正确安装了XWorker。

3.4.创建在线模型编辑器

    在项目目录下创建一个名为Admin.dml的文件,其内容如下。注意文件的编码为UTF-8。

<?xml version="1.0" encoding="utf-8"?>

<RwtWidget name="Admin" _xmeta_id_="903" descriptors="xworker.swt.rwt.RwtWidget">
    <Shell name="shell" _xmeta_id_="126" descriptors="xworker.swt.widgets.Shell" text="登录"
         CLOSE="false" MIN="false" MAX="false" RESIZE="true" width="640" height="480" pack="true">
        <GridLayout name="shellGridLayout"></GridLayout>
        <ThingForm name="form" column="1">
            <Thing>
                <attribute name="loginName" label="登录名" size="40" validateAllowBlank="false"
                     blankText="登录名不能为空!" en_label="LoginName"></attribute>
                <attribute name="password" label="密码" inputtype="password" size="40" validateAllowBlank="false"
                     blankText="请输入密码!" en_label="Password"></attribute>
            </Thing>
        </ThingForm>
        <Composite name="buttonComposite">
            <GridData name="GridData" style="FILL_HORIZONTAL" horizontalAlignment="END"></GridData>
            <RowLayout name="RowLayout"></RowLayout>
            <Button name="loginButton" text="lang:d=登录&amp;en=Login">
                <Event name="onSelection">
                    <GroovyAction name="doLogin">
                        <code><![CDATA[import org.xmeta.ActionContext;

if(form.doAction("validate", actionContext)){
    def values = form.doAction("getValues", actionContext);
    if(values.loginName == "admin" && values.password == "admin"){
         def ac = new ActionContext();
         ac.put("parent", loginButton.getDisplay());
         
         def thing = world.getThing("xworker.swt.xwidgets.prototypes.SimpleThingEditor");
         actionContext.peek().put("parent", loginButton.getShell().getDisplay());
         def newShell = thing.doAction("create", ac);
         newShell.open();
         shell.dispose();
    }
}]]></code>
                    </GroovyAction>
                </Event>
            </Button>
        </Composite>
    </Shell>
</RwtWidget>

    在浏览器中输入地址:http://localhost:8080/test/rap?app=Admin,可以看到登录窗口。


    输入用户名admin,密码admin,点击登录按钮登录,成功后可以进入模型编辑器。


4.HelloWorld

    现在开发环境已经设置好了,我们现在来编写一个简单的HelloWorld应用。

4.1.创建HelloWorld

    在根目录下(最好先点中一个根据下的文件),鼠标右键菜单,选择创建事物,参看如下图。



     点击确定按钮创建模型。


4.2.编辑模型

4.2.1.添加Shell子节点

    在模型的编辑界面,点击添加子节点按钮。


    选择Shell子节点,并添加。


4.2.2.编辑Shell子节点

    Shell是窗口,属性text是窗口的标题,输入Hello World!,也可以设置下窗口的大小(witdh和height属性),然后点击保存按钮来保存模型。


4.3.运行HelloWorld

    在浏览器地址栏中输入http://localhost:8080/test/rap?app=HelloWorld,可以打开HelloWorld。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值