Repository: flex-asjs Updated Branches: refs/heads/release0.8.0 7a030dbc1 -> d6cb59b17
Intermediate changes for Accordion. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/d6cb59b1 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/d6cb59b1 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/d6cb59b1 Branch: refs/heads/release0.8.0 Commit: d6cb59b1769902d5e5bb61ce9d09680b79b21a68 Parents: 7a030db Author: Peter Ent <p...@apache.org> Authored: Thu Jun 1 15:32:11 2017 -0400 Committer: Peter Ent <p...@apache.org> Committed: Thu Jun 1 15:32:11 2017 -0400 ---------------------------------------------------------------------- .../flex/html/beads/AccordionCollapseBead.as | 5 +- .../html/beads/AccordionItemRendererView.as | 6 +- .../org/apache/flex/html/beads/AccordionView.as | 62 ++++++++++++++------ .../layouts/OneFlexibleChildHorizontalLayout.as | 4 ++ ...eFlexibleChildHorizontalLayoutForOverflow.as | 4 ++ .../layouts/OneFlexibleChildVerticalLayout.as | 4 ++ ...OneFlexibleChildVerticalLayoutForOverflow.as | 4 ++ .../Basic/src/main/resources/defaults.css | 2 +- 8 files changed, 67 insertions(+), 24 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionCollapseBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionCollapseBead.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionCollapseBead.as index 2dde93f..163c276 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionCollapseBead.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionCollapseBead.as @@ -22,6 +22,7 @@ package org.apache.flex.html.beads import org.apache.flex.core.IStrand; import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; + import org.apache.flex.events.IEventDispatcher; import org.apache.flex.html.Accordion; import org.apache.flex.html.beads.layouts.IOneFlexibleChildLayout; import org.apache.flex.html.supportClasses.ICollapsible; @@ -74,8 +75,8 @@ package org.apache.flex.html.beads lastElement.collapse(); } lastSelectedIndex = host.selectedIndex; - layout.flexibleChild = newChild.id; - layout.layout(); + layout.flexibleChild = String(host.selectedIndex); + IEventDispatcher(_strand).dispatchEvent(new Event("layoutNeeded")); } protected function get layout():IOneFlexibleChildLayout http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as index 85e2b79..9c59377 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as @@ -19,6 +19,7 @@ package org.apache.flex.html.beads { import org.apache.flex.events.Event; + import org.apache.flex.events.IEventDispatcher; import org.apache.flex.html.supportClasses.ICollapsible; /** @@ -53,12 +54,13 @@ package org.apache.flex.html.beads var collapsibleStrand:ICollapsible = _strand as ICollapsible; if (!collapsibleStrand.collapsed) { - super.performLayout(event); + IEventDispatcher(_strand).dispatchEvent(new Event("layoutNeeded")); +// super.performLayout(event); } else // skip layout for viewport children { COMPILE::SWF { // no longer needed layoutViewBeforeContentLayout(); - afterLayout(); + //afterLayout(); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionView.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionView.as index 947da98..141c97d 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionView.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/AccordionView.as @@ -21,26 +21,62 @@ package org.apache.flex.html.beads import org.apache.flex.core.ISelectionModel; import org.apache.flex.core.IStyleableObject; import org.apache.flex.core.ValuesManager; + import org.apache.flex.core.IDocument; + import org.apache.flex.core.ILayoutHost; + import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.html.beads.layouts.IOneFlexibleChildLayout; import org.apache.flex.html.supportClasses.ICollapsible; import org.apache.flex.utils.StrandUtils; + /** + * The AccordionView sets up the components for the Accordion component. + * + * @toplevel + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ public class AccordionView extends ListView { - private var _layout:IOneFlexibleChildLayout; + /** + * Constructor. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ public function AccordionView() { super(); } + private var _layout:IOneFlexibleChildLayout; + private function get elements():Array + { + var host:UIBase = _strand as UIBase; + var e:Array = []; + for (var i:int = 0; i < host.numElements; i++) { + e.push(host.getElementAt(i)); + } + return e; + } + + /** + * @private + */ override protected function selectionChangeHandler(event:Event):void { super.selectionChangeHandler(event); - var renderer:IStyleableObject = dataGroup.getItemRendererForIndex(listModel.selectedIndex) as IStyleableObject; - layout.flexibleChild = renderer.id; + var model:ISelectionModel = StrandUtils.loadBead(ISelectionModel, "iBeadModel", host) as ISelectionModel; + layout.flexibleChild = String(model.selectedIndex); } + /** + * @private + */ public function get layout():IOneFlexibleChildLayout { if (!_layout) @@ -55,28 +91,16 @@ package org.apache.flex.html.beads if (_layout) { _strand.addBead(_layout); + IDocument(_layout).setDocument(elements); } } return _layout; } - override protected function performLayout(event:Event):void - { - if (layout) - { - if (!layout.flexibleChild) - { - var model:ISelectionModel = StrandUtils.loadBead(ISelectionModel, "iBeadModel", host) as ISelectionModel; - if (model.selectedIndex > -1) - { - layout.flexibleChild = (dataGroup.getItemRendererForIndex(model.selectedIndex) as IStyleableObject).id; - } - } - super.performLayout(event); - } - } - COMPILE::SWF + /** + * @private + */ override protected function itemsCreatedHandler(event:Event):void { var n:int = dataGroup.numElements; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as index 24a1782..2f81699 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayout.as @@ -146,6 +146,8 @@ package org.apache.flex.html.beads.layouts COMPILE::JS override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document[flexibleChild]; @@ -173,6 +175,8 @@ package org.apache.flex.html.beads.layouts COMPILE::SWF override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document.hasOwnProperty(flexibleChild) ? document[flexibleChild] : null; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as index f75c08f..2129045 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildHorizontalLayoutForOverflow.as @@ -119,6 +119,8 @@ package org.apache.flex.html.beads.layouts COMPILE::JS override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document[flexibleChild]; @@ -146,6 +148,8 @@ package org.apache.flex.html.beads.layouts COMPILE::SWF override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document.hasOwnProperty(flexibleChild) ? document[flexibleChild] : null; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as index 7f4b462..53617fb 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayout.as @@ -147,6 +147,8 @@ package org.apache.flex.html.beads.layouts COMPILE::JS override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document[flexibleChild]; @@ -174,6 +176,8 @@ package org.apache.flex.html.beads.layouts COMPILE::SWF override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document.hasOwnProperty(flexibleChild) ? document[flexibleChild] : null; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as index da59ec8..4aabc7d 100644 --- a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as +++ b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/beads/layouts/OneFlexibleChildVerticalLayoutForOverflow.as @@ -121,6 +121,8 @@ package org.apache.flex.html.beads.layouts COMPILE::JS override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document[flexibleChild]; @@ -148,6 +150,8 @@ package org.apache.flex.html.beads.layouts COMPILE::SWF override public function layout():Boolean { + if (flexibleChild == null) return false; + var contentView:ILayoutView = layoutView; actualChild = document.hasOwnProperty(flexibleChild) ? document[flexibleChild] : null; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d6cb59b1/frameworks/projects/Basic/src/main/resources/defaults.css ---------------------------------------------------------------------- diff --git a/frameworks/projects/Basic/src/main/resources/defaults.css b/frameworks/projects/Basic/src/main/resources/defaults.css index e38763c..7e839d1 100644 --- a/frameworks/projects/Basic/src/main/resources/defaults.css +++ b/frameworks/projects/Basic/src/main/resources/defaults.css @@ -365,7 +365,7 @@ Accordion IBeadModel: ClassReference("org.apache.flex.html.beads.models.ArraySelectionModel"); IBeadView: ClassReference("org.apache.flex.html.beads.AccordionView"); IBeadController: ClassReference("org.apache.flex.html.beads.controllers.ListSingleSelectionMouseController"); - IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayout"); + IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.OneFlexibleChildVerticalLayoutForOverflow"); IDataProviderItemRendererMapper: ClassReference("org.apache.flex.html.beads.DataItemRendererFactoryForArrayData"); IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory"); IItemRenderer: ClassReference("org.apache.flex.html.supportClasses.AccordionItemRenderer");