This is an automated email from the ASF dual-hosted git repository. harbs pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 628be8bad8da997190b8a57b0040b9ed8026d963 Author: Harbs <[email protected]> AuthorDate: Sun Jan 2 12:52:05 2022 +0200 added needsLayout optimization --- .../royale/org/apache/royale/core/GroupBase.as | 12 ++++++++- .../royale/org/apache/royale/html/ControlBar.as | 29 ++++++++++------------ .../main/royale/org/apache/royale/html/TitleBar.as | 13 ---------- .../apache/royale/html/beads/DataContainerView.as | 10 -------- .../org/apache/royale/html/beads/SliderView.as | 8 ++---- .../org/apache/royale/html/beads/TreeGridView.as | 15 +++-------- .../org/apache/royale/html/NodeElementBase.as | 5 ++++ .../org/apache/royale/svg/elements/SVGBase.as | 4 +++ 8 files changed, 39 insertions(+), 57 deletions(-) diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as index 5c91d86..a00f2b9 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/core/GroupBase.as @@ -109,8 +109,18 @@ package org.apache.royale.core super.addedToParent(); // Load the layout bead if it hasn't already been loaded. - loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this); + if(needsLayout()) + loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this); } + + /** + * Subclasses can override this method to declare whether they need a layout. + * Components which do not need a layout can avoid searching for layout beads + */ + protected function needsLayout():Boolean + { + return true; + } /* * IContainer diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as index c877f0c..2f74897 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/ControlBar.as @@ -19,15 +19,12 @@ package org.apache.royale.html { - import org.apache.royale.core.IBeadLayout; import org.apache.royale.core.IChrome; - import org.apache.royale.core.ValuesManager; - import org.apache.royale.utils.loadBeadFromValuesManager; - COMPILE::JS - { - import org.apache.royale.core.WrappedHTMLElement; + COMPILE::JS + { + import org.apache.royale.core.WrappedHTMLElement; import org.apache.royale.html.util.addElementToWrapper; - } + } /** * The ControlBar class is used within a Panel as a place to position @@ -43,7 +40,7 @@ package org.apache.royale.html * org.apache.royale.html.beads.IBorderBead: if present, displays a border around the component. * org.apache.royale.html.beads.IBackgroundBead: if present, displays a solid background below the ControlBar. * - * @toplevel + * @toplevel * @langversion 3.0 * @playerversion Flash 10.2 * @playerversion AIR 2.6 @@ -66,17 +63,17 @@ package org.apache.royale.html typeNames = "ControlBar"; } - /** - * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement - */ - COMPILE::JS - override protected function createElement():WrappedHTMLElement - { + /** + * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement + */ + COMPILE::JS + override protected function createElement():WrappedHTMLElement + { addElementToWrapper(this,'div'); typeNames = "ControlBar"; - return element; - } + return element; + } } } diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as index 0b8c457..2f34ff1 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/TitleBar.as @@ -18,12 +18,8 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.royale.html { - import org.apache.royale.core.IBead; - import org.apache.royale.core.IBeadLayout; import org.apache.royale.core.IChrome; import org.apache.royale.core.ITitleBarModel; - import org.apache.royale.core.ValuesManager; - import org.apache.royale.utils.loadBeadFromValuesManager; COMPILE::JS { import org.apache.royale.core.WrappedHTMLElement; @@ -128,15 +124,6 @@ package org.apache.royale.html ITitleBarModel(model).showCloseButton = value; } - /** - * @private - */ - override public function addedToParent():void - { - super.addedToParent(); - loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this); - } - /** * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement */ diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as index 0f3e4ea..b015741 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DataContainerView.as @@ -18,10 +18,6 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.royale.html.beads { - import org.apache.royale.core.IBead; - import org.apache.royale.core.IBeadLayout; - import org.apache.royale.core.IBeadModel; - import org.apache.royale.core.IBeadView; import org.apache.royale.core.IChild; import org.apache.royale.core.IDataProviderItemRendererMapper; import org.apache.royale.core.IDataProviderModel; @@ -31,15 +27,9 @@ package org.apache.royale.html.beads import org.apache.royale.core.IParent; import org.apache.royale.core.IStrand; import org.apache.royale.core.IUIBase; - import org.apache.royale.core.Strand; - import org.apache.royale.core.UIBase; - import org.apache.royale.core.ValuesManager; import org.apache.royale.events.Event; - import org.apache.royale.events.IEventDispatcher; import org.apache.royale.events.ItemAddedEvent; import org.apache.royale.events.ItemRemovedEvent; - import org.apache.royale.html.supportClasses.Border; - import org.apache.royale.html.supportClasses.DataGroup; import org.apache.royale.html.beads.IListView; import org.apache.royale.events.Event; import org.apache.royale.html.supportClasses.DataItemRenderer; diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as index 99e5b3d..17eb60b 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/SliderView.as @@ -39,6 +39,7 @@ package org.apache.royale.html.beads import org.apache.royale.html.Button; import org.apache.royale.html.TextButton; import org.apache.royale.utils.sendStrandEvent; + import org.apache.royale.utils.loadBeadFromValuesManager; /** * The SliderView class creates the visual elements of the org.apache.royale.html.Slider @@ -81,12 +82,7 @@ package org.apache.royale.html.beads override public function set strand(value:IStrand):void { super.strand = value; - - var layout:IBeadLayout = _strand.getBeadByType(IBeadLayout) as IBeadLayout; - if (layout == null) { - var klass:Class = ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout"); - _strand.addBead(new klass() as IBead); - } + loadBeadFromValuesManager(IBeadLayout,"iBeadLayout",_strand); COMPILE::SWF { var s:UIBase = UIBase(_strand); diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as index ac5d1a6..781e735 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/TreeGridView.as @@ -45,6 +45,7 @@ package org.apache.royale.html.beads import org.apache.royale.html.beads.models.SingleSelectionCollectionViewModel; import org.apache.royale.html.supportClasses.IDataGridColumn; import org.apache.royale.utils.sendStrandEvent; + import org.apache.royale.utils.loadBeadFromValuesManager; /** * The TreeGridView class is responsible for creating the sub-components of the TreeGrid: @@ -117,17 +118,9 @@ package org.apache.royale.html.beads { super.strand = value; _strand = value; - - var layout:IBeadLayout = _strand.getBeadByType(TreeGridLayout) as IBeadLayout; - if (layout == null) { - var layoutClass:Class = ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout") as Class; - if (layoutClass != null) { - layout = new layoutClass() as IBeadLayout; - } else { - layout = new TreeGridLayout(); // default - } - _strand.addBead(layout); - } + var layout:IBeadLayout = loadBeadFromValuesManager(IBeadLayout,"iBeadLayout",_strand) as IBeadLayout; + if(!layout) + _strand.addBead(new TreeGridLayout()); // default listenOnStrand("beadsAdded", finishSetup); } diff --git a/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as b/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as index 2f98dfb..8d4298f 100644 --- a/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as +++ b/frameworks/projects/HTML/src/main/royale/org/apache/royale/html/NodeElementBase.as @@ -38,6 +38,11 @@ package org.apache.royale.html return false; } + override protected function needsLayout():Boolean + { + return false; + } + COMPILE::SWF { private var _nodeValue:String; diff --git a/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as b/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as index 5093114..e7888e0 100644 --- a/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as +++ b/frameworks/projects/HTML/src/main/royale/org/apache/royale/svg/elements/SVGBase.as @@ -34,6 +34,10 @@ package org.apache.royale.svg.elements { return false; } + override protected function needsLayout():Boolean + { + return false; + } override public function get x():Number{ return Number(element.getAttribute("x")); }
