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>*

Reply via email to