Commands, more properly, should operate on the list of objects that are currently "selected". The classes of the selected objects (plus cardinality, state, etc.) determine which commands are enabled. Command management and selection management work together.
On Sat, Feb 13, 2010 at 4:28 PM, cem sonmez <[email protected]> wrote: > In my opinion, it would be so nice to use a command in a method as an > attribute, like > > <command id="myCommand" /> > <method command="${myCommand}" enabled="classroot.haswindowfocus"> > In conclusion, we call a method in onselect handler of the command or doing > something in that handler. > > Regards > > Cem > > 2010/2/14 P T Withington <[email protected]> >> >> Yeah, but actually, commands are really much more complicated than they >> need to be. Why do they need to be an entire node? You ought to be able to >> do something simpler like say: >> >> <handler event="${lz.keys.keycombo(['control', 'c'])}" >> enabled="classroot.haswindowfocus">[*] >> ... >> </handler> >> >> i.e., eliminate the useless intermediate node. Am I missing something? >> Is there any use for the command being a whole node? Wouldn't you really >> want to just tie a key combo event directly to a handler (or method)? >> >> --- >> >> [*] This is using my hypothetical `event` property of <handler> that would >> let you create handlers that can be dynamically attached to any event, >> without having to resort to Javascript. Also, I expose the `enabled` >> property of a handler. >> >> See http://jira.openlaszlo.org/jira/browse/LPP-7816 >> >> On 2010-02-13, at 17:00, Henry Minsky wrote: >> >> > Hey that is cool, I didn't know about that feature. That's actually a >> > use >> > of >> > a constraint that had not really occurred to me. I think about states as >> > being used >> > to enable methods, but if you use that idiom of tying an enabled flag to >> > a >> > constraint, >> > it is sort of like a state. >> > >> > >> > >> > On Sat, Feb 13, 2010 at 3:13 PM, P T Withington <[email protected]> wrote: >> > >> >> I think it should work for you to say: >> >> >> >> <command ... active="${classroot.haswindowfocus}"> >> >> >> >> meaning the command will only be active (and hence will only execute) >> >> if >> >> the window it belongs to has focus. >> >> >> >> On 2010-02-13, at 11:30, cem sonmez wrote: >> >> >> >>> sorry for the previous post, this the complete one : >> >>> >> >>> talking about this testcase. >> >>> >> >>> <canvas debug="true" width="100%" height="300"> >> >>> <debug width="350" height="200"/> >> >>> <class name="myWindow" extends="window" width="150" height="100" > >> >>> <command name="keyCommand" key="['Enter']"> >> >>> <handler name="onselect"> >> >>> Debug.write(classroot.name + " Enter command"); >> >>> </handler> >> >>> </command> >> >>> </class> >> >>> >> >>> <class name="myWindow2" extends="window" width="150" height="100" > >> >>> <command name="keyCommand" key="['Enter']"> >> >>> <handler name="onselect"> >> >>> Debug.write(classroot.name + " Enter command"); >> >>> </handler> >> >>> </command> >> >>> </class> >> >>> >> >>> <simplelayout/> >> >>> <myWindow name="win1" title="window 1"/> >> >>> <myWindow2 name="win2" title="window 2"/> >> >>> </canvas> >> >>> >> >>> when i hit the enter button on canvas, both of the onselect events are >> >> being >> >>> called. Is it possible to make this call just for the selected window. >> >>> If it is not : this means that, it is not allowed to implement more >> >>> than >> >> two >> >>> roles for each key command, isnT it ? >> >>> >> >>> Regards >> >>> -- >> >>> Cem SONMEZ >> >> >> >> >> >> >> > >> > >> > -- >> > Henry Minsky >> > Software Architect >> > [email protected] >> > > > > -- > Cem SONMEZ >
