You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2015/06/24 22:42:28 UTC

git commit: [flex-asjs] [refs/heads/develop] - Updated Chart FlexJS library to work with new layout/viewport system.

Repository: flex-asjs
Updated Branches:
  refs/heads/develop e325df03e -> b77371d86


Updated Chart FlexJS library to work with new layout/viewport system.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/b77371d8
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/b77371d8
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/b77371d8

Branch: refs/heads/develop
Commit: b77371d86d5bf8882af0455c7393cc128f88e55e
Parents: e325df0
Author: Peter Ent <pe...@apache.org>
Authored: Wed Jun 24 16:42:23 2015 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Wed Jun 24 16:42:23 2015 -0400

----------------------------------------------------------------------
 frameworks/projects/Charts/asjs/defaults.css    |  6 +++
 .../apache/flex/charts/beads/AxisBaseBead.as    | 13 +++++
 .../org/apache/flex/charts/beads/ChartView.as   | 28 +++++-----
 .../charts/beads/HorizontalCategoryAxisBead.as  |  2 +
 .../charts/beads/HorizontalLinearAxisBead.as    |  2 +
 .../charts/beads/VerticalCategoryAxisBead.as    |  2 +
 .../flex/charts/beads/VerticalLinearAxisBead.as |  2 +
 .../flex/charts/beads/layouts/BarChartLayout.as | 10 +++-
 .../charts/beads/layouts/ColumnChartLayout.as   | 10 +++-
 .../layouts/LineChartCategoryVsLinearLayout.as  | 10 +++-
 .../layouts/LineChartLinearVsLinearLayout.as    | 10 +++-
 .../flex/charts/beads/layouts/PieChartLayout.as | 10 +++-
 .../beads/layouts/StackedBarChartLayout.as      | 10 +++-
 .../beads/layouts/StackedColumnChartLayout.as   | 10 +++-
 .../html/supportClasses/ScrollingViewport.js    | 56 ++++++++++++++++++++
 .../apache/flex/html/supportClasses/Viewport.js | 56 ++++++++++++++++++++
 16 files changed, 210 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/frameworks/projects/Charts/asjs/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/defaults.css b/frameworks/projects/Charts/asjs/defaults.css
index 0ab5ec4..753f518 100644
--- a/frameworks/projects/Charts/asjs/defaults.css
+++ b/frameworks/projects/Charts/asjs/defaults.css
@@ -30,6 +30,7 @@ BarChart
     IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
     IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
     IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+	IViewport: ClassReference("org.apache.flex.html.supportClasses.Viewport");
 }
 
 BoxItemRenderer
@@ -48,6 +49,7 @@ ColumnChart
     IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
     IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
     IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+	IViewport: ClassReference("org.apache.flex.html.supportClasses.Viewport");
 }
 
 LineChart
@@ -62,6 +64,7 @@ LineChart
     IConnectedItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.LineSegmentItemRenderer");
     IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
     IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+	IViewport: ClassReference("org.apache.flex.html.supportClasses.Viewport");
 }
 
 PieChart
@@ -73,6 +76,7 @@ PieChart
     IDataGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartDataGroup");
     IDataProviderItemRendererMapper: ClassReference("org.apache.flex.charts.beads.DataItemRendererFactoryForSeriesData");
     IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.WedgeItemRenderer");
+	IViewport: ClassReference("org.apache.flex.html.supportClasses.Viewport");
 }
 
 StackedColumnChart
@@ -86,6 +90,7 @@ StackedColumnChart
     IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
     IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
     IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+	IViewport: ClassReference("org.apache.flex.html.supportClasses.Viewport");
 }
 
 StackedBarChart
@@ -99,4 +104,5 @@ StackedBarChart
     IItemRenderer: ClassReference("org.apache.flex.charts.supportClasses.BoxItemRenderer");
     IHorizontalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
     IVerticalAxisGroup: ClassReference("org.apache.flex.charts.supportClasses.ChartAxisGroup");
+	IViewport: ClassReference("org.apache.flex.html.supportClasses.Viewport");
 }

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/AxisBaseBead.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/AxisBaseBead.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/AxisBaseBead.as
index ba2e778..9383f14 100644
--- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/AxisBaseBead.as
+++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/AxisBaseBead.as
@@ -186,6 +186,19 @@ package org.apache.flex.charts.beads
 		}
 		
 		/**
+		 * Removes all graphic elements.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		protected function clearGraphics():void
+		{
+			axisGroup.removeAllElements();
+		}
+		
+		/**
 		 * @private
 		 */
 		protected function drawAxisPath(originX:Number, originY:Number, xoffset:Number, yoffset:Number):void

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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 27ac054..13dfeb0 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.IViewportModel;
 	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.UIMetrics;
 	import org.apache.flex.core.ValuesManager;
@@ -55,8 +56,6 @@ package org.apache.flex.charts.beads
 		 */
 		override public function set strand(value:IStrand):void
 		{
-			super.strand = value;
-			
 			_strand = value;
 			
 			if (border) {
@@ -81,6 +80,8 @@ package org.apache.flex.charts.beads
 				vaxis.axisGroup = _verticalAxisGroup;
 				IParent(_strand).addElement(_verticalAxisGroup);
 			}
+			
+			super.strand = value;
 						
 			IEventDispatcher(_strand).dispatchEvent( new Event("viewCreated") );
 		}
@@ -111,12 +112,9 @@ package org.apache.flex.charts.beads
 			dataGroup.removeAllElements();
 		}
 		
-		/**
-		 * @private
-		 */
-		protected function layoutList():void
-		{	
-			var metrics:UIMetrics = BeadMetrics.getMetrics(_strand);
+		override protected function createViewport(metrics:UIMetrics):void
+		{
+			super.createViewport(metrics);
 			
 			var widthAdjustment:Number = 0;
 			var heightAdjustment:Number = 0;
@@ -132,14 +130,18 @@ package org.apache.flex.charts.beads
 				heightAdjustment = haxis.axisHeight;
 			}
 			
-			var dg:UIBase = UIBase(dataGroup);
 			var strandWidth:Number = UIBase(_strand).width;
 			var strandHeight:Number = UIBase(_strand).height;
 			
-			dg.x = widthAdjustment + metrics.left;
-			dg.y = metrics.top;
-			dg.width = strandWidth - widthAdjustment - metrics.right - metrics.left;
-			dg.height= strandHeight - heightAdjustment - metrics.bottom - metrics.top;
+			var model:IViewportModel = viewport.model;
+			model.viewportX = widthAdjustment + metrics.left;
+			model.viewportY = metrics.top;
+			model.viewportWidth = strandWidth - widthAdjustment - metrics.right - metrics.left;
+			model.viewportHeight = strandHeight - heightAdjustment - metrics.bottom - metrics.top;
+			model.contentX = model.viewportX;
+			model.contentY = model.viewportY;
+			model.contentWidth = model.viewportWidth;
+			model.contentHeight = model.viewportHeight;
 			
 			if (verticalAxisGroup) {
 				UIBase(verticalAxisGroup).x = metrics.left;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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 be2f491..b450c0b 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
@@ -157,6 +157,8 @@ package org.apache.flex.charts.beads
 			if (model.dataProvider is Array) items = model.dataProvider as Array;
 			else return;
 			
+			clearGraphics();
+			
 			var xpos:Number = 0;
 			var useWidth:Number = UIBase(axisGroup).width;
 		

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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 5c6facc..e3fd86c 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
@@ -183,6 +183,8 @@ package org.apache.flex.charts.beads
 			if (model.dataProvider is Array) items = model.dataProvider as Array;
 			else return;
 			
+			clearGraphics();
+			
 			var xpos:Number = 0;
 			var useWidth:Number = UIBase(axisGroup).width;
 			var series:Array = IChart(strand).series;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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 eb75a5f..04d1941 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
@@ -159,6 +159,8 @@ package org.apache.flex.charts.beads
 			if (model.dataProvider is Array) items = model.dataProvider as Array;
 			else return;
 			
+			clearGraphics();
+			
 			var series:Array = IChart(strand).series;
 			
 			var useHeight:Number = UIBase(axisGroup).height;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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 43631d3..9b930a0 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
@@ -167,6 +167,8 @@ package org.apache.flex.charts.beads
 			if (model.dataProvider is Array) items = model.dataProvider as Array;
 			else return;
 			
+			clearGraphics();
+			
 			var series:Array = IChart(strand).series;
 			
 			var useHeight:Number = UIBase(axisGroup).height;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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 076fb0a..6754055 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,6 +24,8 @@ 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;
@@ -83,9 +85,13 @@ 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 = UIBase(chartDataGroup).width;
-			var useHeight:Number = UIBase(chartDataGroup).height;
+			var useWidth:Number = viewportModel.contentWidth;
+			var useHeight:Number = viewportModel.contentHeight;
 			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/b77371d8/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 0d8c019..47dd0e5 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,6 +24,8 @@ 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;
@@ -74,10 +76,14 @@ 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 = UIBase(chartDataGroup).width;
-			var useHeight:Number = UIBase(chartDataGroup).height;
+			var useWidth:Number = viewportModel.contentWidth;
+			var useHeight:Number = viewportModel.contentHeight;
 			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/b77371d8/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
index 8a15003..bbfc97c 100644
--- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
+++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
@@ -25,6 +25,8 @@ package org.apache.flex.charts.beads.layouts
 	import org.apache.flex.charts.supportClasses.LineSeries;
 	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;
@@ -54,13 +56,17 @@ 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 xAxisOffset:Number = 0;
 			var yAxisOffset:Number = 0;
 			
 			var xpos:Number = yAxisOffset;
-			var useWidth:Number = UIBase(chartDataGroup).width-yAxisOffset;;
-			var useHeight:Number = UIBase(chartDataGroup).height - xAxisOffset;
+			var useWidth:Number = viewportModel.contentWidth-yAxisOffset;;
+			var useHeight:Number = viewportModel.contentHeight - xAxisOffset;
 			var itemWidth:Number =  useWidth/dp.length;
 			
 			var maxYValue:Number = 0;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
index 6719aa0..617ab2c 100644
--- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
+++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
@@ -25,6 +25,8 @@ package org.apache.flex.charts.beads.layouts
 	import org.apache.flex.charts.supportClasses.LineSeries;
 	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;
@@ -54,12 +56,16 @@ 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 ypos:Number = 0;
-			var useWidth:Number = UIBase(chartDataGroup).width;
-			var useHeight:Number = UIBase(chartDataGroup).height;
+			var useWidth:Number = viewportModel.contentWidth;
+			var useHeight:Number = viewportModel.contentHeight;
 			var itemWidth:Number =  useWidth/dp.length;
 			
 			var maxXValue:Number = 0;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
index 40bdcf4..dd27e09 100644
--- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
+++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
@@ -24,6 +24,8 @@ package org.apache.flex.charts.beads.layouts
 	import org.apache.flex.charts.supportClasses.PieSeries;
 	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.graphics.IFill;
 	import org.apache.flex.core.graphics.SolidColor;
 	import org.apache.flex.events.Event;
@@ -62,11 +64,15 @@ 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 = chart.width;
-			var useHeight:Number = chart.height;
+			var useWidth:Number = viewportModel.contentWidth;
+			var useHeight:Number = viewportModel.contentHeight;
 			
 			var maxYValue:Number = 0;
 			var seriesMaxes:Array = [];

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
index 07bb720..d875702 100644
--- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
+++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
@@ -24,6 +24,8 @@ 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;
@@ -82,14 +84,18 @@ 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 maxXValue:Number = 0;
 			var minXValue:Number = 0;
 			var determineScale:Boolean = true;
 			var seriesMaxes:Array = [];
 			
-			var useWidth:Number = UIBase(chartDataGroup).width;
-			var useHeight:Number = UIBase(chartDataGroup).height;
+			var useWidth:Number = viewportModel.contentWidth;
+			var useHeight:Number = viewportModel.contentHeight;
 			var itemHeight:Number = (useHeight - gap*(dp.length-1))/n;
 			var seriesHeight:Number = itemHeight;
 			var xpos:Number = 0;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
index 074f82d..0c95013 100644
--- a/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
+++ b/frameworks/projects/Charts/asjs/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
@@ -23,6 +23,8 @@ 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;
@@ -81,9 +83,13 @@ 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 = UIBase(chartDataGroup).width;
-			var useHeight:Number = UIBase(chartDataGroup).height;
+			var useWidth:Number = viewportModel.contentWidth;
+			var useHeight:Number = viewportModel.contentHeight;
 			var itemWidth:Number = (useWidth - gap*(dp.length-1))/dp.length;
 			var seriesWidth:Number = itemWidth;
 			var xpos:Number = 0;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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
new file mode 100644
index 0000000..e84ad93
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/ScrollingViewport.js
@@ -0,0 +1,56 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_html_supportClasses_ScrollingViewport =
+function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_supportClasses_ScrollingViewport.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ScrollingViewport',
+                qName: 'org_apache_flex_html_supportClasses_ScrollingViewport' }]};
+
+
+
+Object.defineProperties(org_apache_flex_html_supportClasses_ScrollingViewport.prototype, {
+    /** @expose */
+    model: {
+        /** @this {org_apache_flex_html_supportClasses_ScrollingViewport} */
+        get: function() {
+            return this.model_;
+        },
+        /** @this {org_apache_flex_html_supportClasses_ScrollingViewport} */
+        set: function(value) {
+            this.model_ = value;
+        }
+    }
+});

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/b77371d8/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
new file mode 100644
index 0000000..ca6bbdd
--- /dev/null
+++ b/frameworks/projects/HTML/js/src/org/apache/flex/html/supportClasses/Viewport.js
@@ -0,0 +1,56 @@
+/**
+ * Licensed under the Apache License, Version 2.0 (the 'License');
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an 'AS IS' BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+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');
+
+
+
+/**
+ * @constructor
+ */
+org_apache_flex_html_supportClasses_Viewport =
+function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org_apache_flex_html_supportClasses_Viewport.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'Viewport',
+                qName: 'org_apache_flex_html_supportClasses_Viewport' }]};
+
+
+
+Object.defineProperties(org_apache_flex_html_supportClasses_Viewport.prototype, {
+    /** @expose */
+    model: {
+        /** @this {org_apache_flex_html_supportClasses_Viewport} */
+        get: function() {
+            return this.model_;
+        },
+        /** @this {org_apache_flex_html_supportClasses_Viewport} */
+        set: function(value) {
+            this.model_ = value;
+        }
+    }
+});