[Laszlo-dev] What is a node? [Was For Review: Change 20070806-hqm-8 Summary: make base abstract LzDataProvider class]
Raju Bitter
rbitter at laszlosystems.com
Tue Aug 7 04:43:58 PDT 2007
This is discussion is very interesting for me. When learning LZX (without
being aware of the implementation) a programmer indirectly experiences the
concepts you are mentioning here.
It would be helpful to have this information available in a section for
advanced programmers in the developers guide, something like the "concepts
behind LZX". It is a very logical construct, and knowing the logic will
definitely help developers to become better coders. :)
I haven't read the latest documentation, maybe we have a section like that
already. John?
- raju
> Von: P T Withington <ptw at openlaszlo.org>
> Datum: Mon, 6 Aug 2007 22:38:00 -0400
> An: Pablo Kang <pkang at laszlosystems.com>
> Cc: Henry Q Minsky <henry.minsky at gmail.com>, Laszlo-dev bug reporting
> <laszlo-dev at openlaszlo.org>, P T Withington <ptw at laszlosystems.com>
> Betreff: [Laszlo-dev] What is a node? [Was For Review: Change 20070806-hqm-8
> Summary: make base abstract LzDataProvider class]
>
> To me, a node is an element in the DOM. It has a parent and
> children. Nodes get created by LZX tags. They don't participate in
> layout (only view and their subclasses do), but you can navigate to
> them in the DOM. To me, that is the primary purpose of node-ness:
> that you can navigate to/from the node in the DOM, you can ask for
> the node's parent, etc.
>
> Constraining an attribute to an expression is a feature of the LZX
> language. Since the only thing in LZX that can have attributes is a
> node, that nifty constraint language also requires node-ness. But we
> could think about separating that out. Henry has asked that we
> invent a Javascript syntax to write constraints as concisely as we do
> in LZX.
>
> But, the elements of a constraint expression do not have to be a
> node. See, for example, LzGlobalMouse. You can constrain a view
> attribute to the mouse position, even though the mouse is not a node.
>
> By the same token, the LZX language makes sending an event when you
> use setAttribute on an attribute automatic. Again, in LZX you have
> to be a node to call setAttribute. This would be another thing we
> could extend to Javascript if we wanted.
>
> Again, you do not have to be a node to send events. Again,
> LzGlobalMouse is an example of an existing object that is not a
> node. You can request to be notified of mouse events even though the
> mouse object is not a node.
>
> There are already Javascript classes that the LZX developer has to
> know about, so this is not a new concept, although admittedly, it is
> not the usual case. The LZX developer already has to write
> Javascript to implement methods, initialize attributes, handle
> events, etc. Javascript is a part of the LZX language. It is not a
> secret.
>
> If we want to improve the performance of LZX programs, we need to
> stop using a sledgehammer where a tack hammer will do.
>
> On 2007-08-06, at 20:24 EDT, Pablo Kang wrote:
>
>> I'm ok with writing script as long it's documented as such.
>>
>> I do think this would be a departure from current recommended LZX
>> coding practices. As I understand it (from Sarah and David), the
>> policy is to make everything as LZX friendly as possible.
>>
>> I'm assuming if datarequest and dataprovider don't extend from node
>> this also means that they can't be constrained to or don't
>> participate in the event system, right?
>>
>> pablo
>>
>> On Mon, 6 Aug 2007, P T Withington wrote:
>>
>>> Right. That is the question I am asking. Is the script tag not
>>> sufficient? This seems like a 'experts only' area, where the
>>> script tag should be fine, to me. Given that nodes are heavy, I
>>> would avoid making things a node if I didn't have to.
>>>
>>> On 2007-08-06, at 19:48 EDT, Pablo Kang wrote:
>>>
>>>> This is so I can extend datarequest and dataprovider using LZX in
>>>> diamond. The other option is that I extend these classes using a
>>>> script tag.
>>>> On Mon, 6 Aug 2007, P T Withington wrote:
>>>>> Question:
>>>>> Is there a reason to make dataprovider a node? Does it need to
>>>>> show up in the DOM, or is it just a property of a dataset? Do
>>>>> we really need to extend it in LZX, or is making it extensible
>>>>> only from script sufficient? It seems that the answer should be
>>>>> the same for dataprovider and datarequest. I think is should be
>>>>> just a javascript class.
>>>>> Otherwise approved.
>>>>> On 2007-08-06, at 17:05 EDT, Henry Minsky wrote:
>>>>>> Change 20070806-hqm-8 by hqm at IBM-2E06404CB67 on 2007-08-06
>>>>>> 17:02:34 EDT
>>>>>> in /cygdrive/c/users/hqm/openlaszlo/wafflecone
>>>>>> for http://svn.openlaszlo.org/openlaszlo/branches/wafflecone
>>>>>> Summary: make base abstract LzDataProvider class
>>>>>> New Features:
>>>>>> This implements a common base class for LzDataProvider
>>>>>> implementations
>>>>>> to inherit from
>>>>>> Bugs Fixed:
>>>>>> Technical Reviewer: ptw (pending)
>>>>>> QA Reviewer: (pending)
>>>>>> Doc Reviewer: (pending)
>>>>>> Documentation:
>>>>>> Release Notes:
>>>>>> Details:
>>>>>> Tests:
>>>>>> Files:
>>>>>> M WEB-INF/lps/lfc/kernel/swf/LzHTTPLoader.as
>>>>>> M WEB-INF/lps/lfc/data/LzHTTPDataProvider.lzs
>>>>>> A WEB-INF/lps/lfc/data/LzDataProvider.lzs
>>>>>> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/
>>>>>> 20070806-hqm-8.tar
>>>>>> --
>>>>>> Henry Minsky
>>>>>> Software Architect
>>>>>> hminsky at laszlosystems.com
>>>
>
More information about the Laszlo-dev
mailing list