Commenting on handlers, i like the way laszlo allows you to pull out api from base-class, by way of handlers. it's a very graceful way to set up state throughout the application and i always declare states first when defining a class i.e. it's not "connectionOK" it's "connected", which is a word with a yes/no connotation. If you look at these verb attributes as states a node can be in and you have other objects that all listen to those single nodes, you can solve a lot of UI problems by factoring all the states out from what-happens-when-state-changes, All UI's can be described that way.

Think verbs (selected, clicked, completed, finished, connected, moved, moving, clicking, completing, finishing, etc) and you'll have a good design. YMMV :)

cem sonmez wrote:
@P T Withington : I looked at your your solution for creating delegates. When i need to use the delegates, i m going to use the way that you mentioned. While looking at the developer documentation of openlaszlo, I hadnT understand the meaning of delegates and the usage of it. it seemed to me a bit confused :) Now, i think know more about delegates than before, thanks

@jamesr : also thank you for the information. I worked out the problem. I used an attrbiute in the connection.lzx

<attribute name="connectionOK" value="false" type="boolean"/>

and in the case of "NetConnection.Connect.Success", i set it to true.
Then while creating an object of sharedObject, i used like that :

<sharedObjectChat id="soChat">
            <handler name="onconnectionOK" reference="conn">
Debug.info("connectionOK attribute operation, value :%w",conn.connectionOK);
                if (conn.connectionOK==true) {
                    //this.setAttribute("createSharedObject",true);
                    this.connect("chat", conn._conn, true);
                    this.so.client=this;
                }
            </handler>
</sharedObjectChat>

So itS ok now. İt is impossible to learn something wihout making mistakes :)

Best regards.

2009/12/18 P T Withington <[email protected] <mailto:[email protected]>>

    I have a proposed "solution" for the LZX programmer having to
    create delegates in script in:

     http://jira.openlaszlo.org/jira/browse/LPP-7816

    Basically, I want you to be able to declare a handler without
    attaching it to an event at declaration time (and you would later
    use script to register the handler on the event it is to handle).
     The main purpose for this change is that <handler /> will
    automatically be managed, whereas delegates must be manually
    managed (and destroyed) or they can lead to memory leaks.

    On 2009-12-18, at 16:03, jamesr wrote:

    > for the record, the two use cases for making a delegate are
    >
    > 1)  you want to compute what object to latch onto
    programmatically and
    > 2) you want to latch onto something that is not yet created at
    the handler init phase.
    >
    > don't see any other use, although the two above are obviously
    important
    >
    > cem sonmez wrote:
    >> you are exactly right. I want to make some operations when the
    netconnection successful event is fired. Actually i m trying to
    get the shared object on the server side, so at first i need a
    netconnection instance to do that. ThatS why i thought that i
    should try delegates. I havenT used delegates before, but i
    thought that this is the just one solution to handle the
    operations depend on the related event.
    >>
    >> The method you said, using an attribute in the connection class
    seems the better way. Till now, i havenT needed the delegates. I
    hope using connection status attribute in the connection class
    will fix the problem.
    >>
    >> I m going to post back the results here of course.
    >> Thanks for the reply J
    >>
    >> 2009/12/18 jamesr <[email protected]
    <mailto:[email protected]> <mailto:[email protected]
    <mailto:[email protected]>>>
    >>
    >>    I can tackle it. let's see; i'd write the following, after an
    >>    introduction (all code is untested and represents a pattern,
    adapt
    >>    it as you will)
    >>
    >>    Your problem: You want to do is send a "connection successful"
    >>    event that you can catch, signaling that a method is to be
    called
    >>    to continue using the connection.  You seem to be trying to
    do it
    >>    by setting up the delegate manually, when i think, looking
    at your
    >>    code, that you have hooks to fire events on laszlo nodes
    that can
    >>    communicate this state change.
    >>
    >>    Solution: An event is anytime you use x.setAttribute() by
    the way
    >>    - that's what it does, makes sure that handlers are fired. That
    >>    said, if you declare an attribute of any laszlo node and in your
    >>    code, when you have success on your net connection, you say
    >>    "somenode.setAttribute('success, true);" then in another
    node you
    >>    can say, <handler name="onfoo"
    reference="somenode">...</handler>
    >>    and in that code you can then do what ever other steps are
    >>    required to use the connection.
    >>
    >>    Further thought if i'm wrong: can you say why it is you
    decided to
    >>    use manual delegates? it might make things clearer for me, i've
    >>    not used the net connection code you have there but make
    guesses.
    >>
    >>    .j.
    >>    cem sonmez wrote:
    >>
    >>        doesnT anyone have any idea. I got stuck here. Waiting for
    >>        someones advices.
    >>        Thanks
    >>
    >>        2009/12/18 cem sonmez <[email protected]
    <mailto:[email protected]>
    >>        <mailto:[email protected]
    <mailto:[email protected]>> <mailto:[email protected]
    <mailto:[email protected]>
    >>        <mailto:[email protected]
    <mailto:[email protected]>>>>
    >>
    >>
    >>           hi
    >>           when i try do use the delegate such like :
    >>
    >>           if( typeof this.del == "undefined" )  {
    >>                    this.del = new LzDelegate(this,
    "connect('chat', conn,
    >>           true)" );
    >>                    }                   this.del.register(conn,
    >>           "netStatusHandler('NetConnection.Connect.Success')" );
    >>           }
    >>
    >>           I m getting the error on the debug like :
    >>
    >>           *soChat.connect('chat', conn, true) => (void 0) (must
    be a
    >>        function)*
    >>
    >>           Actually i want to do this :  call the *connect*
    method on the
    >>           class when the netStatusHandler method of the *conn*
    object has
    >>           been completed. I m not sure that am i using the delegate
    >>           correctly (as i m getting the error, of course not :)).
    >>
    >>           I have attached the relevant files.
    >>           Can anyone help me what i m missing to do.
    >>
    >>           Kind regards.
    >>
    >>           --    Cem SONMEZ
    >>
    >>
    >>
    >>
    >>        --         Cem SONMEZ
    >>
    >>
    >>
    >>
    >> --
    >> Cem SONMEZ




--
Cem SONMEZ

Reply via email to