This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 037768395fcc6af4216cb1f49a0152bc2c1866ae Author: Alex Harui <[email protected]> AuthorDate: Sun Dec 2 22:24:10 2018 -0800 refactor virtual layout so it can be re-used in MXRoyale --- .../Basic/src/main/resources/basic-manifest.xml | 1 + .../apache/royale/html/beads/DataContainerView.as | 9 +- .../royale/html/beads/VirtualDataContainerView.as | 170 ++++----------------- .../apache/royale/html/beads/VirtualListView.as | 21 +-- .../beads/layouts/VirtualListVerticalLayout.as | 15 +- 5 files changed, 43 insertions(+), 173 deletions(-) diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml index fcb5c78..2a5b73e 100644 --- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml +++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml @@ -81,6 +81,7 @@ <component id="RemovableBasicLayout" class="org.apache.royale.html.beads.layouts.RemovableBasicLayout"/> <component id="LayoutChangeNotifier" class="org.apache.royale.html.beads.layouts.LayoutChangeNotifier"/> <component id="VerticalLayout" class="org.apache.royale.html.beads.layouts.VerticalLayout"/> + <component id="VirtualDataContainerView" class="org.apache.royale.html.beads.VirtualDataContainerView"/> <component id="VirtualListView" class="org.apache.royale.html.beads.VirtualListView"/> <component id="VirtualListVerticalLayout" class="org.apache.royale.html.beads.layouts.VirtualListVerticalLayout"/> <component id="VerticalLayoutWithPaddingAndGap" class="org.apache.royale.html.beads.layouts.VerticalLayoutWithPaddingAndGap"/> 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 3641ad8..e4fa1fa 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 @@ -121,14 +121,7 @@ package org.apache.royale.html.beads protected function dataProviderChangeHandler(event:Event):void { // trace("DataContainerView: dataProviderChangeHandler"); - COMPILE::JS - { - performLayout(event); - } - COMPILE::SWF - { - host.dispatchEvent(new Event("layoutNeeded")); - } + host.dispatchEvent(new Event("layoutNeeded")); } /** diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as index 7e6d17e..2901996 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualDataContainerView.as @@ -18,7 +18,7 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.royale.html.beads { - import org.apache.royale.html.beads.ContainerView; + import org.apache.royale.html.beads.DataContainerView; import org.apache.royale.core.BeadViewBase; import org.apache.royale.core.ContainerBase; import org.apache.royale.core.IBead; @@ -43,6 +43,9 @@ package org.apache.royale.html.beads import org.apache.royale.html.supportClasses.Border; import org.apache.royale.html.supportClasses.DataGroup; import org.apache.royale.html.beads.IListView; + COMPILE::SWF { + import org.apache.royale.geom.Size; + } /** * The DataContainerView provides the visual elements for the DataContainer. @@ -53,8 +56,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.8 */ - COMPILE::JS - public class VirtualDataContainerView extends ContainerView implements IListView + public class VirtualDataContainerView extends DataContainerView implements IListView { public function VirtualDataContainerView() { @@ -77,147 +79,29 @@ package org.apache.royale.html.beads host.addEventListener("beadsAdded", beadsAddedHandler); } - protected var dataModel:IDataProviderModel; - - /** - * @royaleignorecoercion org.apache.royale.core.IItemRendererParent - */ - public function get dataGroup():IItemRendererParent - { - return super.contentView as IItemRendererParent; - } - - protected function beadsAddedHandler(event:Event):void - { - dataModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel; - host.addEventListener("itemsCreated", itemsCreatedHandler); - dataModel.addEventListener("dataProviderChanged", dataProviderChangeHandler); - } - - /** - * @private - */ - override protected function handleInitComplete(event:Event):void - { - super.handleInitComplete(event); - } - - /** - * @private - */ - protected function itemsCreatedHandler(event:Event):void - { - // trace("DataContainerView: itemsCreatedHandler"); - host.dispatchEvent(new Event("layoutNeeded")); - } - - /** - * @private - */ - protected function dataProviderChangeHandler(event:Event):void - { - // trace("DataContainerView: dataProviderChangeHandler"); - performLayout(event); - } - - } - - COMPILE::SWF - public class VirtualDataContainerView extends ContainerView implements IListView - { - public function VirtualDataContainerView() - { - super(); - } - - protected var dataModel:IDataProviderModel; - - /** - * @private - */ - override public function get host():IUIBase - { - return _strand as IUIBase; - } - - /** - * @copy org.apache.royale.core.IBead#strand - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.8 - */ - override public function set strand(value:IStrand):void - { - _strand = value; - super.strand = value; - - host.addEventListener("beadsAdded", beadsAddedHandler); - } - - override protected function completeSetup():void - { - super.completeSetup(); - - // list is not interested in UI children, it wants to know when new items - // have been added or the dataProvider has changed. -// host.removeEventListener("childrenAdded", childrenChangedHandler); -// host.removeEventListener("childrenAdded", performLayout); - } - - protected function beadsAddedHandler(event:Event):void - { - dataModel = _strand.getBeadByType(IDataProviderModel) as IDataProviderModel; - dataModel.addEventListener("dataProviderChanged", dataProviderChangeHandler); - } - - override protected function handleInitComplete(event:Event):void - { - super.handleInitComplete(event); - } - - /** - * The area holding the itemRenderers. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.8 - */ - public function get dataGroup():IItemRendererParent - { - return super.contentView as IItemRendererParent; - } - - /** - * @private - */ - override public function get resizableView():IUIBase - { - return _strand as IUIBase; - } - - /** - * @private - */ - protected function dataProviderChangeHandler(event:Event):void - { - host.dispatchEvent(new Event("layoutNeeded")); - } - /** - * respond to a change in size or request to re-layout everything - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion Royale 0.0 + * @private */ - override protected function resizeHandler(event:Event):void - { - // might need to do something here, not sure yet. - super.resizeHandler(event); - } + COMPILE::SWF + override public function get resizableView():IUIBase + { + return _strand as IUIBase; + } + + COMPILE::SWF + override protected function calculateContentSize():Size + { + return _lastContentSize; + } + + COMPILE::SWF + private var _lastContentSize:Size; + + COMPILE::SWF + public function set lastContentSize(value:Size):void + { + _lastContentSize = value; + } } + } diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as index da97038..6b4a259 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/VirtualListView.as @@ -40,9 +40,6 @@ package org.apache.royale.html.beads import org.apache.royale.events.IEventDispatcher; import org.apache.royale.html.supportClasses.Border; import org.apache.royale.html.supportClasses.DataGroup; - COMPILE::SWF { - import org.apache.royale.geom.Size; - } /** * The List class creates the visual elements of the org.apache.royale.html.List @@ -55,7 +52,7 @@ package org.apache.royale.html.beads * @playerversion AIR 2.6 * @productversion Royale 0.0 */ - public class VirtualListView extends DataContainerView // was VirtualDataContainerView + public class VirtualListView extends VirtualDataContainerView { public function VirtualListView() { @@ -112,21 +109,5 @@ package org.apache.royale.html.beads lastRollOverIndex = (listModel as IRollOverModel).rollOverIndex; } - COMPILE::SWF - override protected function calculateContentSize():Size - { - return _lastContentSize; - } - - COMPILE::SWF - private var _lastContentSize:Size; - - COMPILE::SWF - public function set lastContentSize(value:Size):void - { - _lastContentSize = value; - } - - } } diff --git a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as index f62ae94..923b8b9 100644 --- a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as +++ b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/layouts/VirtualListVerticalLayout.as @@ -44,7 +44,7 @@ package org.apache.royale.html.beads.layouts import org.apache.royale.events.Event; import org.apache.royale.events.IEventDispatcher; import org.apache.royale.geom.Rectangle; - import org.apache.royale.html.beads.VirtualListView; + import org.apache.royale.html.beads.VirtualDataContainerView; import org.apache.royale.utils.CSSUtils; COMPILE::SWF { @@ -112,6 +112,7 @@ package org.apache.royale.html.beads.layouts * @playerversion Flash 10.2 * @playerversion AIR 2.6 * @productversion Royale 0.0 + * @royaleignorecoercion Array * @royaleignorecoercion org.apache.royale.core.ILayoutHost * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement * @royaleignorecoercion org.apache.royale.core.IListPresentationModel @@ -134,6 +135,11 @@ package org.apache.royale.html.beads.layouts var maxWidth:Number = 0; var maxHeight:Number = 0; var dp:Array = dataProviderModel.dataProvider as Array; + if (!dp) + { + inLayout = false; + return true; + } var presentationModel:IListPresentationModel = (host as IStrandWithPresentationModel).presentationModel as IListPresentationModel; var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent(); var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent(); @@ -238,7 +244,7 @@ package org.apache.royale.html.beads.layouts } visibleIndexes = visibleIndexes.sort(numberSort); - var view:VirtualListView = host.getBeadByType(VirtualListView) as VirtualListView; + var view:VirtualDataContainerView = host.getBeadByType(VirtualDataContainerView) as VirtualDataContainerView; view.lastContentSize = new Size(hostWidth, dp.length * presentationModel.rowHeight); inLayout = false; @@ -254,6 +260,11 @@ package org.apache.royale.html.beads.layouts // going off-screen var contentView:ILayoutView = layoutView; var dp:Array = dataProviderModel.dataProvider as Array; + if (!dp) + { + inLayout = false; + return true; + } var presentationModel:IListPresentationModel = (host as IStrandWithPresentationModel).presentationModel as IListPresentationModel; var totalHeight:Number = presentationModel.rowHeight * dp.length; var viewportTop:Number = Math.max(contentView.element.scrollTop, 0);
