Repository: flex-asjs
Updated Branches:
  refs/heads/develop 61a9eeab1 -> 60f17d1bc


Some refactoring: created a base class for chart layouts (ChartBaseLayout) to 
make drawing graphics a little easier and more consistent.


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

Branch: refs/heads/develop
Commit: 60f17d1bc7bf5dac05d0c70c116176fde7276cdb
Parents: 61a9eea
Author: Peter Ent <[email protected]>
Authored: Fri Sep 5 10:02:01 2014 -0400
Committer: Peter Ent <[email protected]>
Committed: Fri Sep 5 10:02:01 2014 -0400

----------------------------------------------------------------------
 .../src/org/apache/flex/charts/BarChart.as      |   1 -
 .../src/org/apache/flex/charts/ColumnChart.as   |  17 +++
 .../src/org/apache/flex/charts/LineChart.as     |  17 +++
 .../src/org/apache/flex/charts/PieChart.as      |  34 ++---
 .../flex/charts/beads/layouts/BarChartLayout.as |  71 +++------
 .../charts/beads/layouts/ChartBaseLayout.as     | 146 +++++++++++++++++++
 .../charts/beads/layouts/ColumnChartLayout.as   |  69 ++-------
 .../layouts/LineChartCategoryVsLinearLayout.as  |  78 +++-------
 .../layouts/LineChartLinearVsLinearLayout.as    |  73 +++-------
 .../flex/charts/beads/layouts/PieChartLayout.as |  58 ++------
 .../beads/layouts/StackedBarChartLayout.as      |  70 +++------
 .../beads/layouts/StackedColumnChartLayout.as   |  65 ++-------
 12 files changed, 310 insertions(+), 389 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as
index dd705fc..4065dd3 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/BarChart.as
@@ -20,7 +20,6 @@ package org.apache.flex.charts
 {
        import org.apache.flex.charts.core.ChartBase;
        import org.apache.flex.charts.core.IChart;
-       import org.apache.flex.events.Event;
        
        /**
         *  The BarChart class draws a multi-series graph of data using vertical

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as
index 8c266ee..c9010b8 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/ColumnChart.as
@@ -21,8 +21,25 @@ package org.apache.flex.charts
        import org.apache.flex.charts.core.ChartBase;
        import org.apache.flex.charts.core.IChart;
        
+       /**
+        *  The ColumnChart displays a histogram chart where each series in
+        *  in the chart is a vertical column placed side by side. 
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
        public class ColumnChart extends ChartBase implements IChart
        {
+               /**
+                *  constructor. 
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
                public function ColumnChart()
                {
                        super();

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as
index c30034d..27ba0a5 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/LineChart.as
@@ -21,8 +21,25 @@ package org.apache.flex.charts
        import org.apache.flex.charts.core.ChartBase;
        import org.apache.flex.charts.core.IChart;
        
+       /**
+        *  The LineChart displays a series of line graphs with optional
+        *  graphics at each vertex. 
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
        public class LineChart extends ChartBase implements IChart
        {
+               /**
+                *  constructor. 
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
                public function LineChart()
                {
                        super();

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as
index ad23fd0..591e2d7 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/PieChart.as
@@ -18,36 +18,30 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.charts
 {
+       import org.apache.flex.charts.core.ChartBase;
        import org.apache.flex.charts.core.IChart;
-       import org.apache.flex.events.Event;
-       import org.apache.flex.html.List;
        
-       public class PieChart extends List implements IChart
+       /**
+        *  The PieChart displays data as a percentage of pie. 
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class PieChart extends ChartBase implements IChart
        {
-               public function PieChart()
-               {
-                       super();
-               }
-               
-               private var _series:Array;
-               
                /**
-                *  The collection of series for the chart. Each element of the
-                *  series array should be of type BarChartSeries.
-                *
+                *  constructor. 
+                *  
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.0
                 */
-               public function get series():Array
-               {
-                       return _series;
-               }
-               public function set series(value:Array):void
+               public function PieChart()
                {
-                       _series = value;
-                       dispatchEvent(new Event("seriesChanged"));
+                       super();
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as
index e6e5092..71bc274 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/BarChartLayout.as
@@ -19,18 +19,11 @@
 package org.apache.flex.charts.beads.layouts
 {
        import org.apache.flex.charts.core.ICartesianChartLayout;
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartItemRenderer;
        import org.apache.flex.charts.core.IChartSeries;
-       import org.apache.flex.charts.core.IHorizontalAxisBead;
-       import org.apache.flex.charts.core.IVerticalAxisBead;
        import org.apache.flex.charts.supportClasses.BarSeries;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -43,26 +36,8 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class BarChartLayout implements IBeadLayout, 
ICartesianChartLayout
+       public class BarChartLayout extends ChartBaseLayout implements 
IBeadLayout, ICartesianChartLayout
        {
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
                
                private var _gap:Number = 20;
                
@@ -88,39 +63,29 @@ package org.apache.flex.charts.beads.layouts
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
-               {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+               override protected function performLayout():void
+               {                       
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
                        var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
-                       
                        var maxXValue:Number = 0;
                        var seriesMaxes:Array = [];
                        
-                       var xAxis:IHorizontalAxisBead;
-                       if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = 
_strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
-                       var xAxisOffset:Number = xAxis == null ? 0 : 
xAxis.axisHeight;
-                       var yAxis:IVerticalAxisBead;
-                       if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = 
_strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
-                       var yAxisOffset:Number = yAxis == null ? 0 : 
yAxis.axisWidth;
+                       var xAxisOffset:Number = horizontalAxisBead == null ? 0 
: horizontalAxisBead.axisHeight;
+                       var yAxisOffset:Number = verticalAxisBead == null ? 0 : 
verticalAxisBead.axisWidth;
                        
-                       var useWidth:Number = UIBase(_strand).width - 
yAxisOffset;
-                       var useHeight:Number = 
((UIBase(_strand).height-xAxisOffset) / n) - gap;
-                       var seriesHeight:Number = useHeight/series.length;
+                       var useWidth:Number = chart.width - yAxisOffset;
+                       var useHeight:Number = ((chart.height-xAxisOffset) / n) 
- gap;
+                       var seriesHeight:Number = useHeight/chart.series.length;
                        var xpos:Number = 0;
-                       var ypos:Number = UIBase(_strand).height - xAxisOffset 
- seriesHeight;
+                       var ypos:Number = chart.height - xAxisOffset - 
seriesHeight;
                        
-                       for (var s:int = 0; s < series.length; s++)
+                       for (var s:int = 0; s < chart.series.length; s++)
                        {
-                               var bcs:BarSeries = series[s] as BarSeries;
+                               var bcs:BarSeries = chart.series[s] as 
BarSeries;
                                seriesMaxes.push({maxValue:0,scaleFactor:0});
                                
                                for (var i:int = 0; i < n; i++)
@@ -139,12 +104,12 @@ package org.apache.flex.charts.beads.layouts
                        {
                                data = dp[i];
                                
-                               for (s=0; s < series.length; s++)
+                               for (s=0; s < chart.series.length; s++)
                                {
-                                       bcs = series[s] as BarSeries;
+                                       bcs = chart.series[s] as BarSeries;
                                        
-                                       var child:IChartItemRenderer = 
(series[s] as IChartSeries).itemRenderer.newInstance() as IChartItemRenderer;
-                                       child.itemRendererParent = contentView;
+                                       var child:IChartItemRenderer = 
(chart.series[s] as IChartSeries).itemRenderer.newInstance() as 
IChartItemRenderer;
+                                       child.itemRendererParent = 
chartDataGroup;
                                        child.data = data;
                                        child.fillColor = bcs.fillColor;
                                        xValue = Number(data[bcs.xField]);
@@ -155,13 +120,13 @@ package org.apache.flex.charts.beads.layouts
                                        child.height = seriesHeight;
                                        ypos -= seriesHeight;
                                        
-                                       contentView.addElement(child);
+                                       chartDataGroup.addElement(child);
                                }
                                
                                ypos -= gap;
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as
new file mode 100644
index 0000000..8c5db61
--- /dev/null
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ChartBaseLayout.as
@@ -0,0 +1,146 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You 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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.charts.beads.layouts
+{
+       import org.apache.flex.charts.ChartDataGroup;
+       import org.apache.flex.charts.core.ChartBase;
+       import org.apache.flex.charts.core.IHorizontalAxisBead;
+       import org.apache.flex.charts.core.IVerticalAxisBead;
+       import org.apache.flex.core.IBeadLayout;
+       import org.apache.flex.core.ILayoutParent;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.IEventDispatcher;
+       
+       public class ChartBaseLayout implements IBeadLayout
+       {
+               public function ChartBaseLayout()
+               {
+               }
+               
+               private var _strand:IStrand;
+               
+               /**
+                *  @copy org.apache.flex.core.IBead#strand
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function set strand(value:IStrand):void
+               {
+                       _strand = value;
+                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
+                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
+                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
+                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
+               }
+               
+               /**
+                *  Returns the strand, cast as an instance of ChartBase.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get chart():ChartBase
+               {
+                       return _strand as ChartBase;
+               }
+               
+               private var _xAxis:IHorizontalAxisBead = null;
+               
+               /**
+                *  The horizontal axis bead or null if one is not present.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get horizontalAxisBead():IHorizontalAxisBead
+               {
+                       if (_xAxis == null) {
+                               if (chart.getBeadByType(IHorizontalAxisBead)) 
_xAxis = chart.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
+                       }
+                       return _xAxis;
+               }
+               
+               private var _yAxis:IVerticalAxisBead = null;
+               
+               /**
+                *  The vertical axis bead or null if one is not present.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get verticalAxisBead():IVerticalAxisBead
+               {
+                       if (_yAxis == null) {
+                               if (chart.getBeadByType(IVerticalAxisBead)) 
_yAxis = chart.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
+                       }
+                       return _yAxis;
+               }
+               
+               private var _chartDataGroup:ChartDataGroup;
+               
+               /**
+                *  Returns the object into which the chart elements are drawn 
or added. The ChartDataGroup implements
+                *  IContentView.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get chartDataGroup():ChartDataGroup
+               {
+                       if (_chartDataGroup == null) {
+                               var layoutParent:ILayoutParent = 
chart.getBeadByType(ILayoutParent) as ILayoutParent;
+                               _chartDataGroup = layoutParent.contentView as 
ChartDataGroup;
+                       }
+                       return _chartDataGroup;
+               }
+               
+               /**
+                * @private
+                */
+               private function changeHandler(event:Event):void
+               {
+                       performLayout();
+               }
+               
+               /**
+                *  Subclasses should implement this to draw the chart, adding 
elements to the chartDataGroup.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               protected function performLayout():void
+               {
+                       // implement in subclass
+               }
+       }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as
index 98ef16b..9c78f0c 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/ColumnChartLayout.as
@@ -19,18 +19,10 @@
 package org.apache.flex.charts.beads.layouts
 {
        import org.apache.flex.charts.core.ICartesianChartLayout;
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartItemRenderer;
-       import org.apache.flex.charts.core.IChartSeries;
-       import org.apache.flex.charts.core.IHorizontalAxisBead;
-       import org.apache.flex.charts.core.IVerticalAxisBead;
        import org.apache.flex.charts.supportClasses.ColumnSeries;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -43,31 +35,12 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class ColumnChartLayout implements IBeadLayout, 
ICartesianChartLayout
+       public class ColumnChartLayout extends ChartBaseLayout implements 
IBeadLayout, ICartesianChartLayout
        {
                public function ColumnChartLayout()
                {
                }
                
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
-               
                private var _gap:Number = 20;
                
                /**
@@ -92,39 +65,29 @@ package org.apache.flex.charts.beads.layouts
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
+               override protected function performLayout():void
                {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
-                       var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
-                       
-                       var xAxis:IHorizontalAxisBead;
-                       if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = 
_strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
-                       var xAxisOffset:Number = xAxis == null ? 0 : 
xAxis.axisHeight;
-                       var yAxis:IVerticalAxisBead;
-                       if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = 
_strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
-                       var yAxisOffset:Number = yAxis == null ? 0 : 
yAxis.axisWidth;
+                       var n:int = dp.length;                  
+                       var xAxisOffset:Number = horizontalAxisBead == null ? 0 
: horizontalAxisBead.axisHeight;
+                       var yAxisOffset:Number = verticalAxisBead == null ? 0 : 
verticalAxisBead.axisWidth;
                        
                        var xpos:Number = yAxisOffset;
-                       var useWidth:Number = 
UIBase(_strand).width-yAxisOffset;;
-                       var useHeight:Number = UIBase(_strand).height - 
xAxisOffset;
+                       var useWidth:Number = chart.width-yAxisOffset;;
+                       var useHeight:Number = chart.height - xAxisOffset;
                        var itemWidth:Number =  (useWidth - 
gap*(dp.length-1))/dp.length;
-                       var seriesWidth:Number = itemWidth/series.length;
+                       var seriesWidth:Number = itemWidth/chart.series.length;
                        
                        var maxYValue:Number = 0;
                        var seriesMaxes:Array = [];
                        
-                       for (var s:int = 0; s < series.length; s++)
+                       for (var s:int = 0; s < chart.series.length; s++)
                        {
-                               var bcs:ColumnSeries = series[s] as 
ColumnSeries;
+                               var bcs:ColumnSeries = chart.series[s] as 
ColumnSeries;
                                seriesMaxes.push({maxValue:0,scaleFactor:0});
                                
                                for (var i:int = 0; i < n; i++)
@@ -143,12 +106,12 @@ package org.apache.flex.charts.beads.layouts
                        {
                                data = dp[i];
                                
-                               for (s=0; s < series.length; s++)
+                               for (s=0; s < chart.series.length; s++)
                                {
-                                       bcs = series[s] as ColumnSeries;
+                                       bcs = chart.series[s] as ColumnSeries;
                                        
                                        var child:IChartItemRenderer = 
bcs.itemRenderer.newInstance() as IChartItemRenderer;
-                                       child.itemRendererParent = contentView;
+                                       child.itemRendererParent = 
chartDataGroup;
                                        child.data = data;
                                        child.fillColor = bcs.fillColor;
                                        yValue = Number(data[bcs.yField]);
@@ -159,13 +122,13 @@ package org.apache.flex.charts.beads.layouts
                                        child.height = 
yValue*seriesMaxes[s].scaleFactor;
                                        xpos += seriesWidth;
                                        
-                                       contentView.addElement(child);
+                                       chartDataGroup.addElement(child);
                                }
                                
                                xpos += gap;
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
index 941e31d..07d4d8e 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartCategoryVsLinearLayout.as
@@ -18,23 +18,13 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.charts.beads.layouts
 {
-       import org.apache.flex.charts.beads.ChartItemRendererFactory;
        import org.apache.flex.charts.core.ICartesianChartLayout;
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartItemRenderer;
        import org.apache.flex.charts.core.IChartSeries;
-       import org.apache.flex.charts.core.IConnectedItemRenderer;
-       import org.apache.flex.charts.core.IHorizontalAxisBead;
-       import org.apache.flex.charts.core.IVerticalAxisBead;
        import org.apache.flex.charts.supportClasses.LineSegmentItemRenderer;
        import org.apache.flex.charts.supportClasses.LineSeries;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.IDataProviderItemRendererMapper;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -47,67 +37,37 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class LineChartCategoryVsLinearLayout implements IBeadLayout, 
ICartesianChartLayout
+       public class LineChartCategoryVsLinearLayout extends ChartBaseLayout 
implements IBeadLayout, ICartesianChartLayout
        {
                public function LineChartCategoryVsLinearLayout()
                {
                }
                
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
-               
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
-               {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       contentView.removeAllElements();
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+               override protected function performLayout():void
+               {                       
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
                        var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
-                       
-                       var xAxis:IHorizontalAxisBead;
-                       if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = 
_strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
-                       var xAxisOffset:Number = xAxis == null ? 0 : 
xAxis.axisHeight;
-                       var yAxis:IVerticalAxisBead;
-                       if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = 
_strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
-                       var yAxisOffset:Number = yAxis == null ? 0 : 
yAxis.axisWidth;
+                       var xAxisOffset:Number = horizontalAxisBead == null ? 0 
: horizontalAxisBead.axisHeight;
+                       var yAxisOffset:Number = verticalAxisBead == null ? 0 : 
verticalAxisBead.axisWidth;
                        
                        var xpos:Number = yAxisOffset;
-                       var useWidth:Number = 
UIBase(_strand).width-yAxisOffset;;
-                       var useHeight:Number = UIBase(_strand).height - 
xAxisOffset;
+                       var useWidth:Number = chart.width-yAxisOffset;;
+                       var useHeight:Number = chart.height - xAxisOffset;
                        var itemWidth:Number =  useWidth/dp.length;
                        
                        var maxYValue:Number = 0;
                        var seriesMaxes:Array = [];
                        
-                       for (var s:int = 0; s < series.length; s++)
+                       for (var s:int = 0; s < chart.series.length; s++)
                        {
-                               var aseries:IChartSeries = series[s] as 
IChartSeries;
+                               var aseries:IChartSeries = chart.series[s] as 
IChartSeries;
                                
seriesMaxes.push({maxValue:0,scaleFactor:0,points:[]});
                                
                                for (var i:int = 0; i < n; i++)
@@ -125,9 +85,9 @@ package org.apache.flex.charts.beads.layouts
                        // draw the itemRenderers at each vertex and build the 
points array for the
                        // line segment.
                        
-                       for (s=0; s < series.length; s++)
+                       for (s=0; s < chart.series.length; s++)
                        {
-                               aseries = series[s] as IChartSeries;
+                               aseries = chart.series[s] as IChartSeries;
                                
                                xpos = yAxisOffset + itemWidth/2;
                                
@@ -143,14 +103,14 @@ package org.apache.flex.charts.beads.layouts
                                        
                                        if (aseries.itemRenderer) {
                                                var child:IChartItemRenderer = 
aseries.itemRenderer.newInstance() as IChartItemRenderer;
-                                               child.itemRendererParent = 
contentView;
+                                               child.itemRendererParent = 
chartDataGroup;
                                                child.data = data;
                                                child.fillColor = 
aseries.fillColor;
                                                child.x = childX - 5;
                                                child.y = childY - 5;
                                                child.width = 10;
                                                child.height = 10;
-                                               contentView.addElement(child);
+                                               
chartDataGroup.addElement(child);
                                        }
                                        
                                        xpos += itemWidth;
@@ -159,9 +119,9 @@ package org.apache.flex.charts.beads.layouts
                        
                        // draw the line segment
                        
-                       for (s=0; s < series.length; s++)
+                       for (s=0; s < chart.series.length; s++)
                        {
-                               var lcs:LineSeries = series[s] as LineSeries;
+                               var lcs:LineSeries = chart.series[s] as 
LineSeries;
                                
                                if (lcs.lineSegmentRenderer)
                                {
@@ -170,12 +130,12 @@ package org.apache.flex.charts.beads.layouts
                                        renderer.lineThickness = 
lcs.lineThickness;
                                        renderer.data = lcs;
                                        renderer.points = seriesMaxes[s].points;
-                                       renderer.itemRendererParent = 
contentView;
-                                       contentView.addElement(renderer);
+                                       renderer.itemRendererParent = 
chartDataGroup;
+                                       chartDataGroup.addElement(renderer);
                                }
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
index 44bf7a0..73226d6 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/LineChartLinearVsLinearLayout.as
@@ -19,19 +19,12 @@
 package org.apache.flex.charts.beads.layouts
 {
        import org.apache.flex.charts.core.ICartesianChartLayout;
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartItemRenderer;
        import org.apache.flex.charts.core.IChartSeries;
-       import org.apache.flex.charts.core.IHorizontalAxisBead;
-       import org.apache.flex.charts.core.IVerticalAxisBead;
        import org.apache.flex.charts.supportClasses.LineSegmentItemRenderer;
        import org.apache.flex.charts.supportClasses.LineSeries;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -44,67 +37,37 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class LineChartLinearVsLinearLayout implements IBeadLayout, 
ICartesianChartLayout
+       public class LineChartLinearVsLinearLayout extends ChartBaseLayout 
implements IBeadLayout, ICartesianChartLayout
        {
                public function LineChartLinearVsLinearLayout()
                {
                }
                
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
-               
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
+               override protected function performLayout():void
                {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       contentView.removeAllElements();
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
                        var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
-                       
-                       var xAxis:IHorizontalAxisBead;
-                       if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = 
_strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
-                       var xAxisOffset:Number = xAxis == null ? 0 : 
xAxis.axisHeight;
-                       var yAxis:IVerticalAxisBead;
-                       if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = 
_strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
-                       var yAxisOffset:Number = yAxis == null ? 0 : 
yAxis.axisWidth;
+                       var xAxisOffset:Number = horizontalAxisBead == null ? 0 
: horizontalAxisBead.axisHeight;
+                       var yAxisOffset:Number = verticalAxisBead == null ? 0 : 
verticalAxisBead.axisWidth;
                        
                        var xpos:Number = yAxisOffset;
                        var ypos:Number = xAxisOffset;
-                       var useWidth:Number = UIBase(_strand).width - 
yAxisOffset;;
-                       var useHeight:Number = UIBase(_strand).height - 
xAxisOffset;
+                       var useWidth:Number = chart.width - yAxisOffset;;
+                       var useHeight:Number = chart.height - xAxisOffset;
                        var itemWidth:Number =  useWidth/dp.length;
                        
                        var seriesMaxes:Array = [];
                        
-                       for (var s:int = 0; s < series.length; s++)
+                       for (var s:int = 0; s < chart.series.length; s++)
                        {
-                               var aseries:IChartSeries = series[s] as 
IChartSeries;
+                               var aseries:IChartSeries = chart.series[s] as 
IChartSeries;
                                
seriesMaxes.push({minX:Number.MAX_VALUE,maxX:Number.MIN_VALUE,
                                                      
minY:Number.MAX_VALUE,maxY:Number.MIN_VALUE,
                                                                  
scaleX:0,scaleY:0,points:[]});
@@ -130,9 +93,9 @@ package org.apache.flex.charts.beads.layouts
                        // draw the itemRenderers at each vertex and build the 
points array for the
                        // line segment.
                        
-                       for (s=0; s < series.length; s++)
+                       for (s=0; s < chart.series.length; s++)
                        {
-                               aseries = series[s] as IChartSeries;
+                               aseries = chart.series[s] as IChartSeries;
                                
                                for (i=0; i < n; i++)
                                {
@@ -147,23 +110,23 @@ package org.apache.flex.charts.beads.layouts
                                        
                                        if (aseries.itemRenderer) {
                                                var child:IChartItemRenderer = 
aseries.itemRenderer.newInstance() as IChartItemRenderer;
-                                               child.itemRendererParent = 
contentView;
+                                               child.itemRendererParent = 
chartDataGroup;
                                                child.data = data;
                                                child.fillColor = 
aseries.fillColor;
                                                child.x = childX - 5;
                                                child.y = childY - 5;
                                                child.width = 10;
                                                child.height = 10;
-                                               contentView.addElement(child);
+                                               
chartDataGroup.addElement(child);
                                        }
                                }
                        }
                        
                        // draw the line segment
                        
-                       for (s=0; s < series.length; s++)
+                       for (s=0; s < chart.series.length; s++)
                        {
-                               var lcs:LineSeries = series[s] as LineSeries;
+                               var lcs:LineSeries = chart.series[s] as 
LineSeries;
                                
                                if (lcs.lineSegmentRenderer)
                                {
@@ -172,12 +135,12 @@ package org.apache.flex.charts.beads.layouts
                                        renderer.lineThickness = 
lcs.lineThickness;
                                        renderer.data = lcs;
                                        renderer.points = seriesMaxes[s].points;
-                                       renderer.itemRendererParent = 
contentView;
-                                       contentView.addElement(renderer);
+                                       renderer.itemRendererParent = 
chartDataGroup;
+                                       chartDataGroup.addElement(renderer);
                                }
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
index 2f0e959..60b0141 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/PieChartLayout.as
@@ -18,16 +18,11 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.charts.beads.layouts
 {      
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartSeries;
        import org.apache.flex.charts.supportClasses.PieSeries;
        import org.apache.flex.charts.supportClasses.WedgeItemRenderer;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -40,7 +35,7 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class PieChartLayout implements IBeadLayout
+       public class PieChartLayout extends ChartBaseLayout implements 
IBeadLayout
        {
                /**
                 *  constructor.
@@ -54,54 +49,29 @@ package org.apache.flex.charts.beads.layouts
                {
                }
                
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
-               
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
+               override protected function performLayout():void
                {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       contentView.removeAllElements();
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
                        var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
                        
                        var xpos:Number = 0;
-                       var useWidth:Number = UIBase(_strand).width;
-                       var useHeight:Number = UIBase(_strand).height;
+                       var useWidth:Number = chart.width;
+                       var useHeight:Number = chart.height;
                        
                        var maxYValue:Number = 0;
                        var seriesMaxes:Array = [];
-                       var colors:Array = [0xFF0000, 0xFF9900, 0xFFFF00, 
0x00FF00, 0x00FFcc, 0x0000FF, 0xcc00FF, 0xFF00cc, 0x888888, 0x333333, 0xFFcc99];
+                       var colors:Array = [0xFF964D, 0x964DFF, 0xF80012, 
0x96FF4D, 0x4D96FF, 0x8A8A01, 0x23009C, 0x4A4A4A, 0x23579D];
                        
-                       for (var s:int = 0; s < series.length; s++)
+                       for (var s:int = 0; s < chart.series.length; s++)
                        {
-                               var pcs:PieSeries = series[s] as PieSeries;
+                               var pcs:PieSeries = chart.series[s] as 
PieSeries;
                                
                                for (var i:int = 0; i < n; i++)
                                {
@@ -132,22 +102,22 @@ package org.apache.flex.charts.beads.layouts
                                        obj = seriesMaxes[i];
                                        data = dp[i];
                                        
-                                       var child:WedgeItemRenderer = 
(series[s] as IChartSeries).itemRenderer.newInstance() as WedgeItemRenderer;
-                                       child.itemRendererParent = contentView;
+                                       var child:WedgeItemRenderer = 
(chart.series[s] as IChartSeries).itemRenderer.newInstance() as 
WedgeItemRenderer;
+                                       child.itemRendererParent = 
chartDataGroup;
                                        child.data = data;
-                                       child.fillColor = colors[i];
-                                       contentView.addElement(child);
+                                       child.fillColor = 
colors[i%colors.length];
+                                       chartDataGroup.addElement(child);
                                        
                                        end = start + (360.0 * obj.percent);
                                        var arc:Number = 360.0 * obj.percent;
-                                       trace("Draw arc from "+start+" to 
"+(start+arc));
+//                                     trace("Draw arc from "+start+" to 
"+(start+arc));
                                        child.drawWedge(centerX, centerY, 
start*Math.PI/180, arc*Math.PI/180, radius);
                                        
                                        start += arc;
                                }
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
index fed26b0..a6a61a6 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedBarChartLayout.as
@@ -19,18 +19,11 @@
 package org.apache.flex.charts.beads.layouts
 {
        import org.apache.flex.charts.core.ICartesianChartLayout;
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartItemRenderer;
        import org.apache.flex.charts.core.IChartSeries;
-       import org.apache.flex.charts.core.IHorizontalAxisBead;
-       import org.apache.flex.charts.core.IVerticalAxisBead;
        import org.apache.flex.charts.supportClasses.BarSeries;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -43,7 +36,7 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class StackedBarChartLayout implements IBeadLayout, 
ICartesianChartLayout
+       public class StackedBarChartLayout extends ChartBaseLayout implements 
IBeadLayout, ICartesianChartLayout
        {
                /**
                 *  constructor
@@ -57,25 +50,6 @@ package org.apache.flex.charts.beads.layouts
                {
                }
                
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
-               
                private var _gap:Number = 20;
                
                /**
@@ -100,35 +74,25 @@ package org.apache.flex.charts.beads.layouts
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
+               override protected function performLayout():void
                {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
-                       var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
-                       
+                       var n:int = dp.length;                  
                        var maxXValue:Number = 0;
                        var seriesMaxes:Array = [];
                        
-                       var xAxis:IHorizontalAxisBead;
-                       if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = 
_strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
-                       var xAxisOffset:Number = xAxis == null ? 0 : 
xAxis.axisHeight;
-                       var yAxis:IVerticalAxisBead;
-                       if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = 
_strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
-                       var yAxisOffset:Number = yAxis == null ? 0 : 
yAxis.axisWidth;
+                       var xAxisOffset:Number = horizontalAxisBead == null ? 0 
: horizontalAxisBead.axisHeight;
+                       var yAxisOffset:Number = verticalAxisBead == null ? 0 : 
verticalAxisBead.axisWidth;
                        
-                       var useWidth:Number = UIBase(_strand).width - 
yAxisOffset;
-                       var useHeight:Number = 
((UIBase(_strand).height-xAxisOffset) / n) - gap;
+                       var useWidth:Number = chart.width - yAxisOffset;
+                       var useHeight:Number = ((chart.height-xAxisOffset) / n) 
- gap;
                        var seriesHeight:Number = useHeight;
                        var xpos:Number = xAxisOffset;
-                       var ypos:Number = UIBase(_strand).height - xAxisOffset 
- seriesHeight;
+                       var ypos:Number = chart.height - xAxisOffset - 
seriesHeight;
                        
                        var barValues:Array = [];
                        var maxValue:Number = 0;
@@ -140,9 +104,9 @@ package org.apache.flex.charts.beads.layouts
                                
                                var data:Object = dp[i];
                                
-                               for (var s:int = 0; s < series.length; s++)
+                               for (var s:int = 0; s < chart.series.length; 
s++)
                                {
-                                       var bcs:BarSeries = series[s] as 
BarSeries;
+                                       var bcs:BarSeries = chart.series[s] as 
BarSeries;
                                        var field:String = bcs.xField;
                                        
                                        var xValue:Number = Number(data[field]);
@@ -159,12 +123,12 @@ package org.apache.flex.charts.beads.layouts
                                data = dp[i];
                                xpos = yAxisOffset;
                                
-                               for (s=0; s < series.length; s++)
+                               for (s=0; s < chart.series.length; s++)
                                {
-                                       bcs = series[s] as BarSeries;
+                                       bcs = chart.series[s] as BarSeries;
                                        
-                                       var child:IChartItemRenderer = 
(series[s] as IChartSeries).itemRenderer.newInstance() as IChartItemRenderer;
-                                       child.itemRendererParent = contentView;
+                                       var child:IChartItemRenderer = 
(chart.series[s] as IChartSeries).itemRenderer.newInstance() as 
IChartItemRenderer;
+                                       child.itemRendererParent = 
chartDataGroup;
                                        child.data = data;
                                        child.fillColor = bcs.fillColor;
                                        xValue = Number(data[bcs.xField]);
@@ -176,13 +140,13 @@ package org.apache.flex.charts.beads.layouts
                                        
                                        xpos += xValue*scaleFactor;
                                        
-                                       contentView.addElement(child);
+                                       chartDataGroup.addElement(child);
                                }
                                
                                ypos -= gap + seriesHeight;
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/60f17d1b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
----------------------------------------------------------------------
diff --git 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
index 574dca8..d0fafc2 100644
--- 
a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
+++ 
b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/beads/layouts/StackedColumnChartLayout.as
@@ -19,18 +19,10 @@
 package org.apache.flex.charts.beads.layouts
 {
        import org.apache.flex.charts.core.ICartesianChartLayout;
-       import org.apache.flex.charts.core.IChart;
        import org.apache.flex.charts.core.IChartItemRenderer;
-       import org.apache.flex.charts.core.IChartSeries;
-       import org.apache.flex.charts.core.IHorizontalAxisBead;
-       import org.apache.flex.charts.core.IVerticalAxisBead;
        import org.apache.flex.charts.supportClasses.ColumnSeries;
        import org.apache.flex.core.IBeadLayout;
-       import org.apache.flex.core.IContentView;
-       import org.apache.flex.core.ILayoutParent;
        import org.apache.flex.core.ISelectionModel;
-       import org.apache.flex.core.IStrand;
-       import org.apache.flex.core.UIBase;
        import org.apache.flex.events.Event;
        import org.apache.flex.events.IEventDispatcher;
        
@@ -43,7 +35,7 @@ package org.apache.flex.charts.beads.layouts
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public class StackedColumnChartLayout implements IBeadLayout, 
ICartesianChartLayout
+       public class StackedColumnChartLayout extends ChartBaseLayout 
implements IBeadLayout, ICartesianChartLayout
        {
                /**
                 *  constructor
@@ -57,25 +49,6 @@ package org.apache.flex.charts.beads.layouts
                {
                }
                
-               private var _strand:IStrand;
-               
-               /**
-                *  @copy org.apache.flex.core.IBead#strand
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10.2
-                *  @playerversion AIR 2.6
-                *  @productversion FlexJS 0.0
-                */
-               public function set strand(value:IStrand):void
-               {
-                       _strand = value;
-                       
IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
-                       
IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
-                       
IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
-                       
IEventDispatcher(value).addEventListener("layoutNeeded", changeHandler);
-               }
-               
                private var _gap:Number = 20;
                
                /**
@@ -100,31 +73,21 @@ package org.apache.flex.charts.beads.layouts
                /**
                 * @private
                 */
-               private function changeHandler(event:Event):void
+               override protected function performLayout():void
                {
-                       var layoutParent:ILayoutParent = 
_strand.getBeadByType(ILayoutParent) as ILayoutParent;
-                       var contentView:IContentView = layoutParent.contentView 
as IContentView;
-                       
-                       var selectionModel:ISelectionModel = 
_strand.getBeadByType(ISelectionModel) as ISelectionModel;
+                       var selectionModel:ISelectionModel = 
chart.getBeadByType(ISelectionModel) as ISelectionModel;
                        var dp:Array = selectionModel.dataProvider as Array;
                        if (!dp)
                                return;
                        
-                       var series:Array = IChart(_strand).series;
                        var n:int = dp.length;
-                       trace("There are "+series.length+" series in this 
chart");
-                       
-                       var xAxis:IHorizontalAxisBead;
-                       if (_strand.getBeadByType(IHorizontalAxisBead)) xAxis = 
_strand.getBeadByType(IHorizontalAxisBead) as IHorizontalAxisBead;
-                       var xAxisOffset:Number = xAxis == null ? 0 : 
xAxis.axisHeight;
-                       var yAxis:IVerticalAxisBead;
-                       if (_strand.getBeadByType(IVerticalAxisBead)) yAxis = 
_strand.getBeadByType(IVerticalAxisBead) as IVerticalAxisBead;
-                       var yAxisOffset:Number = yAxis == null ? 0 : 
yAxis.axisWidth;
+                       var xAxisOffset:Number = horizontalAxisBead == null ? 0 
: horizontalAxisBead.axisHeight;
+                       var yAxisOffset:Number = verticalAxisBead == null ? 0 : 
verticalAxisBead.axisWidth;
                        
                        var xpos:Number = yAxisOffset;
                        var ypos:Number = 0;
-                       var useWidth:Number = UIBase(_strand).width-yAxisOffset;
-                       var useHeight:Number = UIBase(_strand).height - 
xAxisOffset;
+                       var useWidth:Number = chart.width-yAxisOffset;
+                       var useHeight:Number = chart.height - xAxisOffset;
                        var itemWidth:Number = (useWidth - 
gap*(dp.length-1))/dp.length;
                        
                        var maxYValue:Number = 0;
@@ -138,9 +101,9 @@ package org.apache.flex.charts.beads.layouts
                                barValues.push({totalValue:0, scaleFactor:0});
                                var data:Object = dp[i];
                                
-                               for (var s:int = 0; s < series.length; s++)
+                               for (var s:int = 0; s < chart.series.length; 
s++)
                                {
-                                       var bcs:ColumnSeries = series[s] as 
ColumnSeries;
+                                       var bcs:ColumnSeries = chart.series[s] 
as ColumnSeries;
                                        var field:String = bcs.yField;
                                        
                                        var yValue:Number = Number(data[field]);
@@ -157,12 +120,12 @@ package org.apache.flex.charts.beads.layouts
                                data = dp[i];
                                ypos = useHeight;
                                
-                               for (s=0; s < series.length; s++)
+                               for (s=0; s < chart.series.length; s++)
                                {
-                                       bcs = series[s] as ColumnSeries;
+                                       bcs = chart.series[s] as ColumnSeries;
 
                                        var child:IChartItemRenderer = 
bcs.itemRenderer.newInstance() as IChartItemRenderer;
-                                       child.itemRendererParent = contentView;
+                                       child.itemRendererParent = 
chartDataGroup;
                                        child.data = data;
                                        child.fillColor = bcs.fillColor;
                                        yValue = Number(data[bcs.yField]);
@@ -174,13 +137,13 @@ package org.apache.flex.charts.beads.layouts
                                        
                                        ypos = child.y;
                                        
-                                       contentView.addElement(child);
+                                       chartDataGroup.addElement(child);
                                }
                                
                                xpos += gap + itemWidth;
                        }
                        
-                       IEventDispatcher(_strand).dispatchEvent(new 
Event("layoutComplete"));
+                       IEventDispatcher(chart).dispatchEvent(new 
Event("layoutComplete"));
                }
        }
 }
\ No newline at end of file

Reply via email to