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