[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