Move layout event control into LayoutBase from GroupView and updated affected classes. Updated chart layouts to conform to new layout protocol.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/87efeed5 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/87efeed5 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/87efeed5 Branch: refs/heads/dual Commit: 87efeed5750b3ecb94754e3dcd1156333102834d Parents: ae5cb4e Author: Peter Ent <[email protected]> Authored: Thu Apr 13 10:17:13 2017 -0400 Committer: Peter Ent <[email protected]> Committed: Thu Apr 13 10:17:13 2017 -0400 ---------------------------------------------------------------------- .../org/apache/flex/charts/beads/ChartView.as | 12 +- .../flex/charts/beads/layouts/BarChartLayout.as | 6 +- .../beads/layouts/BarChartLayoutForArrayList.as | 8 +- .../charts/beads/layouts/ChartBaseLayout.as | 25 ++-- .../charts/beads/layouts/ColumnChartLayout.as | 6 +- .../layouts/ColumnChartLayoutForArrayList.as | 6 +- .../layouts/LineChartCategoryVsLinearLayout.as | 6 +- .../layouts/LineChartLinearVsLinearLayout.as | 6 +- .../flex/charts/beads/layouts/PieChartLayout.as | 6 +- .../beads/layouts/PieChartLayoutForArrayList.as | 6 +- .../beads/layouts/StackedBarChartLayout.as | 6 +- .../StackedBarChartLayoutForArrayList.as | 6 +- .../beads/layouts/StackedColumnChartLayout.as | 6 +- .../StackedColumnChartLayoutForArrayList.as | 6 +- .../flex/org/apache/flex/core/ILayoutHost.as | 20 ++++ .../main/flex/org/apache/flex/core/GroupBase.as | 13 ++ .../flex/org/apache/flex/core/LayoutBase.as | 118 +++++++++++++++++++ .../html/beads/AccordionItemRendererView.as | 2 +- .../org/apache/flex/html/beads/ContainerView.as | 46 ++++---- .../apache/flex/html/beads/DataContainerView.as | 25 ++-- .../org/apache/flex/html/beads/GroupView.as | 112 +----------------- .../flex/html/beads/layouts/ButtonBarLayout.as | 3 + .../ButtonBarButtonItemRenderer.as | 9 +- .../html/supportClasses/MXMLItemRenderer.as | 10 ++ .../HTML/src/main/resources/defaults.css | 1 + 25 files changed, 282 insertions(+), 188 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as index 0d089c6..2dd7d81 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/ChartView.as @@ -165,14 +165,6 @@ package org.apache.flex.charts.beads dataGroup.removeAllItemRenderers(); } - - /** - * @private - */ - override protected function handleChildrenAdded(event:Event):void - { - // ignore for charts. - } /** * ChartView overrides performLayout so that the exact area of the ChartDataGroup can @@ -184,7 +176,7 @@ package org.apache.flex.charts.beads * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - override protected function layoutViewBeforeContentLayout():void + override public function beforeLayout():void { var metrics:Rectangle = CSSContainerUtils.getBorderAndPaddingMetrics(_strand); @@ -233,7 +225,7 @@ package org.apache.flex.charts.beads /** * @private */ - override protected function layoutViewAfterContentLayout():void + override public function afterLayout():void { // ignore for charts } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayout.as index 4172b1c..3419dbf 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayout.as @@ -76,12 +76,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var n:int = dp.length; var useWidth:Number = UIBase(chartDataGroup).width; @@ -148,6 +148,8 @@ package org.apache.flex.charts.beads.layouts ypos -= gap; } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayoutForArrayList.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayoutForArrayList.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayoutForArrayList.as index 39710e8..049055f 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayoutForArrayList.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/BarChartLayoutForArrayList.as @@ -56,14 +56,14 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:ArrayList = selectionModel.dataProvider as ArrayList; if (!dp) - return; + return false; if (dp.length == 0) - return; + return false; var n:int = dp.length; var useWidth:Number = UIBase(chartDataGroup).width; @@ -130,6 +130,8 @@ package org.apache.flex.charts.beads.layouts ypos -= gap; } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as index 24760b4..5b8d1ff 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as @@ -22,16 +22,18 @@ package org.apache.flex.charts.beads.layouts import org.apache.flex.charts.core.IChartDataGroup; import org.apache.flex.charts.core.IHorizontalAxisBead; import org.apache.flex.charts.core.IVerticalAxisBead; + import org.apache.flex.core.LayoutBase; import org.apache.flex.core.IBeadLayout; import org.apache.flex.core.ILayoutHost; import org.apache.flex.core.IStrand; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; - public class ChartBaseLayout implements IBeadLayout + public class ChartBaseLayout extends LayoutBase implements IBeadLayout { public function ChartBaseLayout() { + super(); } private var _strand:IStrand; @@ -44,8 +46,9 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - public function set strand(value:IStrand):void + override public function set strand(value:IStrand):void { + super.strand = value; _strand = value; } public function get strand():IStrand @@ -125,11 +128,11 @@ package org.apache.flex.charts.beads.layouts /** * @copy org.apache.flex.core.IBeadLayout#layout */ - public function layout():Boolean - { - performLayout(); - return true; - } +// public function layout():Boolean +// { +// performLayout(); +// return true; +// } /** * Subclasses should implement this to draw the chart, adding elements to the chartDataGroup. @@ -139,9 +142,9 @@ package org.apache.flex.charts.beads.layouts * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - protected function performLayout():void - { - // implement in subclass - } +// protected function performLayout():void +// { +// // implement in subclass +// } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as index 56f5f10..cad0ede 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as @@ -67,12 +67,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var n:int = dp.length; var xpos:Number = 0; @@ -137,6 +137,8 @@ package org.apache.flex.charts.beads.layouts xpos += gap; } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayoutForArrayList.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayoutForArrayList.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayoutForArrayList.as index 64b065d..93387da 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayoutForArrayList.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/ColumnChartLayoutForArrayList.as @@ -56,12 +56,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:ArrayList = selectionModel.dataProvider as ArrayList; if (!dp) - return; + return false; var n:int = dp.length; var xpos:Number = 0; @@ -126,6 +126,8 @@ package org.apache.flex.charts.beads.layouts xpos += gap; } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as index 10b1324..505abb1 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as @@ -49,12 +49,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -149,6 +149,8 @@ package org.apache.flex.charts.beads.layouts renderer.points = seriesPoints[s].points; } } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as index 4dd0ab3..8b410d3 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as @@ -49,12 +49,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -163,6 +163,8 @@ package org.apache.flex.charts.beads.layouts renderer.points = seriesPoints[s].points; } } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayout.as index 0ec982a..c49e47d 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayout.as @@ -57,12 +57,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -133,6 +133,8 @@ package org.apache.flex.charts.beads.layouts start += arc; } } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayoutForArrayList.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayoutForArrayList.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayoutForArrayList.as index f206cc4..1acedb3 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayoutForArrayList.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/PieChartLayoutForArrayList.as @@ -59,12 +59,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:ArrayList = selectionModel.dataProvider as ArrayList; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -135,6 +135,8 @@ package org.apache.flex.charts.beads.layouts start += arc; } } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as index 61a910e..6795755 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as @@ -77,12 +77,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -161,6 +161,8 @@ package org.apache.flex.charts.beads.layouts ypos -= (itemHeight + gap); } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayoutForArrayList.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayoutForArrayList.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayoutForArrayList.as index 9edab56..f91add4 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayoutForArrayList.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedBarChartLayoutForArrayList.as @@ -58,12 +58,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:ArrayList = selectionModel.dataProvider as ArrayList; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -142,6 +142,8 @@ package org.apache.flex.charts.beads.layouts ypos -= (itemHeight + gap); } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as index fbe5989..0879769 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as @@ -76,12 +76,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:Array = selectionModel.dataProvider as Array; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -158,6 +158,8 @@ package org.apache.flex.charts.beads.layouts xpos += gap + itemWidth; } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayoutForArrayList.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayoutForArrayList.as b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayoutForArrayList.as index 355205a..bc1a136 100644 --- a/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayoutForArrayList.as +++ b/frameworks/projects/Charts/src/main/flex/org/apache/flex/charts/beads/layouts/StackedColumnChartLayoutForArrayList.as @@ -57,12 +57,12 @@ package org.apache.flex.charts.beads.layouts /** * @private */ - override protected function performLayout():void + override public function layout():Boolean { var selectionModel:ISelectionModel = strand.getBeadByType(ISelectionModel) as ISelectionModel; var dp:ArrayList = selectionModel.dataProvider as ArrayList; if (!dp) - return; + return false; var layoutParent:ILayoutHost = strand.getBeadByType(ILayoutHost) as ILayoutHost; var contentView:IParentIUIBase = layoutParent.contentView as IParentIUIBase; @@ -139,6 +139,8 @@ package org.apache.flex.charts.beads.layouts xpos += gap + itemWidth; } + + return true; } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as index dfd85d6..06d3084 100644 --- a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as +++ b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ILayoutHost.as @@ -40,5 +40,25 @@ package org.apache.flex.core * @productversion FlexJS 0.8 */ function get contentView():ILayoutView; + + /** + * Invoked prior to performing the layout. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + function beforeLayout():void; + + /** + * Invoked after performing the layout. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + function afterLayout():void; } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as index e4dfb1f..815101a 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/GroupBase.as @@ -101,6 +101,19 @@ package org.apache.flex.core return element; } + override public function addedToParent():void + { + super.addedToParent(); + + // Load the layout bead if it hasn't already been loaded. + var layout:IBeadLayout = getBeadByType(IBeadLayout) as IBeadLayout; + if (!layout) + { + layout = new (ValuesManager.valuesImpl.getValue(this, "iBeadLayout")) as IBeadLayout; + addBead(layout); + } + } + /* * IContainer */ http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/LayoutBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/LayoutBase.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/LayoutBase.as index dde6448..f23f035 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/LayoutBase.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/core/LayoutBase.as @@ -27,6 +27,8 @@ package org.apache.flex.core import org.apache.flex.core.IParent; import org.apache.flex.core.IStrand; import org.apache.flex.core.ValuesManager; + import org.apache.flex.events.IEventDispatcher; + import org.apache.flex.events.Event; import org.apache.flex.utils.CSSUtils; /** @@ -76,6 +78,92 @@ package org.apache.flex.core public function set strand(value:IStrand):void { host = value as ILayoutChild; + + IEventDispatcher(host).addEventListener("widthChanged", handleSizeChange); + IEventDispatcher(host).addEventListener("heightChanged", handleSizeChange); + IEventDispatcher(host).addEventListener("sizeChanged", handleSizeChange); + + IEventDispatcher(host).addEventListener("childrenAdded", handleChildrenAdded); + IEventDispatcher(host).addEventListener("initComplete", handleInitComplete); + + IEventDispatcher(host).addEventListener("layoutNeeded", handleLayoutNeeded); + } + + /** + * Changes in size to the host strand are handled (by default) by running the + * layout sequence. Subclasses can override this function and use event.type + * to handle specific changes in dimension. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + protected function handleSizeChange(event:Event):void + { + performLayout(); + } + + /** + * Handles the addition of children to the host's layoutView by listening for + * size changes in the children. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + protected function handleChildrenAdded(event:Event):void + { + COMPILE::SWF { + var n:Number = layoutView.numElements; + for(var i:int=0; i < n; i++) { + var child:IEventDispatcher = layoutView.getElementAt(i) as IEventDispatcher; + child.addEventListener("widthChanged", childResizeHandler); + child.addEventListener("heightChanged", childResizeHandler); + child.addEventListener("sizeChanged", childResizeHandler); + } + } + } + + /** + * If changes happen to a layoutView's child, this function will perform the + * layout again. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + protected function childResizeHandler(event:Event):void + { + performLayout(); + } + + /** + * Called whenever "layoutNeeded" event is dispatched against the host strand. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + protected function handleLayoutNeeded(event:Event):void + { + performLayout(); + } + + /** + * Handles the final start-up condition by running the layout an initial time. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + protected function handleInitComplete(event:Event):void + { + performLayout(); } /** @@ -148,6 +236,36 @@ package org.apache.flex.core var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost(); return viewBead.contentView; } + + private var isLayoutRunning:Boolean = false; + + /** + * Performs the layout in three parts: before, layout, after. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion FlexJS 0.8 + */ + public function performLayout():void + { + // avoid running this layout instance recursively. + if (isLayoutRunning) return; + + isLayoutRunning = true; + + var viewBead:ILayoutHost = (host as ILayoutParent).getLayoutHost(); + + viewBead.beforeLayout(); + + if (layout()) { + viewBead.afterLayout(); + } + + isLayoutRunning = false; + + IEventDispatcher(host).dispatchEvent(new Event("layoutComplete")); + } /** * @copy org.apache.flex.core.IBeadLayout#layout http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as index bc9f89d..85e2b79 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/AccordionItemRendererView.as @@ -58,7 +58,7 @@ package org.apache.flex.html.beads { COMPILE::SWF { // no longer needed layoutViewBeforeContentLayout(); - layoutViewAfterContentLayout(); + afterLayout(); } } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as index 4de5634..ac723a9 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/ContainerView.as @@ -166,7 +166,7 @@ package org.apache.flex.html.beads // when the first layout is complete, set up listeners for changes // to the childrens' sizes. - host.addEventListener("layoutComplete", childrenChangedHandler); +// host.addEventListener("layoutComplete", childrenChangedHandler); } /** @@ -229,7 +229,7 @@ package org.apache.flex.html.beads * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - override protected function layoutViewBeforeContentLayout():void + override public function beforeLayout():void { var host:ILayoutChild = this.host as ILayoutChild; var vm:IViewportModel = viewportModel; @@ -259,13 +259,13 @@ package org.apache.flex.html.beads * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - override protected function layoutViewAfterContentLayout():void + override public function afterLayout():void { if (adjusting) return; adjusting = true; - super.layoutViewAfterContentLayout(); + super.afterLayout(); var contentSize:Size = calculateContentSize(); viewport.layoutViewportAfterContentLayout(contentSize); @@ -282,12 +282,12 @@ package org.apache.flex.html.beads * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - override protected function resizeHandler(event:Event):void - { - if (!adjusting) { - performLayout(event); - } - } +// override protected function resizeHandler(event:Event):void +// { +// if (!adjusting) { +// performLayout(event); +// } +// } /** * Whenever children are added, listeners are added to detect changes @@ -298,19 +298,19 @@ package org.apache.flex.html.beads * @playerversion AIR 2.6 * @productversion FlexJS 0.0 */ - protected function childrenChangedHandler(event:Event):void - { - var host:UIBase = _strand as UIBase; - host.removeEventListener(event.type, childrenChangedHandler); - - var n:Number = contentView.numElements; - for (var i:int=0; i < n; i++) { - var child:IUIBase = contentView.getElementAt(i) as IUIBase; - child.addEventListener("widthChanged", childResizeHandler); - child.addEventListener("heightChanged", childResizeHandler); - child.addEventListener("sizeChanged", childResizeHandler); - } - } +// protected function childrenChangedHandler(event:Event):void +// { +// var host:UIBase = _strand as UIBase; +// host.removeEventListener(event.type, childrenChangedHandler); +// +// var n:Number = contentView.numElements; +// for (var i:int=0; i < n; i++) { +// var child:IUIBase = contentView.getElementAt(i) as IUIBase; +// child.addEventListener("widthChanged", childResizeHandler); +// child.addEventListener("heightChanged", childResizeHandler); +// child.addEventListener("sizeChanged", childResizeHandler); +// } +// } } COMPILE::JS http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataContainerView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataContainerView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataContainerView.as index 36ed489..6d1eae5 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataContainerView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/DataContainerView.as @@ -24,16 +24,17 @@ package org.apache.flex.html.beads import org.apache.flex.core.IBeadLayout; import org.apache.flex.core.IBeadModel; import org.apache.flex.core.IBeadView; - import org.apache.flex.core.IList; - import org.apache.flex.core.ISelectableItemRenderer; + import org.apache.flex.core.IDataProviderModel; import org.apache.flex.core.IItemRenderer; import org.apache.flex.core.IItemRendererParent; + import org.apache.flex.core.IList; import org.apache.flex.core.IParent; - import org.apache.flex.core.IParentIUIBase; - import org.apache.flex.core.IDataProviderModel; + import org.apache.flex.core.IParentIUIBase; + import org.apache.flex.core.ISelectableItemRenderer; import org.apache.flex.core.ISelectionModel; import org.apache.flex.core.IStrand; - import org.apache.flex.core.IUIBase; + import org.apache.flex.core.IUIBase; + import org.apache.flex.core.LayoutBase; import org.apache.flex.core.Strand; import org.apache.flex.core.UIBase; import org.apache.flex.core.ValuesManager; @@ -108,7 +109,8 @@ package org.apache.flex.html.beads */ protected function itemsCreatedHandler(event:Event):void { - performLayout(event); + trace("DataContainerView: itemsCreatedHandler"); + host.dispatchEvent(new Event("layoutNeeded")); } /** @@ -116,6 +118,7 @@ package org.apache.flex.html.beads */ protected function dataProviderChangeHandler(event:Event):void { + trace("DataContainerView: dataProviderChangeHandler"); performLayout(event); } } @@ -152,6 +155,7 @@ package org.apache.flex.html.beads super.strand = value; host.addEventListener("beadsAdded", beadsAddedHandler); + host.addEventListener("itemsCreated", itemsCreatedHandler); } override protected function completeSetup():void @@ -160,9 +164,8 @@ package org.apache.flex.html.beads // 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); - host.addEventListener("itemsCreated", itemsCreatedHandler); +// host.removeEventListener("childrenAdded", childrenChangedHandler); +// host.removeEventListener("childrenAdded", performLayout); } protected function beadsAddedHandler(event:Event):void @@ -202,7 +205,8 @@ package org.apache.flex.html.beads */ protected function itemsCreatedHandler(event:Event):void { - performLayout(event); + trace("DataContainerView: itemsCreatedHandler"); + host.dispatchEvent(new Event("layoutNeeded")); } /** @@ -210,6 +214,7 @@ package org.apache.flex.html.beads */ protected function dataProviderChangeHandler(event:Event):void { + trace("DataContainerView: dataProviderChangeHandler"); performLayout(event); } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/GroupView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/GroupView.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/GroupView.as index c3351a5..acd805d 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/GroupView.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/GroupView.as @@ -118,13 +118,6 @@ package org.apache.flex.html.beads // listen for initComplete to signal that the strand has been initialized // with its beads and children. host.addEventListener("initComplete", handleInitComplete); - - // listen for when children have been added so additional event listeners - // can be placed upon them. - host.addEventListener("childrenAdded", handleChildrenAdded); - - // listen for requests to run the layout. - host.addEventListener("layoutNeeded", performLayout); } /** @@ -169,12 +162,6 @@ package org.apache.flex.html.beads host.removeEventListener("heightChanged", deferredSizeHandler); completeSetup(); - - var num:Number = contentView.numElements; - if (num > 0) - { - performLayout(event); - } } /** @@ -193,42 +180,6 @@ package org.apache.flex.html.beads host.addEventListener("widthChanged", resizeHandler); host.addEventListener("heightChanged", resizeHandler); } - - /** - * Handles the viewCreated event by performing the first layout if - * there are children already present (ie, from MXML). - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.8 - */ - protected function viewCreatedHandler(event:Event):void - { - var num:Number = contentView.numElements; - if (num > 0) - { - performLayout(event); - } - } - - /** - * @private - */ - protected function handleChildrenAdded(event:Event):void - { - COMPILE::SWF { - var n:Number = contentView.numElements; - for(var i:int=0; i < n; i++) { - var child:IEventDispatcher = contentView.getElementAt(i) as IEventDispatcher; - child.addEventListener("widthChanged", childResizeHandler); - child.addEventListener("heightChanged", childResizeHandler); - child.addEventListener("sizeChanged", childResizeHandler); - } - } - - performLayout(event); - } /** * Invoked in response to the strand being resized. @@ -240,20 +191,8 @@ package org.apache.flex.html.beads */ protected function resizeHandler(event:Event):void { - performLayout(event); - } - - /** - * Invoked in response to any child being resized. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.8 - */ - protected function childResizeHandler(event:Event):void - { - performLayout(event); + // override in subclasses in case there is something besides running + // the layout (which is handled automatically by the layout itself). } /** @@ -264,7 +203,7 @@ package org.apache.flex.html.beads * @playerversion AIR 2.6 * @productversion FlexJS 0.8 */ - protected function layoutViewBeforeContentLayout():void + public function beforeLayout():void { // This has no use for Group but is here so a subclass can override it. } @@ -281,34 +220,7 @@ package org.apache.flex.html.beads */ protected function performLayout(event:Event):void { - if (layoutRunning) return; - - layoutRunning = true; - - // pre-process before layout - layoutViewBeforeContentLayout(); - - var host:UIBase = _strand as UIBase; - - var layout:IBeadLayout = _strand.getBeadByType(IBeadLayout) as IBeadLayout; - if (layout == null) { - var c:Class = ValuesManager.valuesImpl.getValue(host, "iBeadLayout"); - if (c) { - layout = new c() as IBeadLayout; - _strand.addBead(layout); - } - } - - if (layout) { - layout.layout(); - } - - // cleanup or adjust after layout - layoutViewAfterContentLayout(); - - layoutRunning = false; - - host.dispatchEvent(new Event("layoutComplete")); + trace("CALLING performLayout !!!!"); } /** @@ -344,11 +256,6 @@ package org.apache.flex.html.beads } /** - * @private - */ - private var adjusting:Boolean = false; - - /** * Adjusts the size of the host after the layout has been run. * * @langversion 3.0 @@ -357,14 +264,9 @@ package org.apache.flex.html.beads * @productversion FlexJS 0.0 */ COMPILE::SWF - protected function layoutViewAfterContentLayout():void + public function afterLayout():void { - if (adjusting) return; - var host:UIBase = _strand as UIBase; - - adjusting = true; - var contentSize:Size = calculateContentSize(); if (host.isWidthSizedToContent() && host.isHeightSizedToContent()) { @@ -378,12 +280,10 @@ package org.apache.flex.html.beads { host.setWidth(contentSize.width, true); } - - adjusting = false; } COMPILE::JS - protected function layoutViewAfterContentLayout():void + public function afterLayout():void { // maybe useful in a subclass on the JS side. } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/ButtonBarLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/ButtonBarLayout.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/ButtonBarLayout.as index 761e1c7..f4b0e81 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/ButtonBarLayout.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/beads/layouts/ButtonBarLayout.as @@ -37,6 +37,7 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.html.List; import org.apache.flex.html.beads.ButtonBarView; import org.apache.flex.html.beads.models.ButtonBarModel; + import org.apache.flex.html.supportClasses.UIItemRendererBase; import org.apache.flex.geom.Rectangle; import org.apache.flex.utils.CSSUtils; import org.apache.flex.utils.CSSContainerUtils; @@ -162,6 +163,8 @@ package org.apache.flex.html.beads.layouts UIBase(ir).height = contentView.height; } + + UIItemRendererBase(ir).adjustSize(); } // now let the horizontal layout take care of things. http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as index 214125e..04049ef 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/ButtonBarButtonItemRenderer.as @@ -155,8 +155,13 @@ package org.apache.flex.html.supportClasses */ override public function adjustSize():void { - textButton.width = this.width; - textButton.height = this.height; + COMPILE::SWF { + textButton.width = this.width; + textButton.height = this.height; + } + COMPILE::JS { + textButton.percentWidth = 100; + } updateRenderer(); } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as index de1b304..d9b130e 100644 --- a/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as +++ b/frameworks/projects/HTML/src/main/flex/org/apache/flex/html/supportClasses/MXMLItemRenderer.as @@ -78,6 +78,16 @@ package org.apache.flex.html.supportClasses layout.layout(); } } + + public function beforeLayout():void + { + + } + + public function afterLayout():void + { + + } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/87efeed5/frameworks/projects/HTML/src/main/resources/defaults.css ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/src/main/resources/defaults.css b/frameworks/projects/HTML/src/main/resources/defaults.css index 88d24c5..78cb15d 100644 --- a/frameworks/projects/HTML/src/main/resources/defaults.css +++ b/frameworks/projects/HTML/src/main/resources/defaults.css @@ -493,6 +493,7 @@ TitleBar padding: 2px; height: 30px; flex-grow: 0; + min-height: 30px; } TitleBar .TitleBarCloseButton {
