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

Reply via email to