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