关于属性触发器(Property Trigger)的一些想法

本文介绍了一种基于XML的应用程序设计中实现属性监听的方法,通过属性触发器(BeanPropertyTrigger)来响应组件状态变化,如按钮启用状态,并展示了具体的XML配置示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此灵感源自 Eclipse E4 项目的 XWT UI Trigger 特性。

 

对于XWT,它是基于SWT的,因此可以内置SWT的所有特性,例如各种事件监听等。而作为更加通用的XML应用程序,在设计上需要更谨慎些。经过一些研究,决定先实现属性触发器(Bean Property Trigger),这样所有符合Bean格式的类都可以进行触发。

 

下面看看代码:

 

<Shell xmlns="com.cmspad.xmla.swt" xmlns:t="com.cmspad.osgi" xmlns:e="com.cmspad.xmla.swt.event" xmlns:l="com.cmspad.xmla.swt.layout" text="XML Application" size="200,60" 
l:layout="fill">
  <Button t:id="b1" style="CHECK" text="Button 1" enabled="false">
    <t:trigger t:property="enabled">
      if(b1.enabled){
        b1.selection = false;
      }else{
        b1.selection = true;
      }
    </t:trigger>
  </Button>
  <Button t:id="b2" text="Button2" style="CHECK" e:Selection="buttonSelected"/>
  <t:script>
    function buttonSelected(e){
      if(b2.selection){
        b1.enabled = true;
      }else{
	b1.enabled = false;
      }
    }
  </t:script>
</Shell>

 可以看到,trigger部分代码就是对其enabled属性进行监听,当其他部件调用setEnabled方法时,触发其事件。

 

运行界面,当鼠标选择 Button 2 时,Button 1 变为可用了

 

因为XML应用程序能够更适应几乎所有的程序类,属性监听机制的实现可能会很复杂。此特性已经加入到了开发计划中,敬请期待~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值