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 2014/04/11 22:54:34 UTC

git commit: [flex-asjs] [refs/heads/develop] - Modifications to get SDK to behave more like the border model for sizing components. Update DataGrid to have better cross-compile results. Added a new view bead for Button, ImageButtonView, to make it easy t

Repository: flex-asjs
Updated Branches:
  refs/heads/develop bac994e33 -> 05bc63297


Modifications to get SDK to behave more like the border model for sizing components. Update DataGrid to have better cross-compile results. Added a new view bead for Button, ImageButtonView, to make it easy to specify images for button states.


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

Branch: refs/heads/develop
Commit: 05bc6329761e87f270aa3ab0e2cbf2c815795a44
Parents: bac994e
Author: Peter Ent <pe...@apache.org>
Authored: Fri Apr 11 16:54:19 2014 -0400
Committer: Peter Ent <pe...@apache.org>
Committed: Fri Apr 11 16:54:19 2014 -0400

----------------------------------------------------------------------
 .../as/projects/FlexJSJX/basic-manifest.xml     |   1 +
 frameworks/as/projects/FlexJSJX/defaults.css    |   1 +
 .../as/projects/FlexJSJX/src/FlexJSJXClasses.as |   1 +
 .../charts/supportClasses/BoxItemRenderer.as    |   5 +-
 .../src/org/apache/flex/core/IDataGridLayout.as |  55 +++++++
 .../org/apache/flex/html/beads/DataGridView.as  |  73 ++++-----
 .../flex/html/beads/layouts/DataGridLayout.as   | 154 +++++++++++++++++++
 .../flex/html/supportClasses/DataGridColumn.as  |   2 +-
 frameworks/as/projects/FlexJSUI/defaults.css    |  21 ++-
 .../as/projects/FlexJSUI/src/FlexJSUIClasses.as |   1 +
 .../src/org/apache/flex/core/IContainer.as      |  11 ++
 .../src/org/apache/flex/core/ViewBase.as        |   2 +
 .../src/org/apache/flex/html/Container.as       |   2 +-
 .../apache/flex/html/beads/CSSTextButtonView.as |  38 ++++-
 .../DataItemRendererFactoryForArrayData.as      |   7 +-
 .../apache/flex/html/beads/ImageButtonView.as   | 124 +++++++++++++++
 .../src/org/apache/flex/html/beads/ListView.as  |  10 ++
 .../flex/html/beads/layouts/ButtonBarLayout.as  |   1 +
 .../beads/layouts/NonVirtualHorizontalLayout.as |   1 +
 .../src/org/apache/flex/core/IContainer.js      |  58 +++++++
 .../FlexJS/src/org/apache/flex/core/IUIBase.js  |  40 +++++
 .../FlexJS/src/org/apache/flex/core/UIBase.js   |   5 +-
 .../src/org/apache/flex/html/Container.js       |  20 ++-
 .../DataItemRendererFactoryForArrayData.js      |   2 +
 .../apache/flex/html/beads/ImageButtonView.js   |  45 ++++++
 .../html/supportClasses/NonVirtualDataGroup.js  |   5 +-
 .../html/supportClasses/UIItemRendererBase.js   |   2 +-
 frameworks/themes/Spark/preview.jpg             | Bin 0 -> 3610 bytes
 frameworks/themes/Spark/spark.css               |  56 +++++++
 29 files changed, 691 insertions(+), 52 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/basic-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/basic-manifest.xml b/frameworks/as/projects/FlexJSJX/basic-manifest.xml
index 9630ad6..6117517 100644
--- a/frameworks/as/projects/FlexJSJX/basic-manifest.xml
+++ b/frameworks/as/projects/FlexJSJX/basic-manifest.xml
@@ -23,6 +23,7 @@
 
     <component id="DataGrid" class="org.apache.flex.html.DataGrid"/>
     <component id="DataGridColumn" class="org.apache.flex.html.supportClasses.DataGridColumn"/>
+    <component id="DataGridLayout" class="org.apache.flex.html.beads.layouts.DataGridLayout" />
     <component id="FormatableLabelView" class="org.apache.flex.html.beads.FormatableLabelView"/>
     <component id="FormatableTextInputView" class="org.apache.flex.html.beads.FormatableTextInputView"/>
     <component id="DataGridPresentationModel" class="org.apache.flex.html.beads.models.DataGridPresentationModel" />

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/defaults.css b/frameworks/as/projects/FlexJSJX/defaults.css
index 6b0970b..ab9bdc3 100644
--- a/frameworks/as/projects/FlexJSJX/defaults.css
+++ b/frameworks/as/projects/FlexJSJX/defaults.css
@@ -35,6 +35,7 @@ DataGrid
     IDataGridPresentationModel: ClassReference("org.apache.flex.html.beads.models.DataGridPresentationModel");
     IBeadView: ClassReference("org.apache.flex.html.beads.DataGridView");
     IBeadModel: ClassReference("org.apache.flex.html.beads.models.DataGridModel");
+    IBeadLayout: ClassReference("org.apache.flex.html.beads.layouts.DataGridLayout");
     IItemRendererClassFactory: ClassReference("org.apache.flex.core.ItemRendererClassFactory");
     IItemRenderer: ClassReference("org.apache.flex.html.supportClasses.StringItemRenderer");
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as b/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
index 5e8608a..8c274e0 100644
--- a/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
+++ b/frameworks/as/projects/FlexJSJX/src/FlexJSJXClasses.as
@@ -41,6 +41,7 @@ internal class FlexJSJXClasses
 	import org.apache.flex.html.beads.DateFieldView; DateFieldView;
 	import org.apache.flex.html.beads.FormatableLabelView; FormatableLabelView;
 	import org.apache.flex.html.beads.FormatableTextInputView; FormatableTextInputView;
+	import org.apache.flex.html.beads.layouts.DataGridLayout; DataGridLayout;
 	import org.apache.flex.html.beads.models.DataGridModel; DataGridModel;
 	import org.apache.flex.html.beads.models.DateChooserModel; DateChooserModel;
 	import org.apache.flex.html.beads.models.DataGridPresentationModel; DataGridPresentationModel;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/BoxItemRenderer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/BoxItemRenderer.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/BoxItemRenderer.as
index 1062371..624b28d 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/BoxItemRenderer.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/charts/supportClasses/BoxItemRenderer.as
@@ -20,8 +20,7 @@ package org.apache.flex.charts.supportClasses
 {
 	import org.apache.flex.charts.core.IChartItemRenderer;
 	import org.apache.flex.core.FilledRectangle;
-	import org.apache.flex.core.UIBase;
-	import org.apache.flex.html.supportClasses.UIItemRendererBase;
+	import org.apache.flex.html.supportClasses.DataItemRenderer;
 	
 	/**
 	 *  The BoxItemRenderer displays a colored rectangular area suitable for use as
@@ -34,7 +33,7 @@ package org.apache.flex.charts.supportClasses
 	 *  @playerversion AIR 2.6
 	 *  @productversion FlexJS 0.0
 	 */
-	public class BoxItemRenderer extends UIItemRendererBase implements IChartItemRenderer
+	public class BoxItemRenderer extends DataItemRenderer implements IChartItemRenderer
 	{
 		/**
 		 *  constructor.

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IDataGridLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IDataGridLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IDataGridLayout.as
new file mode 100644
index 0000000..d50bc27
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/core/IDataGridLayout.as
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.core
+{
+	/**
+	 *  The IDataGridLayout interface provides the features necessary to lay
+	 *  out the components of a DataGrid: the size and position of its column
+	 *  headers and the size and position of each column.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public interface IDataGridLayout extends IBeadLayout
+	{
+		/**
+		 *  The component used as the column header.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get header():IUIBase;
+		function set header(value:IUIBase):void;
+		
+		/**
+		 *  The set of components used for the columns of the DataGrid.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function get columns():Array;
+		function set columns(value:Array):void;
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/DataGridView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/DataGridView.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/DataGridView.as
index 6a5a9bd..d442bd5 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/DataGridView.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/DataGridView.as
@@ -18,7 +18,9 @@
 ////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.html.beads
 {	
+	import org.apache.flex.core.IBead;
 	import org.apache.flex.core.IBeadModel;
+	import org.apache.flex.core.IDataGridLayout;
 	import org.apache.flex.core.IDataGridModel;
 	import org.apache.flex.core.ISelectionModel;
 	import org.apache.flex.core.IStrand;
@@ -30,7 +32,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.html.Container;
 	import org.apache.flex.html.List;
 	import org.apache.flex.html.beads.layouts.ButtonBarLayout;
-	import org.apache.flex.html.beads.layouts.NonVirtualHorizontalLayout;
+	import org.apache.flex.html.beads.layouts.DataGridLayout;
 	import org.apache.flex.html.beads.models.ArraySelectionModel;
 	import org.apache.flex.html.supportClasses.DataGridColumn;
 	
@@ -92,6 +94,7 @@ package org.apache.flex.html.beads
 			_strand = value;
 			
 			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
+			IEventDispatcher(sharedModel).addEventListener("dataProviderChanged",onDataProviderChanged);
 			
 			// create an array of columnLabels for use by the ButtonBar/DataGrid header.
 			var columnLabels:Array = new Array();
@@ -102,7 +105,6 @@ package org.apache.flex.html.beads
 				buttonWidths.push(dgc.columnWidth);
 			}
 			var bblayout:ButtonBarLayout = new ButtonBarLayout();
-			bblayout.buttonWidths = buttonWidths;
 			
 			buttonBarModel = new ArraySelectionModel();
 			buttonBarModel.dataProvider = columnLabels;
@@ -112,66 +114,67 @@ package org.apache.flex.html.beads
 			buttonBar.addBead(bblayout);
 			UIBase(_strand).addElement(buttonBar);
 			
-			columnContainer = new Container();
-			var layout:NonVirtualHorizontalLayout = new NonVirtualHorizontalLayout();
-			columnContainer.addBead(layout);
-			UIBase(_strand).addElement(columnContainer);
-			
+			// Create a List for each column, storing a reference to each List in
+			// the columns property.
 			columns = new Array();
-			for(i=0; i < sharedModel.columns.length; i++) {
+			for(i=0; i < sharedModel.columns.length; i++) 
+			{
+				// Each list shares the same dataProvider but needs its own model to
+				// keep track of its own data.
 				var listModel:ISelectionModel = new ArraySelectionModel();
 				listModel.dataProvider = sharedModel.dataProvider;
 				
 				var dataGridColumn:DataGridColumn = sharedModel.columns[i] as DataGridColumn;
 				
 				var list:List = new List();
-				list.addBead(listModel);
+				list.addBead(listModel); 
 				list.itemRenderer = dataGridColumn.itemRenderer;
 				list.labelField = dataGridColumn.dataField;
 				
 				var colWidth:Number = dataGridColumn.columnWidth;
 				if (!isNaN(colWidth)) list.width = colWidth;
 
-				columnContainer.addElement(list);
+				UIBase(_strand).addElement(list);
 				columns.push(list);
 				list.addEventListener('change',columnListChangeHandler);
 				list.addEventListener('rollover',columnListRollOverHandler);
 			}
 			
-			IEventDispatcher(_strand).addEventListener("widthChanged",handleSizeChange);
-			IEventDispatcher(_strand).addEventListener("heightChanged",handleSizeChange);
+			// TODO: allow a developer to specify their own DataGridLayout
+			// possibly by seeing if a bead already exists
+			
+			var bead:IBead = _strand.getBeadByType(IDataGridLayout);
+			var layout:IDataGridLayout;
+			if (bead == null) {
+				// NOTE: the following line will not cross-compile correctly into JavaScript
+				// so it has been commented and the class hard-coded.
+				//layout = new ValuesManager.valuesImpl.getValue(_strand, "iBeadLayout")) as IDataGridLayout;
+				layout = new DataGridLayout();
+				_strand.addBead(layout);
+			} else {
+				layout = bead as IDataGridLayout;
+			}
+			layout.header = buttonBar;
+			layout.columns = columns;
 			
-			handleSizeChange(null); // initial sizing
+			IEventDispatcher(_strand).dispatchEvent(new Event("itemsCreated"));
 		}
 		
 		/**
 		 * @private
+		 * When the dataProvider is changed for the DataGrid, this updates each List (column)
+		 * with the new (or changed) dataProvider.
 		 */
-		private function handleSizeChange(event:Event):void
+		private function onDataProviderChanged(event:Event):void
 		{
-			var sw:Number = UIBase(_strand).width;
-			var sh:Number = UIBase(_strand).height;
-			
-			var backgroundColor:Number = 0xDDDDDD;
-			var value:Object = ValuesManager.valuesImpl.getValue(_strand, "background-color");
-			if (value != null) backgroundColor = Number(value);
-			
-			buttonBar.x = 0;
-			buttonBar.y = 0;
-			buttonBar.width = sw + (2*columns.length-1);
-			buttonBar.height = 25;
-			
-			columnContainer.x = 0;
-			columnContainer.y = 30;
-			columnContainer.width = sw + columns.length*2;
-			columnContainer.height = sh - 25;
+			var sharedModel:IDataGridModel = _strand.getBeadByType(IBeadModel) as IDataGridModel;
 			
-			for(var i:int=0; i < columns.length; i++) {
-				var column:List = columns[i];
-				column.height = columnContainer.height; // this will actually be Nitem*rowHeight eventually
+			for (var i:int=0; i < columns.length; i++)
+			{
+				var list:List = columns[i] as List;
+				var listModel:ISelectionModel = list.getBeadByType(IBeadModel) as ISelectionModel;
+				listModel.dataProvider = sharedModel.dataProvider;
 			}
-			
-			IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete"));
 		}
 		
 		/**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/DataGridLayout.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
new file mode 100644
index 0000000..9cf614c
--- /dev/null
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/beads/layouts/DataGridLayout.as
@@ -0,0 +1,154 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.html.beads.layouts
+{	
+	import org.apache.flex.core.IBeadLayout;
+	import org.apache.flex.core.IDataGridLayout;
+	import org.apache.flex.core.IDataGridModel;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.IUIBase;
+	import org.apache.flex.core.UIBase;
+	import org.apache.flex.events.Event;
+	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.supportClasses.DataGridColumn;
+	
+	/**
+	 * DataGridLayout is a class that handles the size and positioning of the
+	 * elements of a DataGrid. This includes the ButtonBar used for the column
+	 * headers and the Lists that are the columns.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class DataGridLayout implements IBeadLayout, IDataGridLayout
+	{
+		/**
+		 *  constructor
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function DataGridLayout()
+		{
+		}
+		
+		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("heightChanged", changeHandler);
+			IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
+			IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
+			IEventDispatcher(value).addEventListener("elementAdded", changeHandler);
+		}
+		
+		private var _header:UIBase;
+		
+		/**
+		 * The element that is the header for the DataGrid
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get header():IUIBase
+		{
+			return _header;
+		}
+		public function set header(value:IUIBase):void
+		{
+			_header = UIBase(value);
+		}
+		
+		
+		private var _columns:Array;
+		
+		/**
+		 * The array of column elements.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function get columns():Array
+		{
+			return _columns;
+		}
+		public function set columns(value:Array):void
+		{
+			_columns = value;
+		}
+		
+		/**
+		 * @private
+		 */
+		private function changeHandler(event:Event):void
+		{			
+			var sw:Number = UIBase(_strand).width;
+			var sh:Number = UIBase(_strand).height;
+			
+			header.x = 0;
+			header.y = 0;
+			header.width = sw;
+			header.height = 25;
+			
+			var columnHeight:Number = sh - header.height;
+			var columnWidth:Number  = sw / columns.length;
+			
+			var xpos:Number = 0;
+			var ypos:Number = header.height;
+			
+			// TODO: change the layout so that the model's DataGridColumn.columnWidth
+			// isn't used blindly, but is considered in the overall width. In other words,
+			// right now the width could exceed the strand's width.
+			var model:IDataGridModel = _strand.getBeadByType(IDataGridModel) as IDataGridModel;
+			
+			for(var i:int=0; i < columns.length; i++) {
+				var column:UIBase = columns[i] as UIBase;
+				column.x = xpos;
+				column.y = ypos;
+				column.height = columnHeight;
+				
+				var dgc:DataGridColumn = model.columns[i];
+				if (!isNaN(dgc.columnWidth)) column.width = dgc.columnWidth;
+				else column.width  = columnWidth;
+				
+				xpos += column.width;
+			}
+			
+			IEventDispatcher(_strand).dispatchEvent(new Event("layoutComplete"));
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/supportClasses/DataGridColumn.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/supportClasses/DataGridColumn.as b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/supportClasses/DataGridColumn.as
index be18319..927da73 100644
--- a/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/supportClasses/DataGridColumn.as
+++ b/frameworks/as/projects/FlexJSJX/src/org/apache/flex/html/supportClasses/DataGridColumn.as
@@ -66,7 +66,7 @@ package org.apache.flex.html.supportClasses
 			_itemRenderer = value;
 		}
 		
-		private var _columnWidth:Number = 100;
+		private var _columnWidth:Number = Number.NaN;
 		
 		/**
 		 *  The width of the column (default is 100 pixels).

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/defaults.css b/frameworks/as/projects/FlexJSUI/defaults.css
index e41f815..a36c6c5 100644
--- a/frameworks/as/projects/FlexJSUI/defaults.css
+++ b/frameworks/as/projects/FlexJSUI/defaults.css
@@ -30,6 +30,24 @@
     font-size: 12px;
 }
 
+*:active
+{
+    font-family: "Arial";
+    font-size: 12px;
+}
+
+*:hover
+{
+    font-family: "Arial";
+    font-size: 12px;
+}
+
+.flexjs *, . flexjs *:before, . flexjs *:after {
+    -moz-box-sizing: border-box;
+    -webkit-box-sizing: border-box;
+    box-sizing: border-box;
+}
+
 Button
 {
 	background-color: #d8d8d8;
@@ -145,7 +163,8 @@ ComboBox
 
 Container
 {
-    IBeadView: ClassReference("org.apache.flex.html.beads.ContainerView")
+    IBeadView: ClassReference("org.apache.flex.html.beads.ContainerView");
+    iBackgroundBead: ClassReference("org.apache.flex.html.beads.SolidBackgroundBead");
 }
 
 ControlBar

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as b/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
index cfd05db..dfcb78d 100644
--- a/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
+++ b/frameworks/as/projects/FlexJSUI/src/FlexJSUIClasses.as
@@ -40,6 +40,7 @@ internal class FlexJSUIClasses
     import org.apache.flex.html.beads.CSSButtonView; CSSButtonView;
 	import org.apache.flex.html.beads.CSSTextButtonView; CSSTextButtonView;
 	import org.apache.flex.html.beads.DropDownListView; DropDownListView;
+	import org.apache.flex.html.beads.ImageButtonView; ImageButtonView;
 	import org.apache.flex.html.beads.ImageView; ImageView;
     import org.apache.flex.html.beads.ListView; ListView;
     import org.apache.flex.html.beads.NumericStepperView; NumericStepperView;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IContainer.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IContainer.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IContainer.as
index 889a888..1091bad 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IContainer.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/IContainer.as
@@ -32,6 +32,17 @@ package org.apache.flex.core
      */
     public interface IContainer extends IParent
 	{
+		/**
+		 *  This method returns an array of the content children
+		 *  of the container.
+		 *
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		function getChildren():Array;
+		
         /**
          *  This method is called after children have been
          *  added to the container so the container doesn't

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ViewBase.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ViewBase.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ViewBase.as
index b5ed194..fc4fafb 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ViewBase.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/ViewBase.as
@@ -62,6 +62,8 @@ package org.apache.flex.core
 		public function ViewBase()
 		{
 			super();
+			
+			className = "flexjs";
 		}
 		
 		private var _applicationModel:Object;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Container.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Container.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Container.as
index d4ed27b..9ae090a 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Container.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/Container.as
@@ -21,10 +21,10 @@ package org.apache.flex.html
 	import flash.display.DisplayObject;
 	import flash.display.DisplayObjectContainer;
 	
+	import org.apache.flex.core.ContainerBase;
 	import org.apache.flex.core.IChrome;
 	import org.apache.flex.core.IContainer;
 	import org.apache.flex.core.IUIBase;
-	import org.apache.flex.core.ContainerBase;
 	import org.apache.flex.events.Event;
 	
 	[DefaultProperty("mxmlContent")]

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
index 2e09efe..b8e0d33 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/CSSTextButtonView.as
@@ -35,6 +35,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.TextButton;
 	import org.apache.flex.utils.SolidBorderUtil;
 
     /**
@@ -151,11 +152,19 @@ package org.apache.flex.html.beads
 			var backgroundColor:Object = ValuesManager.valuesImpl.getValue(_strand, "background-color", state);
 			if (borderStyle == "solid")
 			{
+				var useWidth:Number = Math.max(sw,textField.textWidth);
+				var useHeight:Number = Math.max(sh,textField.textHeight);
+				
+				if ((useWidth-2*Number(padding)-2*borderThickness) < textField.textWidth) 
+					useWidth = textField.textWidth+2*Number(padding)+2*borderThickness;
+				if ((useHeight-2*Number(padding)-2*borderThickness) < textField.textHeight) 
+					useHeight = textField.textHeight+2*Number(padding)+2*borderThickness;
+				
 				SolidBorderUtil.drawBorder(sprite.graphics, 
-					0, 0, sw, textField.textHeight + Number(padding) * 2,
+					0, 0, useWidth, useHeight,
 					borderColor, backgroundColor, borderThickness);
-				textField.y = (sprite.height - textField.height) / 2;
-				textField.x = (sprite.width - textField.width) / 2;
+				textField.y = (useHeight - textField.textHeight) / 2;
+				textField.x = (useWidth - textField.textWidth) / 2;
 			}			
 			var backgroundImage:Object = ValuesManager.valuesImpl.getValue(_strand, "background-image", state);
 			if (backgroundImage)
@@ -165,8 +174,16 @@ package org.apache.flex.html.beads
 				var url:String = backgroundImage as String;
 				loader.load(new URLRequest(url));
 				loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function (e:flash.events.Event):void { 
-					textField.y = (sh - textField.height) / 2;
-					textField.x = (sw - textField.width) / 2;
+					var useWidth:Number = Math.max(sw,textField.textWidth);
+					var useHeight:Number = Math.max(sh,textField.textHeight);
+					
+					if ((useWidth-2*Number(padding)-2*borderThickness) < textField.textWidth) 
+						useWidth = textField.textWidth+2*Number(padding)+2*borderThickness;
+					if ((useHeight-2*Number(padding)-2*borderThickness) < textField.textHeight) 
+						useHeight = textField.textHeight+2*Number(padding)+2*borderThickness;
+					
+					textField.y = (useHeight - textField.height) / 2;
+					textField.x = (useWidth - textField.width) / 2;
 					updateHitArea();
 				});
 			}
@@ -229,9 +246,18 @@ package org.apache.flex.html.beads
 		
 		private function updateHitArea():void
 		{
+			var useWidth:uint = Math.max(DisplayObject(_strand).width, upTextField.textWidth);
+			var useHeight:uint = Math.max(DisplayObject(_strand).height, upTextField.textHeight);
+			var padding:Object = ValuesManager.valuesImpl.getValue(_strand, "padding");
+			
+			if ((useWidth-2*Number(padding)) < upTextField.textWidth) 
+				useWidth = upTextField.textWidth+2*Number(padding);
+			if ((useHeight-2*Number(padding)) < upTextField.textHeight) 
+				useHeight = upTextField.textHeight+2*Number(padding);
+			
 			shape.graphics.clear();
 			shape.graphics.beginFill(0xCCCCCC);
-			shape.graphics.drawRect(0, 0, upSprite.width, upSprite.height);
+			shape.graphics.drawRect(0, 0, useWidth, useHeight);
 			shape.graphics.endFill();
 			
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
index c26e89f..c4c6880 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.as
@@ -28,6 +28,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.List;
 	
     /**
      *  The DataItemRendererFactoryForArrayData class reads an
@@ -57,6 +58,8 @@ package org.apache.flex.html.beads
 		
 		private var selectionModel:ISelectionModel;
 		
+		private var labelField:String;
+		
 		private var _strand:IStrand;
 		
         /**
@@ -75,6 +78,8 @@ package org.apache.flex.html.beads
 			dataGroup = listView.dataGroup;
 			selectionModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
 			
+			labelField = (listView.strand as List).labelField;
+			
 			if (!itemRendererFactory)
 			{
 				_itemRendererFactory = new (ValuesManager.valuesImpl.getValue(_strand, "iItemRendererClassFactory")) as IItemRendererClassFactory;
@@ -132,7 +137,7 @@ package org.apache.flex.html.beads
 			{
 				var ir:IItemRenderer = itemRendererFactory.createItemRenderer(dataGroup) as IItemRenderer;
 				ir.index = i;
-				ir.labelField = selectionModel.labelField;
+				ir.labelField = labelField;
 				dataGroup.addElement(ir);
 				ir.data = dp[i];
 			}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ImageButtonView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ImageButtonView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ImageButtonView.as
new file mode 100644
index 0000000..b2f3f19
--- /dev/null
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ImageButtonView.as
@@ -0,0 +1,124 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.html.beads
+{
+	import flash.display.Loader;
+	import flash.display.Shape;
+	import flash.display.SimpleButton;
+	import flash.display.Sprite;
+	import flash.events.Event;
+	import flash.net.URLRequest;
+	
+	import org.apache.flex.core.IBead;
+	import org.apache.flex.core.IBeadView;
+	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.ValuesManager;
+	
+	/**
+	 *  The ImageButtonView class provides an image-only view
+	 *  for the standard Button. Unlike the CSSButtonView, this
+	 *  class does not support background and border; only images
+	 *  for the up, over, and active states.
+	 *  
+	 *  @langversion 3.0
+	 *  @playerversion Flash 10.2
+	 *  @playerversion AIR 2.6
+	 *  @productversion FlexJS 0.0
+	 */
+	public class ImageButtonView implements IBeadView, IBead
+	{
+		/**
+		 *  Constructor.
+		 *  
+		 *  @langversion 3.0
+		 *  @playerversion Flash 10.2
+		 *  @playerversion AIR 2.6
+		 *  @productversion FlexJS 0.0
+		 */
+		public function ImageButtonView()
+		{
+			upSprite = new Sprite();
+			downSprite = new Sprite();
+			overSprite = new Sprite();
+		}
+		
+		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;
+			
+			shape = new Shape();
+			shape.graphics.beginFill(0xCCCCCC);
+			shape.graphics.drawRect(0, 0, 10, 10);
+			shape.graphics.endFill();
+			SimpleButton(value).upState = upSprite;
+			SimpleButton(value).downState = downSprite;
+			SimpleButton(value).overState = overSprite;
+			SimpleButton(value).hitTestState = shape;
+			
+			setupBackground(upSprite);
+			setupBackground(overSprite, "hover");
+			setupBackground(downSprite, "active");
+		}
+		
+		private var upSprite:Sprite;
+		private var downSprite:Sprite;
+		private var overSprite:Sprite;
+		private var shape:Shape;
+		
+		/**
+		 * @private
+		 */
+		private function setupBackground(sprite:Sprite, state:String = null):void
+		{
+			var backgroundImage:Object = ValuesManager.valuesImpl.getValue(_strand, "background-image", state);
+			if (backgroundImage)
+			{
+				var loader:Loader = new Loader();
+				sprite.addChildAt(loader, 0);
+				var url:String = backgroundImage as String;
+				loader.load(new URLRequest(url));
+				loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, function (e:flash.events.Event):void { 
+					updateHitArea();
+				});
+			}
+		}
+		
+		/**
+		 * @private
+		 */
+		private function updateHitArea():void
+		{
+			shape.graphics.clear();
+			shape.graphics.beginFill(0xCCCCCC);
+			shape.graphics.drawRect(0, 0, upSprite.width, upSprite.height);
+			shape.graphics.endFill();
+			
+		}
+	}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ListView.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ListView.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ListView.as
index d01272a..3a4a72b 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ListView.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ListView.as
@@ -37,6 +37,7 @@ package org.apache.flex.html.beads
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;
+	import org.apache.flex.html.beads.models.ArraySelectionModel;
 	import org.apache.flex.html.beads.models.ScrollBarModel;
 	import org.apache.flex.html.beads.models.SingleLineBorderModel;
 	import org.apache.flex.html.supportClasses.Border;
@@ -166,6 +167,7 @@ package org.apache.flex.html.beads
             listModel = value.getBeadByType(ISelectionModel) as ISelectionModel;
             listModel.addEventListener("selectedIndexChanged", selectionChangeHandler);
             listModel.addEventListener("rollOverIndexChanged", rollOverIndexChangeHandler);
+			listModel.addEventListener("dataProviderChanged", dataProviderChangeHandler);
 
             _border = new Border();
             _border.model = new (ValuesManager.valuesImpl.getValue(value, "iBorderModel")) as IBeadModel;
@@ -189,6 +191,14 @@ package org.apache.flex.html.beads
 		/**
 		 * @private
 		 */
+		protected function dataProviderChangeHandler(event:Event):void
+		{
+			// override if needed
+		}
+		
+		/**
+		 * @private
+		 */
 		private function selectionChangeHandler(event:Event):void
 		{
 			if (lastSelectedIndex != -1)

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as
index c8c4d74..4936e70 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/ButtonBarLayout.as
@@ -67,6 +67,7 @@ package org.apache.flex.html.beads.layouts
 		{
 			_strand = value;
 			IEventDispatcher(value).addEventListener("widthChanged", changeHandler);
+			IEventDispatcher(value).addEventListener("heightChanged", changeHandler);
 			IEventDispatcher(value).addEventListener("childrenAdded", changeHandler);
 			IEventDispatcher(value).addEventListener("itemsCreated", changeHandler);
 		}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.as
----------------------------------------------------------------------
diff --git a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.as b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.as
index c18caf0..e42c020 100644
--- a/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.as
+++ b/frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/layouts/NonVirtualHorizontalLayout.as
@@ -24,6 +24,7 @@ package org.apache.flex.html.beads.layouts
 	import org.apache.flex.core.IBeadLayout;
 	import org.apache.flex.core.ILayoutParent;
 	import org.apache.flex.core.IStrand;
+	import org.apache.flex.core.UIBase;
 	import org.apache.flex.core.ValuesManager;
 	import org.apache.flex.events.Event;
 	import org.apache.flex.events.IEventDispatcher;

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/core/IContainer.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IContainer.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IContainer.js
new file mode 100644
index 0000000..50cfcc7
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IContainer.js
@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+/**
+ * org.apache.flex.core.IContainer
+ *
+ * @fileoverview
+ *
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.IContainer');
+
+goog.require('org.apache.flex.core.IParent');
+
+
+
+/**
+ * @interface
+ * @extends {org.apache.flex.core.IParent}
+ */
+org.apache.flex.core.IContainer = function() {
+};
+
+
+/**
+ * @return {Array} All of the children of the container.
+ */
+org.apache.flex.core.IContainer.prototype.getChildren = function() {};
+
+
+/**
+ * Called after all of the children have been added to the container.
+ * @return {void}
+ */
+org.apache.flex.core.IContainer.prototype.childrenAdded = function() {};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.IContainer.prototype.FLEXJS_CLASS_INFO = {
+  names: [{ name: 'IContainer', qName: 'org.apache.flex.core.IContainer'}],
+  interfaces: [org.apache.flex.core.IParent]
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/core/IUIBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/IUIBase.js b/frameworks/js/FlexJS/src/org/apache/flex/core/IUIBase.js
new file mode 100644
index 0000000..7fd8318
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/IUIBase.js
@@ -0,0 +1,40 @@
+/**
+ * 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.
+ */
+
+/**
+ * @fileoverview
+ * @suppress {checkTypes}
+ */
+
+goog.provide('org.apache.flex.core.IUIBase');
+
+
+
+/**
+ * IUIBase
+ *
+ * @interface
+ */
+org.apache.flex.core.IUIBase = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.core.IUIBase.prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'IUIBase',
+                qName: 'org.apache.flex.core.IUIBase' }] };

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js b/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
index 35681fd..0f11748 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/core/UIBase.js
@@ -19,12 +19,14 @@ goog.require('org.apache.flex.core.IBeadController');
 goog.require('org.apache.flex.core.IBeadLayout');
 goog.require('org.apache.flex.core.IBeadModel');
 goog.require('org.apache.flex.core.IBeadView');
+goog.require('org.apache.flex.core.IUIBase');
 goog.require('org.apache.flex.core.ValuesManager');
 
 
 
 /**
  * @constructor
+ * @implements {org.apache.flex.core.IUIBase}
  * @extends {org.apache.flex.core.HTMLElementWrapper}
  */
 org.apache.flex.core.UIBase = function() {
@@ -49,7 +51,8 @@ goog.inherits(org.apache.flex.core.UIBase,
  */
 org.apache.flex.core.UIBase.prototype.FLEXJS_CLASS_INFO =
     { names: [{ name: 'UIBase',
-                qName: 'org.apache.flex.core.UIBase' }] };
+                qName: 'org.apache.flex.core.UIBase' }],
+      interfaces: [org.apache.flex.core.IUIBase] };
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/html/Container.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/Container.js b/frameworks/js/FlexJS/src/org/apache/flex/html/Container.js
index e8e7715..2dd64a4 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/Container.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/Container.js
@@ -15,11 +15,13 @@
 goog.provide('org.apache.flex.html.Container');
 
 goog.require('org.apache.flex.core.ContainerBase');
+goog.require('org.apache.flex.core.IContainer');
 
 
 
 /**
  * @constructor
+ * @implements {org.apache.flex.core.IContainer}
  * @extends {org.apache.flex.core.ContainerBase}
  */
 org.apache.flex.html.Container = function() {
@@ -36,7 +38,8 @@ goog.inherits(org.apache.flex.html.Container,
  */
 org.apache.flex.html.Container.prototype.FLEXJS_CLASS_INFO =
     { names: [{ name: 'Container',
-                qName: 'org.apache.flex.html.Container' }] };
+                qName: 'org.apache.flex.html.Container' }],
+      interfaces: [org.apache.flex.core.IContainer] };
 
 
 /**
@@ -84,3 +87,18 @@ org.apache.flex.html.Container.prototype.internalChildren =
 };
 
 
+/**
+ * @return {Array} All of the children of the container.
+ */
+org.apache.flex.html.Container.prototype.getChildren = function() {
+  return this.element.children;
+};
+
+
+/**
+ * Called after all of the children have been added to the container.
+ * @return {void}
+ */
+org.apache.flex.html.Container.prototype.childrenAdded = function() {};
+
+

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
index d5b263d..1689d12 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/DataItemRendererFactoryForArrayData.js
@@ -123,6 +123,8 @@ org.apache.flex.html.beads.DataItemRendererFactoryForArrayData.
     prototype.dataProviderChangedHandler = function(event) {
   var dp, i, n, opt;
 
+  this.dataGroup.removeAllElements();
+
   dp = this.model.get_dataProvider();
   n = dp.length;
   for (i = 0; i < n; i++) {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageButtonView.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageButtonView.js b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageButtonView.js
new file mode 100644
index 0000000..838425a
--- /dev/null
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/beads/ImageButtonView.js
@@ -0,0 +1,45 @@
+/**
+ * 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.beads.ImageButtonView');
+
+
+
+/**
+ * @constructor
+ */
+org.apache.flex.html.beads.ImageButtonView = function() {
+};
+
+
+/**
+ * Metadata
+ *
+ * @type {Object.<string, Array.<Object>>}
+ */
+org.apache.flex.html.beads.ImageButtonView
+  .prototype.FLEXJS_CLASS_INFO =
+    { names: [{ name: 'ImageButtonView',
+                qName: 'org.apache.flex.html.beads.ImageButtonView'}] };
+
+
+/**
+ * @expose
+ * @param {Object} value The new host.
+ */
+org.apache.flex.html.beads.ImageButtonView.prototype.set_strand =
+    function(value) {
+
+  this.strand_ = value;
+};

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/NonVirtualDataGroup.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/NonVirtualDataGroup.js b/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/NonVirtualDataGroup.js
index 4f82ec1..b7aa43d 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/NonVirtualDataGroup.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/NonVirtualDataGroup.js
@@ -93,7 +93,10 @@ org.apache.flex.html.supportClasses.NonVirtualDataGroup.
  */
 org.apache.flex.html.supportClasses.NonVirtualDataGroup.
     prototype.removeAllElements = function() {
-    // to do
+
+  while (this.element.hasChildNodes()) {
+    this.element.removeChild(this.element.lastChild);
+  }
 };
 
 

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/UIItemRendererBase.js
----------------------------------------------------------------------
diff --git a/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/UIItemRendererBase.js b/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/UIItemRendererBase.js
index 5c0d129..10a39b8 100644
--- a/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/UIItemRendererBase.js
+++ b/frameworks/js/FlexJS/src/org/apache/flex/html/supportClasses/UIItemRendererBase.js
@@ -43,7 +43,7 @@ goog.inherits(
 org.apache.flex.html.supportClasses.UIItemRendererBase.prototype.FLEXJS_CLASS_INFO =
     { names: [{ name: 'UIItemRendererBase',
                 qName: 'org.apache.flex.html.supportClasses.UIItemRendererBase' }],
-      interfaces: ['org.apache.flex.core.IItemRenderer, org.apache.flex.core.IItemRendererFactory']};
+      interfaces: [org.apache.flex.core.IItemRenderer, org.apache.flex.core.IItemRendererFactory]};
 
 
 /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/themes/Spark/preview.jpg
----------------------------------------------------------------------
diff --git a/frameworks/themes/Spark/preview.jpg b/frameworks/themes/Spark/preview.jpg
new file mode 100644
index 0000000..2eedd74
Binary files /dev/null and b/frameworks/themes/Spark/preview.jpg differ

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/05bc6329/frameworks/themes/Spark/spark.css
----------------------------------------------------------------------
diff --git a/frameworks/themes/Spark/spark.css b/frameworks/themes/Spark/spark.css
new file mode 100644
index 0000000..22fb55b
--- /dev/null
+++ b/frameworks/themes/Spark/spark.css
@@ -0,0 +1,56 @@
+/*
+ *
+ *  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.
+ *
+ */
+@namespace mx "library://ns.adobe.com/flex/mx";
+@namespace s "library://ns.adobe.com/flex/spark";
+
+mx|Menu, mx|Panel, mx|TitleWindow 
+{
+	dropShadowVisible: true;
+}
+
+mx|List.comboDropdown
+{
+	dropShadowVisible: true;
+}
+
+mx|VideoDisplay
+{
+	contentBackgroundColor: #000000;
+}
+
+s|ComboBox, s|DropDownList, s|VideoPlayer
+{
+    dropShadowVisible: true;
+}
+
+s|Panel
+{
+    borderAlpha: 0.5;
+    borderColor: 0;
+    cornerRadius: 0;
+    dropShadowVisible: true;
+}
+
+s|TitleWindow
+{
+    borderAlpha: 0.8;
+    borderColor: 0;
+    cornerRadius: 0;
+    dropShadowVisible: true;
+}
\ No newline at end of file