Repository: flex-asjs Updated Branches: refs/heads/develop 5f245d318 -> a3327854e
Framework updates. Now layouts do not have to know anything about viewports and viewport models. Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/a3327854 Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/a3327854 Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/a3327854 Branch: refs/heads/develop Commit: a3327854e04a9265251eabed7fcb79cad8046d53 Parents: 5f245d3 Author: Peter Ent <[email protected]> Authored: Thu Jul 23 16:40:19 2015 -0400 Committer: Peter Ent <[email protected]> Committed: Thu Jul 23 16:40:19 2015 -0400 ---------------------------------------------------------------------- .../org/apache/flex/charts/beads/ChartView.as | 4 + .../charts/beads/HorizontalCategoryAxisBead.as | 11 +- .../charts/beads/HorizontalLinearAxisBead.as | 11 +- .../charts/beads/VerticalCategoryAxisBead.as | 11 +- .../flex/charts/beads/VerticalLinearAxisBead.as | 11 +- .../flex/charts/beads/layouts/BarChartLayout.as | 10 +- .../charts/beads/layouts/ColumnChartLayout.as | 10 +- .../charts/supportClasses/ChartAxisGroup.js | 6 + .../HTML/as/src/org/apache/flex/html/List.as | 2 +- .../org/apache/flex/html/beads/ButtonBarView.as | 4 +- .../org/apache/flex/html/beads/ContainerView.as | 28 +++- .../src/org/apache/flex/html/beads/ListView.as | 11 +- .../src/org/apache/flex/html/beads/PanelView.as | 2 +- .../flex/html/beads/layouts/BasicLayout.as | 30 ---- .../flex/html/beads/layouts/ButtonBarLayout.as | 39 ++---- .../flex/html/beads/layouts/HorizontalLayout.as | 37 +---- .../flex/html/beads/layouts/TileLayout.as | 37 +---- .../flex/html/beads/layouts/VerticalLayout.as | 37 +---- .../org/apache/flex/html/MXMLBeadViewBase.as | 1 + .../HTML/js/src/org/apache/flex/html/Panel.js | 2 + .../org/apache/flex/html/beads/ContainerView.js | 137 ++++++++++++++++++- .../src/org/apache/flex/html/beads/PanelView.js | 18 ++- .../flex/html/beads/layouts/ButtonBarLayout.js | 2 + .../flex/html/beads/layouts/TileLayout.js | 29 ++++ .../html/supportClasses/ScrollingViewport.js | 37 ++++- .../apache/flex/html/supportClasses/Viewport.js | 24 +++- 26 files changed, 316 insertions(+), 235 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/ChartView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/ChartView.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/ChartView.as index f8bcc93..90b9097 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/ChartView.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/ChartView.as @@ -26,6 +26,7 @@ package org.apache.flex.charts.beads import org.apache.flex.core.IParent; import org.apache.flex.core.ISelectionModel; import org.apache.flex.core.IStrand; + import org.apache.flex.core.IViewport; import org.apache.flex.core.IViewportModel; import org.apache.flex.core.UIBase; import org.apache.flex.core.UIMetrics; @@ -33,6 +34,8 @@ package org.apache.flex.charts.beads import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; import org.apache.flex.html.beads.ListView; + import org.apache.flex.html.beads.models.ViewportModel; + import org.apache.flex.html.supportClasses.Viewport; import org.apache.flex.utils.BeadMetrics; public class ChartView extends ListView implements IBeadView @@ -92,6 +95,7 @@ package org.apache.flex.charts.beads override protected function viewCreatedHandler(event:Event):void { // prevented because itemsCreated needs to happen first + createViewport(); } public function get horizontalAxisGroup():IAxisGroup http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as index 48e5338..0adcb2c 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalCategoryAxisBead.as @@ -131,6 +131,8 @@ package org.apache.flex.charts.beads return 0; } + private var _strand:IStrand; + /** * @copy org.apache.flex.core.IBead#strand * @@ -141,15 +143,16 @@ package org.apache.flex.charts.beads */ override public function set strand(value:IStrand):void { + _strand = value; super.strand = value; // in order to draw or create the labels, need to know when the series has been created. IEventDispatcher(value).addEventListener("layoutComplete",handleItemsCreated); } - override public function get strand():IStrand - { - return super.strand; - } + override public function get strand():IStrand + { + return _strand; + } /** * @private http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as index b1ef99f..a96fb2d 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/HorizontalLinearAxisBead.as @@ -134,6 +134,8 @@ package org.apache.flex.charts.beads _maximum = value; } + private var _strand:IStrand; + /** * @copy org.apache.flex.core.IBead#strand * @@ -144,15 +146,16 @@ package org.apache.flex.charts.beads */ override public function set strand(value:IStrand):void { + _strand = value; super.strand = value; // in order to draw or create the labels, need to know when the series has been created. IEventDispatcher(strand).addEventListener("layoutComplete",handleItemsCreated); } - override public function get strand():IStrand - { - return super.strand; - } + override public function get strand():IStrand + { + return _strand; + } /** * @private http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as index 1cd3cf9..d89819d 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalCategoryAxisBead.as @@ -55,6 +55,8 @@ package org.apache.flex.charts.beads placement = "left"; } + + private var _strand:IStrand; /** * @copy org.apache.flex.core.IBead#strand @@ -66,15 +68,16 @@ package org.apache.flex.charts.beads */ override public function set strand(value:IStrand):void { + _strand = value; super.strand = value; // in order to draw or create the labels, need to know when the series has been created. IEventDispatcher(strand).addEventListener("layoutComplete",handleItemsCreated); } - override public function get strand():IStrand - { - return super.strand; - } + override public function get strand():IStrand + { + return _strand; + } private var _categoryField:String; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as index f07951a..823da8d 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/VerticalLinearAxisBead.as @@ -45,6 +45,8 @@ package org.apache.flex.charts.beads placement = "left"; } + + private var _strand:IStrand; /** * @copy org.apache.flex.core.IBead#strand @@ -56,15 +58,16 @@ package org.apache.flex.charts.beads */ override public function set strand(value:IStrand):void { + _strand = value; super.strand = value; // in order to draw or create the labels, need to know when the series has been created. IEventDispatcher(strand).addEventListener("layoutComplete",handleItemsCreated); } - override public function get strand():IStrand - { - return super.strand; - } + override public function get strand():IStrand + { + return _strand; + } private var _axisWidth:Number = 50; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as index 6754055..076fb0a 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as @@ -24,8 +24,6 @@ package org.apache.flex.charts.beads.layouts import org.apache.flex.charts.supportClasses.BarSeries; import org.apache.flex.core.IBeadLayout; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -85,13 +83,9 @@ package org.apache.flex.charts.beads.layouts if (!dp) return; - // this layout will use and modify the IViewportMode - var viewport:IViewport = chart.getBeadByType(IViewport) as IViewport; - var viewportModel:IViewportModel = viewport.model; - var n:int = dp.length; - var useWidth:Number = viewportModel.contentWidth; - var useHeight:Number = viewportModel.contentHeight; + var useWidth:Number = UIBase(chartDataGroup).width; + var useHeight:Number = UIBase(chartDataGroup).height; var itemHeight:Number = (useHeight - gap*(dp.length-1))/dp.length; var seriesHeight:Number = itemHeight/chart.series.length; var ypos:Number = useHeight; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as index 47dd0e5..0d8c019 100644 --- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as +++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as @@ -24,8 +24,6 @@ package org.apache.flex.charts.beads.layouts import org.apache.flex.charts.supportClasses.ColumnSeries; import org.apache.flex.core.IBeadLayout; import org.apache.flex.core.ISelectionModel; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -76,14 +74,10 @@ package org.apache.flex.charts.beads.layouts if (!dp) return; - // this layout will use and modify the IViewportMode - var viewport:IViewport = chart.getBeadByType(IViewport) as IViewport; - var viewportModel:IViewportModel = viewport.model; - var n:int = dp.length; var xpos:Number = 0; - var useWidth:Number = viewportModel.contentWidth; - var useHeight:Number = viewportModel.contentHeight; + var useWidth:Number = UIBase(chartDataGroup).width; + var useHeight:Number = UIBase(chartDataGroup).height; var itemWidth:Number = (useWidth - gap*(dp.length-1))/dp.length; var seriesWidth:Number = itemWidth/chart.series.length; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/Charts/js/src/org/apache/flex/charts/supportClasses/ChartAxisGroup.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/Charts/js/src/org/apache/flex/charts/supportClasses/ChartAxisGroup.js b/frameworks/projects/Charts/js/src/org/apache/flex/charts/supportClasses/ChartAxisGroup.js index 397c6c9..a0d17dc 100644 --- a/frameworks/projects/Charts/js/src/org/apache/flex/charts/supportClasses/ChartAxisGroup.js +++ b/frameworks/projects/Charts/js/src/org/apache/flex/charts/supportClasses/ChartAxisGroup.js @@ -69,6 +69,7 @@ org.apache.flex.charts.supportClasses.ChartAxisGroup. * @param {number} boxWidth The size of the area for the label. * @param {number} boxHeight The size of the area for the label. * @param {org.apache.flex.core.graphics.IStroke} tickFill The color of the path. + * @return {Object} The label. */ org.apache.flex.charts.supportClasses.ChartAxisGroup.prototype.drawHorizontalTickLabel = function(text, xpos, ypos, boxWidth, boxHeight, tickFill) { @@ -77,6 +78,7 @@ function(text, xpos, ypos, boxWidth, boxHeight, tickFill) { label.text = text; label.x = xpos - label.width / 2; label.y = ypos; + return label; }; @@ -88,6 +90,7 @@ function(text, xpos, ypos, boxWidth, boxHeight, tickFill) { * @param {number} boxWidth The size of the area for the label. * @param {number} boxHeight The size of the area for the label. * @param {org.apache.flex.core.graphics.IStroke} tickFill The color of the path. + * @return {Object} The label. */ org.apache.flex.charts.supportClasses.ChartAxisGroup.prototype.drawVerticalTickLabel = function(text, xpos, ypos, boxWidth, boxHeight, tickFill) { @@ -96,6 +99,7 @@ function(text, xpos, ypos, boxWidth, boxHeight, tickFill) { label.text = text; label.x = xpos; label.y = ypos - label.height / 2; + return label; }; @@ -107,6 +111,7 @@ function(text, xpos, ypos, boxWidth, boxHeight, tickFill) { * @param {number} height The size of the area for the path. * @param {string} marks The path to draw. * @param {org.apache.flex.core.graphics.IStroke} tickStroke The color of the path. + * @return {Object} The tick path. */ org.apache.flex.charts.supportClasses.ChartAxisGroup.prototype.drawTickMarks = function(originX, originY, width, height, marks, tickStroke) { @@ -118,6 +123,7 @@ function(originX, originY, width, height, marks, tickStroke) { this.addElement(tickPath); tickPath.stroke = tickStroke; tickPath.drawPath(0, 0, marks); + return tickPath; }; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/List.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/List.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/List.as index 179674d..7e4d744 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/List.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/List.as @@ -226,7 +226,7 @@ package org.apache.flex.html itemRendererFactory = new (ValuesManager.valuesImpl.getValue(this, "iItemRendererClassFactory")) as IItemRendererClassFactory; addBead(itemRendererFactory); } - IEventDispatcher(this).dispatchEvent(new Event("layoutNeeded")); +// IEventDispatcher(this).dispatchEvent(new Event("layoutNeeded")); } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ButtonBarView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ButtonBarView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ButtonBarView.as index 378d9b4..86e9b55 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ButtonBarView.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ButtonBarView.as @@ -77,9 +77,7 @@ package org.apache.flex.html.beads // the ButtonBar is always matched to its size so it is // important that the contentWidth/Height match the host's // width/height - - trace("BBSize: "+UIBase(host).width); - + viewportModel.contentWidth = UIBase(host).width; viewportModel.contentHeight = UIBase(host).height; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ContainerView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ContainerView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ContainerView.as index 517d22d..8d3d7fe 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ContainerView.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ContainerView.as @@ -103,14 +103,12 @@ package org.apache.flex.html.beads protected function initCompleteHandler(event:Event):void { - trace("initCompleteHandler: completeSetup for "+UIBase(_strand).id); // if the host component is not being sized by percentage, go ahead and complete the setup. if (isNaN((host as UIBase).percentHeight) && isNaN((host as UIBase).percentWidth)) { completeSetup(); performLayout(event); } else { - trace(" -- deferring setup for "+UIBase(_strand).id); // otherwise, wait until the size has been set and then finish host.addEventListener("sizeChanged", deferredSizeHandler); } @@ -118,7 +116,6 @@ package org.apache.flex.html.beads protected function deferredSizeHandler(event:Event):void { - trace("deferredSizeHandler ("+event.type+"): "+UIBase(_strand).id); host.removeEventListener(event.type, deferredSizeHandler); completeSetup(); performLayout(event); @@ -204,6 +201,7 @@ package org.apache.flex.html.beads if (layout) { layout.layout(); + determineContentSizeFromChildren(); } adjustSizeAfterLayout(); @@ -213,7 +211,7 @@ package org.apache.flex.html.beads { var host:UIBase = _strand as UIBase; var metrics:UIMetrics = BeadMetrics.getMetrics(host); - + if (host.isWidthSizedToContent() && host.isHeightSizedToContent()) { host.setWidthAndHeight(viewportModel.contentWidth+metrics.left+metrics.right, viewportModel.contentHeight+metrics.top+metrics.bottom, false); @@ -238,6 +236,28 @@ package org.apache.flex.html.beads } } + protected function determineContentSizeFromChildren():void + { + // pass through all of the children and determine the maxWidth and maxHeight + // note: this is not done on the JavaScript side because the browser handles + // this automatically. + var maxWidth:Number = 0; + var maxHeight:Number = 0; + var num:Number = contentView.numElements; + + for (var i:int=0; i < num; i++) { + var child:IUIBase = contentView.getElementAt(i) as IUIBase; + if (child == null || !child.visible) continue; + var childXMax:Number = child.x + child.width; + var childYMax:Number = child.y + child.height; + maxWidth = Math.max(maxWidth, childXMax); + maxHeight = Math.max(maxHeight, childYMax); + } + + viewportModel.contentWidth = Math.max(maxWidth,contentView.width); + viewportModel.contentHeight = Math.max(maxHeight,contentView.height); + } + protected function resizeViewport():void { // the viewport takes the entire space as there is no default chrome. http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ListView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ListView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ListView.as index 08bea38..e98db41 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ListView.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/ListView.as @@ -152,7 +152,7 @@ package org.apache.flex.html.beads host.removeEventListener("childrenAdded", childrenChangedHandler); host.removeEventListener("childrenAdded", performLayout); - host.addEventListener("itemsCreated", performLayout); + host.addEventListener("itemsCreated", itemsCreatedHandler); listModel = _strand.getBeadByType(ISelectionModel) as ISelectionModel; listModel.addEventListener("selectedIndexChanged", selectionChangeHandler); @@ -173,9 +173,16 @@ package org.apache.flex.html.beads /** * @private */ + protected function itemsCreatedHandler(event:Event):void + { + performLayout(event); + } + + /** + * @private + */ protected function dataProviderChangeHandler(event:Event):void { - // override if needed performLayout(event); } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as index 2d3e4e4..ebfa27a 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/PanelView.as @@ -148,7 +148,7 @@ package org.apache.flex.html.beads { var host:UIBase = UIBase(_strand); var viewportModel:IViewportModel = viewport.model; - + titleBar.x = 0; titleBar.y = 0; titleBar.width = host.width; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/BasicLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/BasicLayout.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/BasicLayout.as index 62304cb..bfdf68f 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/BasicLayout.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/BasicLayout.as @@ -25,8 +25,6 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.IStrand; import org.apache.flex.core.IUIBase; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.ValuesManager; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -74,25 +72,6 @@ package org.apache.flex.html.beads.layouts { host = value as ILayoutChild; } - - private var _viewportModel:IViewportModel; - - /** - * The data that describes the viewport used by this layout. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function get viewportModel():IViewportModel - { - return _viewportModel; - } - public function set viewportModel(value:IViewportModel):void - { - _viewportModel = value; - } /** * @copy org.apache.flex.core.IBeadLayout#layout @@ -103,10 +82,6 @@ package org.apache.flex.html.beads.layouts var layoutParent:ILayoutParent = host.getBeadByType(ILayoutParent) as ILayoutParent; var contentView:IParentIUIBase = layoutParent ? layoutParent.contentView : IParentIUIBase(host); - // this layout will use and modify the IViewportMode - var viewport:IViewport = host.getBeadByType(IViewport) as IViewport; - viewportModel = viewport.model; - var hostWidthSizedToContent:Boolean = host.isWidthSizedToContent(); var hostHeightSizedToContent:Boolean = host.isHeightSizedToContent(); var w:Number = hostWidthSizedToContent ? 0 : contentView.width; @@ -258,11 +233,6 @@ package org.apache.flex.html.beads.layouts } } - if (viewportModel != null) { - viewportModel.contentWidth = maxWidth; - viewportModel.contentHeight = maxHeight; - } - return true; } } http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as index d386e47..d56f11c 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as @@ -27,8 +27,6 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.ISelectionModel; import org.apache.flex.core.IStrand; import org.apache.flex.core.IUIBase; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.UIBase; import org.apache.flex.core.ValuesManager; import org.apache.flex.events.Event; @@ -75,25 +73,6 @@ package org.apache.flex.html.beads.layouts _strand = value; } - private var _viewportModel:IViewportModel; - - /** - * The data that describes the viewport used by this layout. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function get viewportModel():IViewportModel - { - return _viewportModel; - } - public function set viewportModel(value:IViewportModel):void - { - _viewportModel = value; - } - private var _buttonWidths:Array = null; /** @@ -123,11 +102,7 @@ package org.apache.flex.html.beads.layouts var contentView:IParent = layoutParent.contentView; var itemRendererParent:IItemRendererParent = contentView as IItemRendererParent; - // this layout will use and modify the IViewportMode - var viewport:IViewport = _strand.getBeadByType(IViewport) as IViewport; - if (viewport) viewportModel = viewport.model; - - var n:int = itemRendererParent.numElements; + var n:int = contentView.numElements; var realN:int = n; for (var j:int=0; j < n; j++) @@ -137,19 +112,23 @@ package org.apache.flex.html.beads.layouts } var xpos:Number = 0; - var useWidth:Number = viewportModel.contentWidth / realN; - var useHeight:Number = viewportModel.contentHeight; + var useWidth:Number = UIBase(contentView).width / realN; + var useHeight:Number = UIBase(contentView).height; for (var i:int=0; i < n; i++) { var ir:ISelectableItemRenderer = itemRendererParent.getElementAt(i) as ISelectableItemRenderer; if (ir == null || !UIBase(ir).visible) continue; UIBase(ir).y = 0; - UIBase(ir).height = useHeight; UIBase(ir).x = xpos; + if (!isNaN(useHeight) && useHeight > 0) { + UIBase(ir).height = useHeight; + } if (buttonWidths) UIBase(ir).width = Number(buttonWidths[i]); - else UIBase(ir).width = useWidth; + else if (!isNaN(useWidth) && useWidth > 0) { + UIBase(ir).width = useWidth; + } xpos += UIBase(ir).width; } return true; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as index 0b8dc97..0ab6103 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/HorizontalLayout.as @@ -25,8 +25,6 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.IStrand; import org.apache.flex.core.IUIBase; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.ValuesManager; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -74,25 +72,6 @@ package org.apache.flex.html.beads.layouts { host = value as ILayoutChild; } - - private var _viewportModel:IViewportModel; - - /** - * The data that describes the viewport used by this layout. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function get viewportModel():IViewportModel - { - return _viewportModel; - } - public function set viewportModel(value:IViewportModel):void - { - _viewportModel = value; - } /** * @copy org.apache.flex.core.IBeadLayout#layout @@ -103,10 +82,6 @@ package org.apache.flex.html.beads.layouts var layoutParent:ILayoutParent = host.getBeadByType(ILayoutParent) as ILayoutParent; var contentView:IParentIUIBase = layoutParent.contentView; - // this layout will use and modify the IViewportMode - var viewport:IViewport = host.getBeadByType(IViewport) as IViewport; - if (viewport) viewportModel = viewport.model; - var n:int = contentView.numElements; var hostSizedToContent:Boolean = host.isHeightSizedToContent(); var ilc:ILayoutChild; @@ -261,17 +236,7 @@ package org.apache.flex.html.beads.layouts // Only return true if the contentView needs to be larger; that new // size is stored in the model. - var sizeChanged:Boolean = false; - if (viewportModel != null) { - if (viewportModel.contentHeight != maxHeight) { - viewportModel.contentHeight = maxHeight; - sizeChanged = true; - } - if (viewportModel.contentWidth != xx) { - viewportModel.contentWidth = xx; - sizeChanged = true; - } - } + var sizeChanged:Boolean = true; host.dispatchEvent( new Event("layoutComplete") ); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/TileLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/TileLayout.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/TileLayout.as index 214b9df..87a4cc0 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/TileLayout.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/TileLayout.as @@ -22,8 +22,6 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.ILayoutParent; import org.apache.flex.core.IStrand; import org.apache.flex.core.IUIBase; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.UIBase; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -68,25 +66,6 @@ package org.apache.flex.html.beads.layouts _strand = value; } - private var _viewportModel:IViewportModel; - - /** - * The data that describes the viewport used by this layout. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function get viewportModel():IViewportModel - { - return _viewportModel; - } - public function set viewportModel(value:IViewportModel):void - { - _viewportModel = value; - } - private var _numColumns:Number = 4; private var _columnWidth:Number = Number.NaN; private var _rowHeight:Number = Number.NaN; @@ -156,10 +135,6 @@ package org.apache.flex.html.beads.layouts var p:ILayoutParent = _strand.getBeadByType(ILayoutParent) as ILayoutParent; var area:UIBase = p.contentView as UIBase; - // this layout will use and modify the IViewportMode - var viewport:IViewport = _strand.getBeadByType(IViewport) as IViewport; - if (viewport) viewportModel = viewport.model; - var xpos:Number = 0; var ypos:Number = 0; var useWidth:Number = columnWidth; @@ -210,17 +185,7 @@ package org.apache.flex.html.beads.layouts // Only return true if the contentView needs to be larger; that new // size is stored in the model. - var sizeChanged:Boolean = false; - if (viewportModel != null) { - if (viewportModel.contentHeight != maxHeight) { - viewportModel.contentHeight = maxHeight; - sizeChanged = true; - } - if (viewportModel.contentWidth != maxWidth) { - viewportModel.contentWidth = maxWidth; - sizeChanged = true; - } - } + var sizeChanged:Boolean = true; IEventDispatcher(_strand).dispatchEvent( new Event("layoutComplete") ); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as index cc7f3a5..3801a04 100644 --- a/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as +++ b/frameworks/projects/HTML/as/src/org/apache/flex/html/beads/layouts/VerticalLayout.as @@ -25,8 +25,6 @@ package org.apache.flex.html.beads.layouts import org.apache.flex.core.IParentIUIBase; import org.apache.flex.core.IStrand; import org.apache.flex.core.IUIBase; - import org.apache.flex.core.IViewport; - import org.apache.flex.core.IViewportModel; import org.apache.flex.core.ValuesManager; import org.apache.flex.events.Event; import org.apache.flex.events.IEventDispatcher; @@ -75,33 +73,10 @@ package org.apache.flex.html.beads.layouts host = value as ILayoutChild; } - private var _viewportModel:IViewportModel; - - /** - * The data that describes the viewport used by this layout. - * - * @langversion 3.0 - * @playerversion Flash 10.2 - * @playerversion AIR 2.6 - * @productversion FlexJS 0.0 - */ - public function get viewportModel():IViewportModel - { - return _viewportModel; - } - public function set viewportModel(value:IViewportModel):void - { - _viewportModel = value; - } - public function layout():Boolean { var layoutParent:ILayoutParent = host.getBeadByType(ILayoutParent) as ILayoutParent; var contentView:IParentIUIBase = layoutParent ? layoutParent.contentView : IParentIUIBase(host); - - // this layout will use and modify the IViewportMode - var viewport:IViewport = host.getBeadByType(IViewport) as IViewport; - if (viewport) viewportModel = viewport.model; var n:int = contentView.numElements; var hasHorizontalFlex:Boolean; @@ -264,17 +239,7 @@ package org.apache.flex.html.beads.layouts // Only return true if the contentView needs to be larger; that new // size is stored in the model. - var sizeChanged:Boolean = false; - if (viewportModel != null) { - if (viewportModel.contentHeight != yy) { - viewportModel.contentHeight = yy; - sizeChanged = true; - } - if (viewportModel.contentWidth != maxWidth) { - viewportModel.contentWidth = maxWidth; - sizeChanged = true; - } - } + var sizeChanged:Boolean = true; host.dispatchEvent( new Event("layoutComplete") ); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/asjs/src/org/apache/flex/html/MXMLBeadViewBase.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/MXMLBeadViewBase.as b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/MXMLBeadViewBase.as index e270058..0493f25 100644 --- a/frameworks/projects/HTML/asjs/src/org/apache/flex/html/MXMLBeadViewBase.as +++ b/frameworks/projects/HTML/asjs/src/org/apache/flex/html/MXMLBeadViewBase.as @@ -73,6 +73,7 @@ package org.apache.flex.html */ override public function set strand(value:IStrand):void { + _strand = value; super.strand = value; // each MXML file can also have styles in fx:Style block ValuesManager.valuesImpl.init(this); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/Panel.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/Panel.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/Panel.js index cb159c6..15882c4 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/Panel.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/Panel.js @@ -56,6 +56,7 @@ org.apache.flex.html.Panel.prototype.addElement = function(c) { } else { this.contentArea.appendChild(c.element); + this.dispatchEvent('childrenAdded'); } c.addedToParent(); }; @@ -76,6 +77,7 @@ org.apache.flex.html.Panel.prototype.addElementAt = this.contentArea.insertBefore(c.element, children[index]); c.addedToParent(); + this.dispatchEvent('childrenAdded'); } }; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/ContainerView.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/ContainerView.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/ContainerView.js index 8c9a500..e60c1ed 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/ContainerView.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/ContainerView.js @@ -17,6 +17,8 @@ goog.provide('org.apache.flex.html.beads.ContainerView'); goog.require('org.apache.flex.core.BeadViewBase'); goog.require('org.apache.flex.core.IBeadLayout'); goog.require('org.apache.flex.core.ILayoutParent'); +goog.require('org.apache.flex.html.beads.models.ViewportModel'); +goog.require('org.apache.flex.html.supportClasses.Viewport'); @@ -58,12 +60,35 @@ org.apache.flex.html.beads.ContainerView.prototype.strand_ = null; /** + * @private + * @type {Object} + */ +org.apache.flex.html.beads.ContainerView.prototype.viewport_ = null; + + +/** + * @private + * @type {Object} + */ +org.apache.flex.html.beads.ContainerView.prototype.viewportModel_ = null; + + +/** + * @private + * @type {Object} + */ +org.apache.flex.html.beads.ContainerView.prototype.contentArea_ = null; + + +/** * */ org.apache.flex.html.beads.ContainerView. prototype.addOtherListeners = function() { this.strand_.addEventListener('childrenAdded', goog.bind(this.changeHandler, this)); + this.strand_.addEventListener('elementAdded', + goog.bind(this.changeHandler, this)); this.strand_.addEventListener('layoutNeeded', goog.bind(this.changeHandler, this)); this.strand_.addEventListener('itemsCreated', @@ -72,20 +97,59 @@ org.apache.flex.html.beads.ContainerView. /** + * @return {Object} The container's child content area. + */ +org.apache.flex.html.beads.ContainerView. + prototype.createContentView = function() { + return this.strand_; +}; + + +/** * @param {org.apache.flex.events.Event} event The event. */ org.apache.flex.html.beads.ContainerView. prototype.changeHandler = function(event) { + this.createViewport(); + + this.performLayout(); +}; + + +/** + * @param {org.apache.flex.events.Event} event The event. + */ +org.apache.flex.html.beads.ContainerView. + prototype.sizeChangeHandler = function(event) { + this.addOtherListeners(); + this.changeHandler(event); +}; + + +/** + * @param {org.apache.flex.events.Event} event The event. + */ +org.apache.flex.html.beads.ContainerView. + prototype.performLayout = function(event) { if (this.layout_ == null) { this.layout_ = this.strand_.getBeadByType(org.apache.flex.core.IBeadLayout); if (this.layout_ == null) { var m3 = org.apache.flex.core.ValuesManager.valuesImpl.getValue(this.strand_, 'iBeadLayout'); this.layout_ = new m3(); this.strand_.addBead(this.layout_); - //this.layout_.strand = this.strand_; } } this.layout_.layout(); + + this.adjustSizeAfterLayout(); +}; + + +/** + * + */ +org.apache.flex.html.beads.ContainerView. + prototype.adjustSizeAfterLayout = function() { var max = this.layout_.maxWidth; if (isNaN(this.resizableView.explicitWidth) && !isNaN(max)) this.resizableView.setWidth(max, true); @@ -96,12 +160,47 @@ org.apache.flex.html.beads.ContainerView. /** - * @param {org.apache.flex.events.Event} event The event. + * */ org.apache.flex.html.beads.ContainerView. - prototype.sizeChangeHandler = function(event) { - this.addOtherListeners(); - this.changeHandler(event); + prototype.determineContentSizeFromChildren = function() { + // this function has no meaning in the HTML world +}; + + +/** + * Creates the viewport and viewportModel. + */ +org.apache.flex.html.beads.ContainerView. + prototype.createViewport = function() { + if (this.viewportModel_ == null) { + this.viewportModel_ = new org.apache.flex.html.beads.models.ViewportModel(); + this.viewportModel_.contentArea = this.contentView; + this.viewportModel_.contentIsHost = true; + this.viewportModel_.contentWidth = this.strand_.width; + this.viewportModel_.contentHeight = this.strand_.height; + this.viewportModel_.contentX = 0; + this.viewportModel_.contentY = 0; + } + if (this.viewport_ == null) { + this.viewport_ = new org.apache.flex.html.supportClasses.Viewport(); + this.viewport_.model = this.viewportModel_; + this.strand_.addBead(this.viewport_); + } + this.resizeViewport(); +}; + + +/** + * Adjusts the size of the viewportModel's viewport parameters to match those + * of the strand. + */ +org.apache.flex.html.beads.ContainerView. + prototype.resizeViewport = function() { + this.viewportModel_.viewportHeight = this.strand_.height; + this.viewportModel_.viewportWidth = this.strand_.width; + this.viewportModel_.viewportX = 0; + this.viewportModel_.viewportY = 0; }; @@ -110,7 +209,7 @@ Object.defineProperties(org.apache.flex.html.beads.ContainerView.prototype, { contentView: { /** @this {org.apache.flex.html.beads.ContainerView} */ get: function() { - return this.strand_; + return this.contentArea_; } }, /** @export */ @@ -127,6 +226,7 @@ Object.defineProperties(org.apache.flex.html.beads.ContainerView.prototype, { /** @this {org.apache.flex.html.beads.ContainerView} */ set: function(value) { org.apache.flex.utils.Language.superSetter(org.apache.flex.html.beads.ContainerView, this, 'strand', value); + this.contentArea_ = this.createContentView(); if (this.strand_.isWidthSizedToContent() && this.strand_.isHeightSizedToContent()) this.addOtherListeners(); @@ -141,7 +241,30 @@ Object.defineProperties(org.apache.flex.html.beads.ContainerView.prototype, { !isNaN(this.strand_.explicitHeight)) this.addOtherListeners(); } - } + }, + get: function() { + return this.strand_; + } + }, + /** @export */ + viewport: { + /** @this {org.apache.flex.html.beads.ContainerView} */ + set: function(value) { + this.viewport_ = value; + }, + get: function() { + return this.viewport_; + } + }, + /** @export */ + viewportModel: { + /** @this {org.apache.flex.html.beads.ContainerView} */ + set: function(value) { + this.viewportModel_ = value; + }, + get: function() { + return this.viewportModel_; + } } }); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/PanelView.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/PanelView.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/PanelView.js index e0c6d56..8cea3a0 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/PanelView.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/PanelView.js @@ -15,6 +15,7 @@ goog.provide('org.apache.flex.html.beads.PanelView'); goog.require('org.apache.flex.html.beads.ContainerView'); +goog.require('org.apache.flex.html.supportClasses.ContainerContentArea'); @@ -51,15 +52,18 @@ org.apache.flex.html.beads.PanelView qName: 'org.apache.flex.html.beads.PanelView'}]}; +/** + * @override + */ +org.apache.flex.html.beads.PanelView. + prototype.createContentView = function() { + var ca = new org.apache.flex.html.supportClasses.ContainerContentArea(); + return ca; +}; + + Object.defineProperties(org.apache.flex.html.beads.PanelView.prototype, { /** @export */ - contentView: { - /** @this {org.apache.flex.html.beads.ContainerView} */ - get: function() { - return this.strand_.contentArea; - } - }, - /** @export */ strand: { /** @this {org.apache.flex.html.beads.PanelView} */ set: function(value) { http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.js index 23636e1..9d5d149 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.js @@ -92,6 +92,8 @@ org.apache.flex.html.beads.layouts.ButtonBarLayout. ir.positioner.style['text-align'] = 'center'; ir.positioner.style['left-margin'] = 'auto'; ir.positioner.style['right-margin'] = 'auto'; + ir.positioner.style['top-margin'] = 'auto'; + ir.positioner.style['bottom-margin'] = 'auto'; if (this.buttonWidths_ && !isNaN(this.buttonWidths_[i])) ir.width = this.buttonWidths_[i] - 2; else ir.width = useWidth - 2; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/TileLayout.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/TileLayout.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/TileLayout.js index 8f474aa..d00d250 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/TileLayout.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/beads/layouts/TileLayout.js @@ -101,6 +101,34 @@ org.apache.flex.html.beads.layouts.TileLayout. for (i = 0; i < n; i++) { child = children[i].flexjs_wrapper; + if (!child.visible) realN--; + } + + xpos = 0; + ypos = 0; + useWidth = this.columnWidth; + useHeight = this.rowHeight; + + if (isNaN(useWidth)) useWidth = Math.floor(this.strand_.width / this.numColumns); // + gap + if (isNaN(useHeight)) { + // given the width and total number of items, how many rows? + var numRows = Math.floor(realN / this.numColumns); + useHeight = Math.floor(this.strand_.height / numRows); + } + + for (i = 0; i < n; i++) + { + child = children[i].flexjs_wrapper; + if (!child.visible) continue; + child.positioner.internalDisplay = 'inline-block'; + child.width = useWidth; + child.height = useHeight; + } +/* + var realN = n; + for (i = 0; i < n; i++) + { + child = children[i].flexjs_wrapper; if (!child.get_visible()) realN--; } @@ -133,4 +161,5 @@ org.apache.flex.html.beads.layouts.TileLayout. ypos += useHeight; } } +*/ }; http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/ScrollingViewport.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/ScrollingViewport.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/ScrollingViewport.js index fad5a29..f7ac3e0 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/ScrollingViewport.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/ScrollingViewport.js @@ -14,11 +14,7 @@ goog.provide('org.apache.flex.html.supportClasses.ScrollingViewport'); -goog.require('org.apache.flex.core.IItemRenderer'); -goog.require('org.apache.flex.core.IItemRendererFactory'); -goog.require('org.apache.flex.core.UIBase'); goog.require('org.apache.flex.events.Event'); -goog.require('org.apache.flex.utils.MXMLDataInterpreter'); @@ -40,6 +36,27 @@ org.apache.flex.html.supportClasses.ScrollingViewport.prototype.FLEXJS_CLASS_INF qName: 'org.apache.flex.html.supportClasses.ScrollingViewport' }]}; +/** + * @private + * @type {Object} + */ +org.apache.flex.html.supportClasses.ScrollingViewport.prototype.strand_ = null; + + +/** + * + */ +org.apache.flex.html.supportClasses.ScrollingViewport.prototype.updateSize = function() { +}; + + +/** + * + */ +org.apache.flex.html.supportClasses.ScrollingViewport.prototype.updateContentAreaSize = function() { +}; + + Object.defineProperties(org.apache.flex.html.supportClasses.ScrollingViewport.prototype, { /** @export */ @@ -52,5 +69,17 @@ Object.defineProperties(org.apache.flex.html.supportClasses.ScrollingViewport.pr set: function(value) { this.model_ = value; } + }, + /** @export */ + strand: { + /** @this {org.apache.flex.html.supportClasses.ScrollingViewport} */ + get: function() { + return this.strand_; + }, + /** @this {org.apache.flex.html.supportClasses.ScrollingViewport} */ + set: function(value) { + this.strand_ = value; + this.strand_.element.style['overflow'] = 'auto'; + } } }); http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/a3327854/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/Viewport.js ---------------------------------------------------------------------- diff --git a/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/Viewport.js b/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/Viewport.js index a9ba784..d200b8e 100644 --- a/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/Viewport.js +++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/Viewport.js @@ -14,11 +14,8 @@ goog.provide('org.apache.flex.html.supportClasses.Viewport'); -goog.require('org.apache.flex.core.IItemRenderer'); -goog.require('org.apache.flex.core.IItemRendererFactory'); -goog.require('org.apache.flex.core.UIBase'); -goog.require('org.apache.flex.events.Event'); -goog.require('org.apache.flex.utils.MXMLDataInterpreter'); +goog.require('org.apache.flex.core.IBead'); +goog.require('org.apache.flex.core.IViewport'); @@ -37,9 +34,24 @@ function() { */ org.apache.flex.html.supportClasses.Viewport.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'Viewport', - qName: 'org.apache.flex.html.supportClasses.Viewport' }]}; + qName: 'org.apache.flex.html.supportClasses.Viewport' }], + interfaces: [org.apache.flex.core.IBead, + org.apache.flex.core.IViewport]}; +/** + * + */ +org.apache.flex.html.supportClasses.Viewport.prototype.updateSize = function() { +}; + + +/** + * + */ +org.apache.flex.html.supportClasses.Viewport.prototype.updateContentAreaSize = function() { +}; + Object.defineProperties(org.apache.flex.html.supportClasses.Viewport.prototype, { /** @export */
