Harbs, I shout you couple of question in the commit. I hope you are not overwhelming by my constant Code Inspection!
Thanks, Piotr 2017-11-13 19:29 GMT+01:00 Harbs <harbs.li...@gmail.com>: > That’s what I was looking for. > > Thanks! > > > On Nov 13, 2017, at 6:42 PM, Alex Harui <aha...@adobe.com.INVALID> > wrote: > > > > You might be better off using childrenAdded. It should fire once for the > > entire set of children specified in MXML, and once for each child added > > via AS, which you might need if a child is added "later". > > > > My 2 cents, > > -Alex > > > > On 11/13/17, 7:09 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com > <mailto:piotrzarzyck...@gmail.com>> wrote: > > > >> Yishay, > >> > >> Thanks for the info! Precious! :) > >> > >> Piotr > >> > >> > >> 2017-11-13 16:03 GMT+01:00 Yishay Weiss <yishayj...@hotmail.com>: > >> > >>> It looks like initComplete is called after children are initialized [1] > >>> > >>> > >>> > >>> I would add the focus disable behavior as a separate bead as Piotr > >>> suggested (similar to DisabledAlphaBead). > >>> > >>> > >>> > >>> [1] > >>> https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fgithub.c <https://na01.safelinks. > protection.outlook.com/?url=https%3A%2F%2Fgithub.c> > >>> om%2Fyishayw%2FExamples%2Ftree%2FinitComplete&data=02% > 7C01%7C%7Ca9d54724b > >>> c9443dcb42d08d52aa88b95%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C6364 > >>> 61825737445515&sdata=gYDEhA2WwBvRPPQ6aOgyz5Cp4fIn3i > luQhq9YbFtIdQ%3D&reser > >>> ved=0 > >>> > >>> > >>> > >>> ________________________________ > >>> From: Harbs <harbs.li...@gmail.com <mailto:harbs.li...@gmail.com>> > >>> Sent: Monday, November 13, 2017 3:26:58 PM > >>> To: dev@royale.apache.org <mailto:dev@royale.apache.org> > >>> Subject: Re: [royale-asjs] 01/01: First (non-working) version > >>> > >>> Is initComplete fired after all the children are added? > >>> > >>>> Also, doesn’t DisableBead work for containers as is? > >>> > >>> No. DisableBead helps in so far as you can’t select using the mouse, > but > >>> you can still select using the keyboard by tabbing though controls. For > >>> that to work, you need to disable tabbing on all the descendants. > >>> > >>>> On Nov 13, 2017, at 3:20 PM, Yishay Weiss <yishayj...@hotmail.com > <mailto:yishayj...@hotmail.com>> > >>> wrote: > >>>> > >>>> Why not listen to the container’s ‘initComplete’? Also, doesn’t > >>> DisableBead work for containers as is? > >>>> > >>>> > >>>> > >>>> ________________________________ > >>>> From: Piotr Zarzycki <piotrzarzyck...@gmail.com <mailto: > piotrzarzyck...@gmail.com>> > >>>> Sent: Monday, November 13, 2017 3:15:54 PM > >>>> To: dev@royale.apache.org <mailto:dev@royale.apache.org> > >>>> Subject: Re: [royale-asjs] 01/01: First (non-working) version > >>>> > >>>> Harbs, > >>>> > >>>> First thought is register to "initComplete" for each children ? But > >>> does > >>>> each of our children emit such event ? > >>>> > >>>> Piotr > >>>> > >>>> > >>>> 2017-11-13 14:01 GMT+01:00 Harbs <harbs.li...@gmail.com <mailto: > harbs.li...@gmail.com>>: > >>>> > >>>>> I need some help here. > >>>>> > >>>>> The code should be working, but the bead is added before the children > >>> are > >>>>> added, so the styles and attributes are not applied. > >>>>> > >>>>> Any ideas on how to delay the execution until after the full tree of > >>>>> children are added? > >>>>> > >>>>> Thanks, > >>>>> Harbs > >>>>> > >>>>>> On Nov 13, 2017, at 2:57 PM, ha...@apache.org <mailto: > ha...@apache.org> wrote: > >>>>>> > >>>>>> This is an automated email from the ASF dual-hosted git repository. > >>>>>> > >>>>>> harbs pushed a commit to branch feature/disable-children-bead > >>>>>> in repository > >>> https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fgitbox.a <https://na01.safelinks. > protection.outlook.com/?url=https%3A%2F%2Fgitbox.a> > >>> pache.org <http://pache.org/>%2Frepos%2Fasf%2Froyale-asjs.git&data= > 02%7C01%7C%7Ca9d54724bc944 > >>> 3dcb42d08d52aa88b95%7Cfa7b1b5a7b34438794aed2c178de > cee1%7C0%7C0%7C63646182 > >>> 5737445515&sdata=KWwzVziEug3oAjzc2payBE947JUEv4 > GSWWPeoOtHd6w%3D&reserved= > >>> 0 > >>>>>> > >>>>>> commit c1cc651a6f03cbcdb6792eed367140404adf7863 > >>>>>> Author: Harbs <ha...@in-tools.com <mailto:ha...@in-tools.com>> > >>>>>> AuthorDate: Mon Nov 13 14:57:34 2017 +0200 > >>>>>> > >>>>>> First (non-working) version > >>>>>> --- > >>>>>> .../Basic/src/main/resources/basic-manifest.xml | 1 + > >>>>>> .../royale/html/beads/DisableChildrenBead.as | 152 > >>>>> +++++++++++++++++++++ > >>>>>> 2 files changed, 153 insertions(+) > >>>>>> > >>>>>> diff --git a/frameworks/projects/Basic/src/main/resources/basic- > >>> manifest.xml > >>>>> b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml > >>>>>> index 90b72b3..02a8579 100644 > >>>>>> --- > >>> a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml > >>>>>> +++ > >>> b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml > >>>>>> @@ -113,6 +113,7 @@ > >>>>>> <component id="UnselectableElementBead" > >>>>> class="org.apache.royale.html.beads.UnselectableElementBead"/> > >>>>>> <component id="DisableBead" class="org.apache.royale.html. > >>> beads.DisableBead" > >>>>> /> > >>>>>> <component id="DisabledAlphaBead" class="org.apache.royale.html. > >>> beads.DisabledAlphaBead" > >>>>> /> > >>>>>> + <component id="DisableChildrenBead" > >>> class="org.apache.royale.html. > >>> beads.DisableChildrenBead" > >>>>> /> > >>>>>> <component id="NumericOnlyTextInputBead" > >>>>> class="org.apache.royale.html.accessories.NumericOnlyTextInputBead" > >>> /> > >>>>>> <component id="PasswordInputBead" class="org.apache.royale.html. > >>> accessories.PasswordInputBead" > >>>>> /> > >>>>>> <component id="PasswordInputRemovableBead" > >>>>> class="org.apache.royale.html.accessories. > PasswordInputRemovableBead" > >>> /> > >>>>>> diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/ > >>>>> royale/html/beads/DisableChildrenBead.as > b/frameworks/projects/Basic/ > >>>>> src/main/royale/org/apache/royale/html/beads/DisableChildrenBead.as > >>>>>> new file mode 100644 > >>>>>> index 0000000..ca4ffa1 > >>>>>> --- /dev/null > >>>>>> +++ b/frameworks/projects/Basic/src/main/royale/org/apache/ > >>>>> royale/html/beads/DisableChildrenBead.as > >>>>>> @@ -0,0 +1,152 @@ > >>>>>> +/////////////////////////////////////////////////////////// > >>>>> ///////////////////// > >>>>>> +// > >>>>>> +// Licensed to the Apache Software Foundation (ASF) under one or > >>> more > >>>>>> +// contributor license agreements. See the NOTICE file > >>> distributed > >>>>> with > >>>>>> +// this work for additional information regarding copyright > >>> ownership. > >>>>>> +// The ASF licenses this file to You under the Apache License, > >>> Version > >>>>> 2.0 > >>>>>> +// (the "License"); you may not use this file except in compliance > >>> with > >>>>>> +// the License. You may obtain a copy of the License at > >>>>>> +// > >>>>>> +// > >>> https://na01.safelinks.protection.outlook.com/?url= > http%3A%2F%2Fwww.apach <https://na01.safelinks. > protection.outlook.com/?url=http%3A%2F%2Fwww.apach> > >>> e.org <http://e.org/>%2Flicenses%2FLICENSE-2.0&data=02%7C01%7C% > 7Ca9d54724bc9443dcb42d08d5 > >>> 2aa88b95%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% > 7C636461825737445515& > >>> sdata=X4LDergCv4sdMdUIj%2FWVxaN5m3Jz0hX4lMmnrVES4mE%3D&reserved=0 > >>>>>> +// > >>>>>> +// Unless required by applicable law or agreed to in writing, > >>> software > >>>>>> +// distributed under the License is distributed on an "AS IS" > >>> BASIS, > >>>>>> +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or > >>>>> implied. > >>>>>> +// See the License for the specific language governing permissions > >>> and > >>>>>> +// limitations under the License. > >>>>>> +// > >>>>>> +/////////////////////////////////////////////////////////// > >>>>> ///////////////////// > >>>>>> +package org.apache.royale.html.beads > >>>>>> +{ > >>>>>> + COMPILE::SWF { > >>>>>> + import flash.display.DisplayObjectContainer; > >>>>>> + } > >>>>>> + > >>>>>> + import org.apache.royale.core.IBead; > >>>>>> + import org.apache.royale.core.IStrand; > >>>>>> + import org.apache.royale.core.IUIBase; > >>>>>> + import org.apache.royale.core.UIHTMLElementWrapper; > >>>>>> + import org.apache.royale.events.Event; > >>>>>> + import org.apache.royale.events.IEventDispatcher; > >>>>>> + import org.apache.royale.events.ValueEvent; > >>>>>> + > >>>>>> + COMPILE::JS{ > >>>>>> + import org.apache.royale.core.WrappedHTMLElement; > >>>>>> + import org.apache.royale.core.HTMLElementWrapper; > >>>>>> + } > >>>>>> + /** > >>>>>> + * The DisableBead class is a specialty bead that can be used > >>> with > >>>>>> + * any UIBase. When disabled is true, the bead prevents > >>>>> interaction with the component. > >>>>>> + * The appearance of the component when disabled is > >>> controlled > >>> by > >>>>> a separate bead. > >>>>>> + * > >>>>>> + * @langversion 3.0 > >>>>>> + * @playerversion Flash 10.2 > >>>>>> + * @playerversion AIR 2.6 > >>>>>> + * @productversion Royale 0.0 > >>>>>> + */ > >>>>>> + public class DisableChildrenBead implements IBead > >>>>>> + { > >>>>>> + /** > >>>>>> + * constructor. > >>>>>> + * > >>>>>> + * @langversion 3.0 > >>>>>> + * @playerversion Flash 10.2 > >>>>>> + * @playerversion AIR 2.6 > >>>>>> + * @productversion Royale 0.0 > >>>>>> + */ > >>>>>> + public function DisableChildrenBead() > >>>>>> + { > >>>>>> + } > >>>>>> + > >>>>>> + private var _strand:IStrand; > >>>>>> + private var _disabled:Boolean; > >>>>>> + > >>>>>> + /** > >>>>>> + * @copy org.apache.royale.core.IBead#strand > >>>>>> + * > >>>>>> + * @langversion 3.0 > >>>>>> + * @playerversion Flash 10.2 > >>>>>> + * @playerversion AIR 2.6 > >>>>>> + * @productversion Royale 0.0 > >>>>>> + * @royaleignorecoercion HTMLInputElement > >>>>>> + * @royaleignorecoercion > >>> org.apache.royale.core.UIBase; > >>>>>> + */ > >>>>>> + public function set strand(value:IStrand):void > >>>>>> + { > >>>>>> + _strand = value; > >>>>>> + updateHost(); > >>>>>> + } > >>>>>> + > >>>>>> + public function get disabled():Boolean > >>>>>> + { > >>>>>> + return _disabled; > >>>>>> + } > >>>>>> + > >>>>>> + /** > >>>>>> + * @private > >>>>>> + * @royaleignorecoercion org.apache.royale.core. > >>>>> HTMLElementWrapper > >>>>>> + */ > >>>>>> + public function set disabled(value:Boolean):void > >>>>>> + { > >>>>>> + if (value != _disabled) > >>>>>> + { > >>>>>> + _disabled = value; > >>>>>> + updateHost(); > >>>>>> + throwChangeEvent(); > >>>>>> + } > >>>>>> + } > >>>>>> + > >>>>>> + private function disabledChangeHandler(e:Event):void > >>>>>> + { > >>>>>> + updateHost(); > >>>>>> + } > >>>>>> + > >>>>>> + private function get host():IUIBase > >>>>>> + { > >>>>>> + return _strand as IUIBase; > >>>>>> + } > >>>>>> + > >>>>>> + COMPILE::JS > >>>>>> + private var _lastTabVal:String; > >>>>>> + > >>>>>> + /** > >>>>>> + * @royaleignorecoercion org.apache.royale.core. > >>>>> HTMLElementWrapper > >>>>>> + */ > >>>>>> + private function updateHost():void > >>>>>> + { > >>>>>> + if(!_strand)//bail out > >>>>>> + return; > >>>>>> + COMPILE::SWF { > >>>>>> + var interactiveObject: > >>> DisplayObjectContainer > >>>>> = _strand as DisplayObjectContainer; > >>>>>> + interactiveObject.mouseChildren = > >>>>> !disabled; > >>>>>> + } > >>>>>> + > >>>>>> + COMPILE::JS { > >>>>>> + setDecendants((_strand as > >>>>> HTMLElementWrapper).element); > >>>>>> + } > >>>>>> + > >>>>>> + } > >>>>>> + > >>>>>> + COMPILE::JS > >>>>>> + private function setDecendants(elem:HTMLElement):void > >>>>>> + { > >>>>>> + elem.style["pointerEvents"] = _disabled ? > >>> "none" > >>> : > >>>>> ""; > >>>>>> + _disabled ? elem.setAttribute("tabindex", > >>> "-1") : > >>>>> elem.removeAttribute("tabindex"); > >>>>>> + elem = elem.firstChild as HTMLElement; > >>>>>> + while (elem) { > >>>>>> + setDecendants(elem); > >>>>>> + elem = elem.nextSibling as > >>> HTMLElement; > >>>>>> + } > >>>>>> + } > >>>>>> + > >>>>>> + private function throwChangeEvent():void > >>>>>> + { > >>>>>> + if (_strand) > >>>>>> + { > >>>>>> + IEventDispatcher(_strand). > >>> dispatchEvent(new > >>>>> ValueEvent("disabledChange", disabled)); > >>>>>> + } > >>>>>> + } > >>>>>> + > >>>>>> + > >>>>>> + } > >>>>>> +} > >>>>>> > >>>>>> -- > >>>>>> To stop receiving notification emails like this one, please contact > >>>>>> "comm...@royale.apache.org <mailto:comm...@royale.apache.org>" < > comm...@royale.apache.org <mailto:comm...@royale.apache.org>>. > >>>>> > >>>>> > >>>> > >>>> > >>>> -- > >>>> > >>>> Piotr Zarzycki > >>>> > >>>> Patreon: > >>> *https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.pat <https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.pat> > >>> reon.com <http://reon.com/>%2Fpiotrzarzycki&data=02%7C01%7C% > 7Ca9d54724bc9443dcb42d08d52aa88b > >>> 95%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% > 7C636461825737445515&sdata= > >>> WcTFjtNvzTnBh%2FDCDvxlUey80nWBGCjgjb6R76tbmQM%3D&reserved=0 > >>>> > >>> <https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.pat <https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.pat> > >>> reon.com <http://reon.com/>%2Fpiotrzarzycki&data=02%7C01%7C% > 7Ca9d54724bc9443dcb42d08d52aa88b > >>> 95%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% > 7C636461825737445515&sdata= > >>> WcTFjtNvzTnBh%2FDCDvxlUey80nWBGCjgjb6R76tbmQM%3D&reserved=0>* > >>> > >>> > >> > >> > >> -- > >> > >> Piotr Zarzycki > >> > >> Patreon: > >> *https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.patr <https://na01.safelinks. > protection.outlook.com/?url=https%3A%2F%2Fwww.patr> > >> eon.com <http://eon.com/>%2Fpiotrzarzycki&data=02%7C01%7C% > 7Ca9d54724bc9443dcb42d08d52aa88b95 > >> %7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% > 7C636461825737445515&sdata=WcT > >> FjtNvzTnBh%2FDCDvxlUey80nWBGCjgjb6R76tbmQM%3D&reserved=0 > >> <https://na01.safelinks.protection.outlook.com/?url= > https%3A%2F%2Fwww.patr <https://na01.safelinks. > protection.outlook.com/?url=https%3A%2F%2Fwww.patr> > >> eon.com <http://eon.com/>%2Fpiotrzarzycki&data=02%7C01%7C% > 7Ca9d54724bc9443dcb42d08d52aa88b95 > >> %7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% > 7C636461825737445515&sdata=WcT > >> FjtNvzTnBh%2FDCDvxlUey80nWBGCjgjb6R76tbmQM%3D&reserved=0>* > > -- Piotr Zarzycki Patreon: *https://www.patreon.com/piotrzarzycki <https://www.patreon.com/piotrzarzycki>*