I don’t think it’s after children are added. That’s why I asked.

I’ll try to check later.

> On Nov 13, 2017, at 3:36 PM, Piotr Zarzycki <piotrzarzyck...@gmail.com> wrote:
> 
> Maybe it's even should be split into two separate bead.
> 
> As for your question - initComplete is fired in addedToParent, after all
> stuff which is done related to current component. Not sure if it's include
> children, but I would check and give the feedback cause it will be precious
> information.
> 
> Piotr
> 
> 
> 2017-11-13 14:26 GMT+01:00 Harbs <harbs.li...@gmail.com>:
> 
>> 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>
>> wrote:
>>> 
>>> Why not listen to the container’s ‘initComplete’? Also, doesn’t
>> DisableBead work for containers as is?
>>> 
>>> 
>>> 
>>> ________________________________
>>> From: Piotr Zarzycki <piotrzarzyck...@gmail.com>
>>> Sent: Monday, November 13, 2017 3:15:54 PM
>>> To: 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>:
>>> 
>>>> 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 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://gitbox.apache.org/repos/asf/royale-asjs.git
>>>>> 
>>>>> commit c1cc651a6f03cbcdb6792eed367140404adf7863
>>>>> Author: Harbs <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
>>>>> +//
>>>>> +//      http://www.apache.org/licenses/LICENSE-2.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" <comm...@royale.apache.org>.
>>>> 
>>>> 
>>> 
>>> 
>>> --
>>> 
>>> Piotr Zarzycki
>>> 
>>> Patreon: *https://www.patreon.com/piotrzarzycki
>>> <https://www.patreon.com/piotrzarzycki>*
>> 
>> 
> 
> 
> -- 
> 
> Piotr Zarzycki
> 
> Patreon: *https://www.patreon.com/piotrzarzycki
> <https://www.patreon.com/piotrzarzycki>*

Reply via email to