As you explaint it, it's clear to me that this solution is more complicated, or at least equivalent to mine. In both we bind a fsm event to a button or what ever event. And then, one of our state/transition is enabled by this fsm event. The benefite of your solution is that we can precise the source of the event. Am i right?
2011/3/18 Derrell Lipman <[email protected]>: > On Fri, Mar 18, 2011 at 09:01, Benjamin Dreux <[email protected]> > wrote: >> >> As Derrell asked here is the description of what i understood about >> the FiniteStateMachine.eventListener() method. >> >> According to the mouse haze exemple. When we want to run an event on >> the FSM. Here is a part of the code that make me think this way : >> >> // Dispatch an event to cause us to continue. >> var event = new qx.event.type.Event(); >> event.setType("KickInTheAss"); >> _this.eventListener(event); >> >> As i understand it. FSM doesn't use a classic .addListener() the >> change it's state. >> It look like i'm wrong... >> >> >> >> What I'm trying to do is to change the fsm state according to some button >> push. >> Here is what I did to match the button push event to the fsm event: >> >> this.getObject("addButton").addListener("execute",function(){ >> var e = new qx.event.type.Event(); >> e.setType("add"); >> this.eventListener(e); >> },this); >> >> This beeing my FSM. >> >> Is there a better way to accomplish what i want ?? > > The "events" map in the stateInfo parameter to the State constructor > contains the mapping from an event on a particular object, to a transition. > For example, you might have something like this in your stateInfo map: > "events" : > { > "execute" : > { > // Identification configuration is saved > "identification_save" : > "Transition_Idle_to_AwaitRpcResult_via_identification_save", > // Access configuration is saved > "access_save" : > "Transition_Idle_to_AwaitRpcResult_via_access_save", > // Network configuration is saved > "network_save" : > "Transition_Idle_to_AwaitRpcResult_via_network_save", > // Email configuration is saved > "email_save" : > "Transition_Idle_to_AwaitRpcResult_via_email_save", > // Email configuration is saved, and a test message is requested > "email_save_send_test_message" : > "Transition_Idle_to_AwaitRpcResult_via_email_save" > }, > // Request to call some remote procedure call which is specified > by > // the event data. > "callRpc" : > "Transition_Idle_to_AwaitRpcResult_via_generic_rpc_call", > // When we get an appear event, retrieve the current configuration > "appear" : > { > "main.canvas" : > "Transition_Idle_to_AwaitRpcResult_via_appear" > }, > > In this example, "identification_save" is the friendly name of a button on > which an execute event might occur, and when that event does occur, the > transition "Transition_Idle_to_AwaitRpcResult_via_identification_save" > should be processed. > That button is set up something like this: > o = new qx.ui.form.Button("Save"); > fsm.addObject("identification_save", o); > // Create event listener to dispatch event to finite state machine. > o.addListener( > "execute", > function(e) > { > // Send an event to the finite state machine > fsm.fireImmediateEvent("execute", this); > }); > If you don't need for the event to be immediate, you could also simply add > fsm.eventListener to the button's execute event: > o.addListener("execute", fsm.eventListener, this); > I *really* need to produce an example of using this stuff, that I can > distribute, that shows standard usage in a normal GUI environment. My mouse > maze example was fun, but is not sufficiently similar to normal usage. Since > I'm currently working on a project that will be open-source, and will likely > use the FSM in that project, maybe it will serve as a better example. In the > mean time, I'll try to answer questions as they arise. > Cheers, > Derrell > > ------------------------------------------------------------------------------ > Colocation vs. Managed Hosting > A question and answer guide to determining the best fit > for your organization - today and in the future. > http://p.sf.net/sfu/internap-sfd2d > _______________________________________________ > qooxdoo-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel > > -- Benjamin Dreux Analyste-Programmeur Chaire de logiciel libre-Finance Social et solidaire UQAM Montréal ------------------------------------------------------------------------------ Colocation vs. Managed Hosting A question and answer guide to determining the best fit for your organization - today and in the future. http://p.sf.net/sfu/internap-sfd2d _______________________________________________ qooxdoo-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/qooxdoo-devel
