[Laszlo-dev] Is this an equivalent constraint?

André Bargull a.bargull at intensis.de
Thu Mar 20 05:25:46 PDT 2008


Or alternatively, no constraints and only simple handlers, something like:

<handler name="oninit"><![CDATA[
    this.setAttribute('selectable', classroot.selectable);
]]></handler>

<handler name="ontext" method="_setCalcX" />
<handler name="onwidth" method="_setCalcX" />

<method name="_setCalcX"><![CDATA[
    if (classroot.textalign == "center") {
        var x = ((this.width /2) - (this.getTextWidth() /2));
        if (x < 0) x = 0;
        this.setAttribute("x", x);
    } else if (classroot.textalign == "right") {
        var x = ((this.width) - (this.getTextWidth() + 10));
        if (x < 0) x = 0;
        this.setAttribute("x", x);
    } else {
        this.setAttribute("x", 0);
    }
]]></method>

> The other way to do this is to give _calcX a dependency method.  See  
> for instance LzDataElementTrait#getFirstChild.  Clearly whatever you  
> do there will have to be updated to the new dependencies-method scheme  
> (when we figure out what that is!).  There needs to be a general, user- 
> extensible way to write a method that computes the dependencies for  
> another method for the case where the compiler's simple analysis is  
> insufficient.
>
> On 2008-03-19, at 23:57 EDT, Henry Minsky wrote:
> >/ I wanted to get rid of the deprecated "applyConstraint" call in
> />/ gridtext, which looks like
> />/
> />/ -                    var f = function() {
> />/ -                                this.setAttribute("x",  
> />/ this._calcX());
> />/ -                            }
> />/ -                    var d = [this, "width"];
> />/ -                    this.applyConstraint("x", f, d);
> />/
> />/ so I replaced it with the LZX constraint on "x"
> />/
> />/
> />/ +                  x="${ this._calcX() + this.width * 0}"
> />/
> />/
> />/ which  should be equivalent; it has a dependency on "width", but
> />/ multiplies it by zero, and calls the _calcX() method
> />/ which is what the original applyConstraint was doing.  So this should
> />/ do the same thing as the original call to applyConstraint, right?
> />/
> />/
> />/
> />/ Index: gridtext.lzx
> />/ ===================================================================
> />/ --- gridtext.lzx	(revision 8323)
> />/ +++ gridtext.lzx	(working copy)
> />/ @@ -66,6 +66,7 @@
> />/             <text visible="${!parent.editing}" width="${parent.width}"
> />/                   resize="false"
> />/                   y="${ parent.height /2 - this.height/2}"
> />/ +                  x="${ this._calcX() + this.width*0}"
> />/                   fgcolor="${ parent.immediateparent.selected ?
> />/                                     classroot._textselectedcolor:
> />/                                      
> />/ (parent.immediateparent.highlighted ?
> />/ @@ -76,11 +77,6 @@
> />/                 <handler name="oninit">
> />/                 <![CDATA[
> />/                     this.setAttribute('selectable',  
> />/ classroot.selectable);
> />/ -                    var f = function() {
> />/ -                                this.setAttribute("x",  
> />/ this._calcX());
> />/ -                            }
> />/ -                    var d = [this, "width"];
> />/ -                    this.applyConstraint("x", f, d);
> />/                 ]]>
> />/                 </handler>
> />/
> />/
> />/
> />/ -- 
> />/ Henry Minsky
> />/ Software Architect
> />/ hminsky at laszlosystems.com <http://www.openlaszlo.org/mailman/listinfo/laszlo-dev>
> /



More information about the Laszlo-dev mailing list