Recent discussions motivate being able to dynamically specify the event that a 
handler is attached to and being able to dynamically enable/disable 
handlers[1].  Currently, handlers can only be declaratively attached to events 
by:

  <handler name="eventname" ...

We propose to add two new attributes to the <handler> tag:

1.  <attribute name="event" type="expression" />

If supplied, the handler will be registered to handle the event that is the 
value of `event`, or if `event` is null, the handler will not be registered to 
handle any events (it will have to be registered in script).  When `event` is 
supplied, `name` is optional, but if supplied, will be the name by which the 
handler can be referenced in script.  E.g.:

  <handler name="startCheck" event="null"> 
    ... startCheck body ... 
  </handler> 
  <handler name="hideTip" event="null"> 
    ... hideTip body ... 
  </handler> 
  <handler name="oninit"> 
    startCheck.register(parent, 'onmouseover'); 
    hideTip.register(parent, 'onmouseout'); 
    hideTip.register(parent, 'onclick'); 
  </handler>

2. <attribute name="enabled" type="boolean" />

If supplied, this attribute controls whether or not the handler is enabled 
(will react to the events it is registered on).  This can be more efficient 
than unregistering/reregistering events.  E.g.:

 <window>
   <handler reference="lz.keys" name="onkeydown" 
enabled="classroot.haswindowfocus">[*]
     ... will only execute on key down when this window has focus ...
   </handler>
   ...

Your comments are solicited.

---

[1] See http://jira.openlaszlo.org/jira/browse/LPP-7816

Reply via email to