基于SWT的类XUL实现: SWT-XUI

05-07-10 yipsilon
项目摘要:

基于XML的SWT界面(XML-Based SWT UI),使用XML文档来描述SWT组件结构并通过XUI运行环境(XUIRE)生成SWT对象,使用JavaScript、Groovy或BeanShell动态控制程序逻辑。XUIRE提供了一系列控制对象注册表的API和对于Disposed对象收集的垃圾收集器(GC),它会自动检查注册表中的对象是否有效且可以重新创建并初始化已失效的对象。这些使界面开发者简化了管理SWT组件对象的难度,更容易开发SWT应用界面。

当前最新版本为 1.0 M1, 里面提供中文的演示(详见README.TXT)

点击这里进入项目的SourceForge网站

banq
2005-07-11 08:43
非常不错,我的Jdon框架有一个支持远程胖客户端的能力,如果你原意,我们合作一把,开发JPetstore的Swing客户端功能,如果有可能整入更多界面与后台交互功能,做一个类似.NET的smart client?

yipsilon
2005-07-11 09:41
SWT-XUI 是基于SWT的,跟Swing不同,SWT是使用Eclipse的本地GUI接口实现。

这个项目当初设计的时候就是才用microkernel+parsers的模式,核心类不到10个。开发者只需要开发相应的parser就可以实现自己的功能。

需要的话,可以开发一组基于Jdon的RPC标签。呵呵。

banq
2005-07-11 11:21
SWT比Swing要快多,我的意思是能做成Web Starter。

现在Jdon框架已经提供远程RPC支持,在SWT或SWING等java胖客户端中象调用本地服务一样调用远程服务器服务:如:

AccountService accountService = ServerFactory.getService("accountService");

然后将jdonframework.xml放在SWT客户端就可以。当然,进一步开发出标签就更好,不知你的SWT-XUI标签是否类似Jsp标签?

JPetstore源码在http://www.jdon.com/jive/article.jsp?forum=61&thread=21394

可以下载,你如有兴趣可用的SWT-XUI实现JPestore的几个Web界面,如果需要我帮助,和我联系,我已经给你163去信件了。

如果能成功,我给你加入JPetstore页面中,表明客户端是SWT-XUI开发的,你也可在客户端运行代码中表明。一起宣传啊。

banq
2005-07-11 11:49
再问你:

如果将你的XML文档配置作为数据,由服务器端定义,再发送到客户端,那么客户端实际变成一个图形浏览器,整个系统形成一个平台了,在平台上可以跑各种游戏、商务等互动内容了,而不是现在QQ或其他游戏软件,玩一个游戏就需要下载一个专门的客户端了。

yipsilon
2005-07-11 13:32
SWT本身支持JWS,当然SWT-XUI也集成了它的这些优点,并且因为它是通过XML生成的SWT GUI界面,因此你可以根据不同需求定义不同的界面的结构和内容。

SWT-XUI的结构也是遵循MVC做出的,我给它这样定义:M:Data Binding, 可以使用Jdon的远程数据调用框架或是其他数据获取类技术;V:XML,通过使用XML动态定制界面内容;C:Linsteners or Scripts, 通过监听器或者脚本(SWT-XUI目前支持了四个脚本,他们是JavaScript、Python、Groovy和BeanShell)来进行对数据和结构的控制。

目前SWT-XUI的最小化执行包是1.74MB, 如果加上所有脚本的支持大概在4.8MB左右, 可以通过传统的本地安装或JWS来启动它.不过SWT-XUI做不了Web页面, 只有一个可能就是使用browser控件然后连接到提供服务的网站, 就像QQ那样的.

至于例子方面, 另一位朋友正在为这个项目做一个记事本的例子, 计划只用一个xml文档实现windows中记事本程序的所有功能. 目前已经完成50%左右, 每个新版本的下载包里都有完成的实现(见examples目录下的notepad.xml)。

banq
2005-07-12 08:02
好,我说的浏览器是只你的SWT因为显示的信息类似浏览器显示一样,浏览器显示是根据服务器的Http传来的Html(XML)格式显示,而你的SWT则也是根据XML显示,主要可显示动态图形信息,所以你的SWT相当于浏览器,而且可以跨终端,如果做得足够小,可以安装在手机 嵌入设备等。

既然支持MVC就好,你有无支持MVC的一个实例?我参考一下,将JPetstore的RPC服务调用整合在里面。

notepad做的不错,我一开始以为是Windows自己的notepad呢。

yipsilon
2005-07-12 09:58
呵呵, 那个notepad目前还是半成品, 成品这几天就会发布了.

yipsilon
2005-07-16 15:45
1.0 M1 Build 20050715

.+ 增加dragSource, dropTarget和transfer三个标签, 全面支持DND(拖拽)功能.

.+ examples中增加了DND.xml(使用DND.bat执行), 用于演示简单的DND操作.

1.0 M1 Build 20050712

.+ 增加了可以操作DOM数据的XMLRegistry类, 通过XUI.getXMLRegistry()方法调用.

.+ examples中的notepad例子更新为 1.0 Release Candidate 版本.

.$ 修改了一些小bugs.

1.0 M1 Build 20050708

.+ 四个脚本中加入了context常量用于保存上下文状态.

context.global: 类型为Map, 这里的对象可以在所有脚本解释器中调用.

context.local: 类型为Map, 这里的对象只能在它所在的解释器中调用.

.$ 修正在MenuItem的text属性中所定义快捷键不能辨认的Bug. 系统首先会查找accelerator属性, 如果该属性不存在快捷键则查找text属性来设置快捷键, text属性中使用(&x0009;快捷键字符组)来定义快捷键, 例如使用&x0009;Ctrl+O来定义Ctrl+O的快捷键.

1.0 M1 Build 20050707

.i 重构包结构, 使用新的包名 cn.xui.swt.* 代替以前的包名 cn.rcp.xui.swt.* .

.+ 增加了DND功能的DragSourceListener和DropTargetListener监听器(见cn.xui.swt.Listener类).

.+ 增加parsers/parser标签,用于定义自定制的标签处理器(Parser).

.$ 修正当重复通过ref-id使用同一对象时出现"对象已存在"错误的Bug.

1.0 M1 Build 20050704

.+ 增加graphics标签及其子标签, 用于在XUI描述文档中画图(见examples目录下的graphics.xml).

.| 改进图像装载和调用方式: 使用image标签装载图像, 所有标签的image属性不再是载入图像而是根据其值到注册表中调用已经载入的图像.

1.0 M1 Build 20050701

.+ 使用Jython包提供对Python脚本支持(标签名称: python).

.+ 增加JavaScript, Groovy, BenShell, Python脚本元素的path属性, 提供对文件脚本的执行能力.(见examples目录下的scripts.xml)

1.0 M1 Build 20050630

.+ 使用Mozzlia Rhino包提供对JavaScript脚本支持(标签名称: javascript).

.+ 使用Groovy包提供对Groovy脚本支持(标签名称: groovy).

.+ 使用BSH包提供对BeanShell脚本支持(标签名称: beanshell).

猜你喜欢