[Laszlo-dev] For Review: Change 20081114-ptw-0 Summary: Add `type` to basevaluecomponent
André Bargull
andre.bargull at udo.edu
Sat Nov 15 06:20:49 PST 2008
Concerning the "updateData"-dependencies in basevaluecomponent:
I consider this to be a hack, since data-binding and general
representation is mixed together. The contract for data-binding was
actually like: you call "updataData()" on a datapath and then this
datapath (+ dependent datapaths) with a xpath terminal-selector will
call "updataData()" on its immediate-parent (any LzNode) to get the
textual representation for the data-element. This textual representation
is just the "value" for the general components (a quite abstract
approach, because there is no further information), but user-defined
components likely compute more complicated strings or trigger any
side-effects.
With that change, the data-binding api is changed as a whole. You
propose "updataData()" as a general way to get textual representation
for anything:
> Called by a datapath to retrieve the value for a data
> binding, but can be used in general to get a string
> representation of a typed value.
On the one hand, as I already said, I consider this to be a hack, kind
of "overloading semantics". And on the other hand, "updataData()" as a
name for a method which returns textual representation, is simply
misleading. As a novice programmer in OpenLaszlo, I wouldn't expect
"updataData()" as a way to get a string, I'd rather expect that the
method is connected to data-binding. So I think it's better to add a new
method to basevaluecomponent, which returns the value as a string.
Here is a simple example using standard components, which shows the
side-effects I mentioned earlier:
If you enter text in the left edittext, you'll get "ontext"-events.
But if you enter text in the right edittext, you won't get any
"ontext"-event!
---
<canvas debug="true" layout="axis:x;spacing:10" >
<view layout="axis:y;spacing:5">
<edittext name="edt1" >
<handler name="ontext" >Debug.write('ontext for %w', this)</handler>
</edittext>
<text text="${this.parent.edt1.updateData()}" />
</view>
<view>
<edittext name="edt2" >
<handler name="ontext" >Debug.write('ontext for %w', this)</handler>
</edittext>
<text text="${this.parent.edt2.text}" />
</view
</canvas>
---
> Change 20081114-ptw-0 by ptw at dueling-banjos.home <http://www.openlaszlo.org/mailman/listinfo/laszlo-dev> on 2008-11-14
> 12:07:45 EST
> in /Users/ptw/OpenLaszlo/trunk
> for http://svn.openlaszlo.org/openlaszlo/trunk
>
> Summary: Add `type` to basevaluecomponent
>
> New Features:
> You can now declare the `type` of a component's value, to get it
> to interact correctly with a databinding or other text
> input/output
>
> Bugs Fixed:
> LPP-7340 basevaluecomponent should have a 'type' so you know how
> to accept/present it
>
> Technical Reviewer: max (pending)
> QA Reviewer: lou at louiorio.com <http://www.openlaszlo.org/mailman/listinfo/laszlo-dev> (pending)
>
> Details:
> slider: Use presentAttribute and type to label the slider min and
> max
>
> baseslider: Use updateData (which uses presentAttribute and type)
> to label the thumb.
>
> baseformitem, basevaluecomponent: Move `type` from formitem to
> valuecomponent.
>
> basevaluecomponent: Add default applyData and updateData methods
> so value can be set and retrieved as a string according to its
> type. Add dependency methods for getValue and updateData so they
> can be used in constraints.
>
> Tests:
> Test case from bug correctly labels slider range and thumb with
> color values.
>
> Files:
> M lps/components/lz/slider.lzx
> M lps/components/base/baseslider.lzx
> M lps/components/base/baseformitem.lzx
> M lps/components/base/basevaluecomponent.lzx
>
> Changeset: http://svn.openlaszlo.org/openlaszlo/patches/20081114-ptw-0.tar
>
More information about the Laszlo-dev
mailing list