http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
new file mode 100644
index 0000000..15b6587
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataGroup.as
@@ -0,0 +1,121 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{      
+    import org.apache.flex.core.IContentView;
+    import org.apache.flex.core.IItemRenderer;
+    import org.apache.flex.core.IItemRendererParent;
+       import org.apache.flex.core.IRollOverModel;
+       import org.apache.flex.core.ISelectionModel;
+       import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.UIBase;
+       import org.apache.flex.events.IEventDispatcher;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.events.ItemAddedEvent;
+       import org.apache.flex.events.ItemClickedEvent;
+       import org.apache.flex.events.ItemRemovedEvent;
+
+    /**
+     *  The DataGroup class is the IItemRendererParent used internally
+     *  by org.apache.flex.html.List class.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+       public class DataGroup extends ContainerContentArea implements 
IItemRendererParent, IContentView
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+               public function DataGroup()
+               {
+                       super();
+               }
+               
+               /**
+                * @private
+                */
+               override public function addElement(c:Object, 
dispatchEvent:Boolean = true):void
+               {
+                       super.addElement(c, dispatchEvent);
+                       
+                       var newEvent:ItemAddedEvent = new 
ItemAddedEvent("itemAdded");
+                       newEvent.item = c;
+                       
+                       var strand:IEventDispatcher = parent as 
IEventDispatcher;
+                       strand.dispatchEvent(newEvent);
+               }
+               
+               /**
+                * @private
+                */
+               override public function removeElement(c:Object, 
dispatchEvent:Boolean = true):void
+               {       
+                       super.removeElement(c, dispatchEvent);
+                       
+                       var newEvent:ItemRemovedEvent = new 
ItemRemovedEvent("itemRemoved");
+                       newEvent.item = c;
+                       
+                       var strand:IEventDispatcher = parent as 
IEventDispatcher;
+                       strand.dispatchEvent(newEvent);
+               }
+
+        /**
+         *  @copy 
org.apache.flex.core.IItemRendererParent#getItemRendererForIndex()
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function getItemRendererForIndex(index:int):IItemRenderer
+        {
+                       if (index < 0 || index >= numElements) return null;
+            return getElementAt(index) as IItemRenderer;
+        }
+               
+               /**
+                *  Refreshes the itemRenderers. Useful after a size change by 
the data group.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+                */
+               public function updateAllItemRenderers():void
+               {
+                       var n:Number = numElements;
+                       for (var i:Number = 0; i < n; i++)
+                       {
+                               var renderer:DataItemRenderer = 
getItemRendererForIndex(i) as DataItemRenderer;
+                               if (renderer) {
+                                       renderer.setWidth(this.width,true);
+                                       renderer.adjustSize();
+                               }
+                       }
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as
new file mode 100644
index 0000000..8b4ad5b
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DataItemRenderer.as
@@ -0,0 +1,179 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       COMPILE::SWF
+       {
+               import flash.display.Sprite;
+       }
+       COMPILE::JS
+       {
+               import org.apache.flex.core.WrappedHTMLElement;
+               import 
org.apache.flex.html.beads.controllers.ItemRendererMouseController;
+       }
+       import org.apache.flex.core.ValuesManager;
+
+       /**
+        *  The DataItemRenderer class is the base class for most 
itemRenderers. This class
+        *  extends org.apache.flex.html.supportClasses.UIItemRendererBase and
+        *  includes row and column index values.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class DataItemRenderer extends UIItemRendererBase
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function DataItemRenderer()
+               {
+                       super();
+               }
+
+               private var _columnIndex:int;
+
+               /**
+                *  The index of the column the itemRenderer represents.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get columnIndex():int
+               {
+                       return _columnIndex;
+               }
+               public function set columnIndex(value:int):void
+               {
+                       _columnIndex = value;
+               }
+
+               private var _rowIndex:int;
+
+               /**
+                *  The index of the row the itemRenderer represents.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get rowIndex():int
+               {
+                       return _rowIndex;
+               }
+               public function set rowIndex(value:int):void
+               {
+                       _rowIndex = value;
+               }
+
+               private var _dataField:String;
+
+               /**
+                *  The name of the field within the data the itemRenderer 
should use.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get dataField():String
+               {
+                       return _dataField;
+               }
+               public function set dataField(value:String):void
+               {
+                       _dataField = value;
+               }
+
+               COMPILE::SWF
+               private var background:Sprite;
+
+               COMPILE::JS
+               private var controller:ItemRendererMouseController;
+
+               /**
+                * @private
+                */
+               COMPILE::SWF
+               override public function addedToParent():void
+               {
+                       super.addedToParent();
+
+                       background = new Sprite();
+                       addChild(background);
+               }
+
+               /**
+                * @private
+                */
+               override public function updateRenderer():void
+               {
+                       COMPILE::SWF
+                       {
+                               super.updateRenderer();
+
+                               background.graphics.clear();
+                               background.graphics.beginFill(useColor, 
(down||selected||hovered)?1:0);
+                               background.graphics.drawRect(0, 0, width, 
height);
+                               background.graphics.endFill();
+                       }
+                       COMPILE::JS
+                       {
+                               if (selected)
+                                       element.style.backgroundColor = 
'#9C9C9C';
+                               else if (hovered)
+                                       element.style.backgroundColor = 
'#ECECEC';
+                               else
+                                       element.style.backgroundColor = null;
+                       }
+               }
+
+               /**
+                * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+                *
+                */
+               COMPILE::JS
+               override protected function createElement():WrappedHTMLElement
+               {
+                       element = document.createElement('div') as 
WrappedHTMLElement;
+                       positioner = element;
+                       positioner.style.position = 'relative';
+
+                       element.flexjs_wrapper = this;
+                       className = 'DataItemRenderer';
+
+                       controller = new ItemRendererMouseController();
+                       controller.strand = this;
+
+                       return element;
+               }
+
+
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateChooserButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateChooserButton.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateChooserButton.as
new file mode 100644
index 0000000..f493a45
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateChooserButton.as
@@ -0,0 +1,67 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.html.TextButton;
+
+       /**
+        *  The DateChooserButton class is used for each button in the 
DateChooser. The
+        *  button holds the day of the month the button is representing.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class DateChooserButton extends TextButton
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function DateChooserButton()
+               {
+                       super();
+                       className = "DateChooserButton";
+               }
+
+               private var _dayOfMonth:int;
+
+               /**
+                *  The day of the month the button represents.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get dayOfMonth():int
+               {
+                       return _dayOfMonth;
+               }
+               public function set dayOfMonth(value:int):void
+               {
+                       _dayOfMonth = value;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateHeaderButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateHeaderButton.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateHeaderButton.as
new file mode 100644
index 0000000..4fbe70a
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DateHeaderButton.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.html.TextButton;
+
+       /**
+        *  The DateHeaderButton class is used for the buttons in the 
DateChooser's
+        *  heading areas.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class DateHeaderButton extends TextButton
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function DateHeaderButton()
+               {
+                       super();
+                       className = "DateHeaderButton";
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DropDownListList.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DropDownListList.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DropDownListList.as
new file mode 100644
index 0000000..6bc1d43
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/DropDownListList.as
@@ -0,0 +1,63 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+    import org.apache.flex.core.IPopUp;
+    import org.apache.flex.html.SimpleList;
+    import org.apache.flex.html.beads.SolidBackgroundBead;
+    
+    //--------------------------------------
+    //  Events
+    //--------------------------------------
+    
+    /**
+     *  @copy org.apache.flex.core.ISelectionModel#change
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+    [Event(name="change", type="org.apache.flex.events.Event")]
+    
+    /**
+     *  The DropDownListList class is the List class used internally
+     *  by DropDownList as the dropdown/popup.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion FlexJS 0.0
+     */
+       public class DropDownListList extends SimpleList implements IPopUp
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+               public function DropDownListList()
+               {
+                       super();
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/GraphicsItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/GraphicsItemRenderer.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/GraphicsItemRenderer.as
new file mode 100644
index 0000000..73bd8bd
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/GraphicsItemRenderer.as
@@ -0,0 +1,316 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.core.ISelectableItemRenderer;
+       import org.apache.flex.core.ValuesManager;
+       import org.apache.flex.svg.CompoundGraphic;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.utils.MXMLDataInterpreter;
+       
+       /**
+        *  The GraphicsItemRenderer provides a base class for itemRenderers 
that use graphics rather than
+        *  components.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class GraphicsItemRenderer extends CompoundGraphic implements 
ISelectableItemRenderer
+       {
+               /**
+                *  Constructor.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function GraphicsItemRenderer()
+               {
+                       super();
+               }
+               
+               /**
+                * @private
+                */
+               override public function addedToParent():void
+               {
+                       super.addedToParent();
+                       
+                       // very common for item renderers to be resized by 
their containers,
+                       addEventListener("widthChanged", sizeChangeHandler);
+                       addEventListener("heightChanged", sizeChangeHandler);
+                       
+                       // each MXML file can also have styles in fx:Style block
+                       ValuesManager.valuesImpl.init(this);
+                       
+                       MXMLDataInterpreter.generateMXMLProperties(this, 
mxmlProperties);
+                       MXMLDataInterpreter.generateMXMLInstances(this, this, 
MXMLDescriptor);
+                       
+                       dispatchEvent(new Event("initBindings"));
+                       dispatchEvent(new Event("initComplete"));
+                       
+               }
+               
+               private var _labelField:String = "label";
+               
+               /**
+                * The name of the field within the data to use as a label. 
Some itemRenderers use this field to
+                * identify the value they should show while other 
itemRenderers ignore this if they are showing
+                * complex information.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get labelField():String
+               {
+                       return _labelField;
+               }
+               public function set labelField(value:String):void
+               {
+                       _labelField = value;
+               }
+               
+               private var _index:int;
+               
+               /**
+                *  The position with the dataProvider being shown by the 
itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get index():int
+               {
+                       return _index;
+               }
+               public function set index(value:int):void
+               {
+                       _index = value;
+               }
+               
+               private var _selected:Boolean;
+               
+               /**
+                *  Whether or not the itemRenderer is in a selected state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get selected():Boolean
+               {
+                       return _selected;
+               }
+               public function set selected(value:Boolean):void
+               {
+                       _selected = value;
+                       updateRenderer();
+               }
+               
+               private var _hovered:Boolean;
+               
+               /**
+                *  Whether or not the itemRenderer is in a hovered state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get hovered():Boolean
+               {
+                       return _hovered;
+               }
+               public function set hovered(value:Boolean):void
+               {
+                       _hovered = value;
+                       updateRenderer();
+               }
+               
+               private var _down:Boolean;
+               
+               /**
+                *  Whether or not the itemRenderer is in a down (or 
pre-selected) state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get down():Boolean
+               {
+                       return _down;
+               }
+               public function set down(value:Boolean):void
+               {
+                       _down = value;
+                       updateRenderer();
+               }
+               
+               private var _data:Object;
+               
+               [Bindable("__NoChangeEvent__")]
+               /**
+                *  The data being represented by this itemRenderer. This can 
be something simple like a String or
+                *  a Number or something very complex.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get data():Object
+               {
+                       return _data;
+               }
+               public function set data(value:Object):void
+               {
+                       _data = value;
+               }
+               
+               private var _listData:Object;
+               
+               [Bindable("__NoChangeEvent__")]
+               /**
+                *  Additional data about the list structure the itemRenderer 
may
+                *  find useful.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get listData():Object
+               {
+                       return _listData;
+               }
+               public function set listData(value:Object):void
+               {
+                       _listData = value;
+               }
+               
+               private var _dataField:String;
+               
+               /**
+                *  The name of the field within the data the itemRenderer 
should use.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get dataField():String
+               {
+                       return _dataField;
+               }
+               public function set dataField(value:String):void
+               {
+                       _dataField = value;
+               }
+               
+               private var _itemRendererParent:Object;
+               
+               /**
+                * The parent container for the itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get itemRendererParent():Object
+               {
+                       return _itemRendererParent;
+               }
+               public function set itemRendererParent(value:Object):void
+               {
+                       _itemRendererParent = value;
+               }
+               
+               /**
+                * @private
+                */
+               public function updateRenderer():void
+               {
+//                     if (down)
+//                             backgroundColor = downColor;
+//                     else if (hovered)
+//                             backgroundColor = highlightColor;
+//                     else if (selected)
+//                             backgroundColor = selectedColor;
+               }
+               
+               /**
+                *  @copy 
org.apache.flex.core.ItemRendererClassFactory#mxmlContent
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public var mxmlContent:Array;
+               
+               /**
+                * @private
+                */
+               public function get MXMLDescriptor():Array
+               {
+                       return null;
+               }
+               
+               private var mxmlProperties:Array ;
+               
+               /**
+                * @private
+                */
+               public function generateMXMLAttributes(data:Array):void
+               {
+                       mxmlProperties = data;
+               }
+               
+               /**
+                * @private
+                */
+               private function sizeChangeHandler(event:Event):void
+               {
+                       adjustSize();
+               }
+               
+               /**
+                *  This function is called whenever the itemRenderer changes 
size. Sub-classes should override
+                *  this method an handle the size change.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function adjustSize():void
+               {
+                       // handle in subclass
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/HScrollBar.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/HScrollBar.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/HScrollBar.as
new file mode 100644
index 0000000..0b56925
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/HScrollBar.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.core.IChrome;
+       import org.apache.flex.core.IViewportScroller;
+       
+       /**
+        *  The ScrollBar class represents either a vertical or horizontal 
control
+        *  that allows the user to quickly scan through a component that does 
not
+        *  wholly fit within its container.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class HScrollBar extends ScrollBar implements IChrome, 
IViewportScroller
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function HScrollBar()
+               {
+                       super();
+               }               
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as
new file mode 100644
index 0000000..119400f
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/RadioButtonIcon.as
@@ -0,0 +1,111 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       COMPILE::JS {
+        import org.apache.flex.core.WrappedHTMLElement;
+    }
+
+       /**
+        *  The RadioButton class is a component that displays a selectable 
Button. RadioButtons
+        *  are typically used in groups, identified by the groupName property. 
RadioButton use
+        *  the following beads:
+        *
+        *  org.apache.flex.core.IBeadModel: the data model, which includes the 
groupName.
+        *  org.apache.flex.core.IBeadView:  the bead that constructs the 
visual parts of the RadioButton..
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class RadioButtonIcon
+       {
+               public function RadioButtonIcon()
+               {
+                       COMPILE::JS {
+                               createElement();
+                       }
+
+                       className = 'RadioButtonIcon';
+               }
+
+               COMPILE::JS {
+               public var element:WrappedHTMLElement;
+               public var positioner:WrappedHTMLElement;
+               }
+
+               private var _className:String;
+
+               /**
+                * @private
+                */
+               public function get className():String
+               {
+                       return _className;
+               }
+               public function set className(value:String):void
+               {
+                       _className = value;
+
+                       COMPILE::JS {
+                               element.className = value;
+                       }
+               }
+
+               private var _id:String;
+
+               /**
+                * @private
+                */
+               public function get id():String
+               {
+                       return _id;
+               }
+               public function set id(value:String):void
+               {
+                       _id = value;
+
+                       COMPILE::JS {
+                               element.id = value;
+                       }
+               }
+
+               /**
+                * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+                * @flexjsignorecoercion HTMLInputElement
+                * @flexjsignorecoercion Text
+                */
+               COMPILE::JS
+               protected function createElement():WrappedHTMLElement
+               {
+                       var input:HTMLInputElement = 
document.createElement('input') as HTMLInputElement;
+                       input.type = 'radio';
+
+                       element = input as WrappedHTMLElement;
+
+                       positioner = element;
+                       positioner.style.position = 'relative';
+
+                       (element as WrappedHTMLElement).flexjs_wrapper = this;
+
+                       return element;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollBar.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollBar.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollBar.as
new file mode 100644
index 0000000..0bef2e6
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollBar.as
@@ -0,0 +1,50 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.core.UIBase;
+       import org.apache.flex.core.IChrome;
+       import org.apache.flex.core.IViewportScroller;
+       
+       /**
+        *  The ScrollBar class represents either a vertical or horizontal 
control
+        *  that allows the user to quickly scan through a component that does 
not
+        *  wholly fit within its container.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class ScrollBar extends UIBase implements IChrome, 
IViewportScroller
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function ScrollBar()
+               {
+                       super();
+               }               
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
new file mode 100644
index 0000000..d7c8d71
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/ScrollingViewport.as
@@ -0,0 +1,351 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+    COMPILE::SWF
+    {
+        import flash.geom.Rectangle;
+    }
+       import org.apache.flex.core.IBead;
+       import org.apache.flex.core.IBeadLayout;
+       import org.apache.flex.core.IContentViewHost;
+       import org.apache.flex.core.IParentIUIBase;
+       import org.apache.flex.core.IStrand;
+       import org.apache.flex.core.IUIBase;
+       import org.apache.flex.core.IViewport;
+       import org.apache.flex.core.IViewportModel;
+    COMPILE::SWF
+    {
+        import org.apache.flex.core.IViewportScroller;
+    }
+       import org.apache.flex.core.UIBase;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.geom.Size;
+       import org.apache.flex.html.beads.ScrollBarView;
+       import org.apache.flex.html.beads.models.ScrollBarModel;
+
+       /**
+        * The ScrollingViewport extends the Viewport class by adding 
horizontal and
+        * vertical scroll bars, if needed, to the content area of a Container. 
In
+        * addition, the content of the Container is clipped so that items 
extending
+        * outside the Container are hidden and reachable only by scrolling.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class ScrollingViewport extends Viewport implements IBead, 
IViewport
+       {
+               /**
+                * Constructor
+            *
+            *  @langversion 3.0
+            *  @playerversion Flash 10.2
+            *  @playerversion AIR 2.6
+            *  @productversion FlexJS 0.0
+                */
+               public function ScrollingViewport()
+               {
+               }
+
+        COMPILE::SWF
+               private var _verticalScroller:ScrollBar;
+
+        COMPILE::SWF
+               public function get verticalScroller():IViewportScroller
+               {
+                       return _verticalScroller;
+               }
+
+        COMPILE::SWF
+               private var _horizontalScroller:ScrollBar
+
+        COMPILE::SWF
+               public function get horizontalScroller():IViewportScroller
+               {
+                       return _horizontalScroller;
+               }
+
+        COMPILE::SWF
+        private var _verticalScrollPosition:Number = 0;
+
+        public function get verticalScrollPosition():Number
+        {
+            COMPILE::SWF
+            {
+                return _verticalScrollPosition;
+            }
+            COMPILE::JS
+            {
+                return this.contentView.positioner.scrollTop;
+            }
+        }
+        public function set verticalScrollPosition(value:Number):void
+        {
+            COMPILE::SWF
+            {
+                _verticalScrollPosition = value;
+                handleVerticalScrollChange();
+            }
+            COMPILE::JS
+            {
+                this.contentView.positioner.scrollTop = value;
+            }
+        }
+
+        COMPILE::SWF
+        private var _horizontalScrollPosition:Number = 0;
+
+        public function get horizontalScrollPosition():Number
+        {
+            COMPILE::SWF
+            {
+                return _horizontalScrollPosition;
+            }
+            COMPILE::JS
+            {
+                return this.contentView.positioner.scrollLeft;
+            }
+        }
+        public function set horizontalScrollPosition(value:Number):void
+        {
+            COMPILE::SWF
+            {
+                _horizontalScrollPosition = value;
+                handleHorizontalScrollChange();
+            }
+            COMPILE::JS
+            {
+                this.contentView.positioner.scrollLeft = value;
+            }
+        }
+
+        COMPILE::JS
+        override public function set strand(value:IStrand):void
+        {
+            super.strand = value;
+            contentView.element.style.overflow = 'auto';
+        }
+
+        private var viewportWidth:Number;
+        private var viewportHeight:Number;
+
+        /**
+         * @copy org.apache.flex.core.IViewport
+         */
+        override public function 
layoutViewportBeforeContentLayout(width:Number, height:Number):void
+        {
+           super.layoutViewportBeforeContentLayout(width, height);
+           viewportWidth = width;
+           viewportHeight = height;
+        }
+
+        /**
+         * @copy org.apache.flex.core.IViewport
+         */
+               override public function layoutViewportAfterContentLayout():Size
+               {
+            COMPILE::SWF
+            {
+                var hadV:Boolean = _verticalScroller != null && 
_verticalScroller.visible;
+                var hadH:Boolean = _horizontalScroller != null && 
_horizontalScroller.visible;
+                var contentSize:Size;
+                do
+                {
+                    contentSize = super.layoutViewportAfterContentLayout();
+                    if (isNaN(viewportHeight))
+                        viewportHeight = contentSize.height;
+                    if (isNaN(viewportWidth))
+                        viewportWidth = contentSize.width;
+
+                    var host:UIBase = UIBase(_strand);
+                    var visibleWidth:Number;
+                    var visibleHeight:Number;
+                    var needV:Boolean = contentSize.height > viewportHeight;
+                    var needH:Boolean = contentSize.width > viewportWidth;
+
+                    if (needV)
+                    {
+                        if (_verticalScroller == null) {
+                            _verticalScroller = createVerticalScrollBar();
+                            (host as 
IContentViewHost).strandChildren.addElement(_verticalScroller);
+                        }
+                    }
+                    if (needH)
+                    {
+                        if (_horizontalScroller == null) {
+                            _horizontalScroller = createHorizontalScrollBar();
+                            (host as 
IContentViewHost).strandChildren.addElement(_horizontalScroller);
+                        }
+                    }
+
+                    if (needV)
+                    {
+                        _verticalScroller.visible = true;
+                        _verticalScroller.x = contentArea.x + viewportWidth - 
_verticalScroller.width;
+                        _verticalScroller.y = contentArea.y;
+                        _verticalScroller.setHeight(viewportHeight - (needH ? 
_horizontalScroller.height : 0), true);
+                        visibleWidth = _verticalScroller.x;
+                    }
+                    else if (_verticalScroller)
+                        _verticalScroller.visible = false;
+
+                    if (needH)
+                    {
+                        _horizontalScroller.visible = true;
+                        _horizontalScroller.x = contentArea.x;
+                        _horizontalScroller.y = contentArea.y + viewportHeight 
- _horizontalScroller.height;
+                        _horizontalScroller.setWidth(viewportWidth - (needV ? 
_verticalScroller.width : 0), true);
+                        visibleHeight = _horizontalScroller.y;
+                    }
+
+                    var needsLayout:Boolean = false;
+                    // resize content area if needed to get out from under 
scrollbars
+                    if (!isNaN(visibleWidth) || !isNaN(visibleHeight))
+                    {
+                        if (!isNaN(visibleWidth))
+                            needsLayout = visibleWidth != contentView.width;
+                        if (!isNaN(visibleHeight))
+                            needsLayout = visibleHeight != contentView.height;
+                        if (!isNaN(visibleWidth) && !isNaN(visibleHeight))
+                            contentArea.setWidthAndHeight(visibleWidth, 
visibleHeight, false);
+                        else if (!isNaN(visibleWidth))
+                            contentArea.setWidth(visibleWidth, false);
+                        else if (!isNaN(visibleHeight))
+                            contentArea.setHeight(visibleHeight, false);
+                    }
+                    if (needsLayout)
+                    {
+                        var layout:IBeadLayout = 
host.getBeadByType(IBeadLayout) as IBeadLayout;
+                        layout.layout();
+                    }
+                } while (needsLayout && (needV != hadV || needH == hadH));
+                if (_verticalScroller)
+                {
+                    ScrollBarModel(_verticalScroller.model).maximum = 
contentSize.height;
+                    ScrollBarModel(_verticalScroller.model).pageSize = 
contentArea.height;
+                    ScrollBarModel(_verticalScroller.model).pageStepSize = 
contentArea.height;
+                    if (contentSize.height > contentArea.height &&
+                        (contentSize.height - contentArea.height) < 
_verticalScrollPosition)
+                        _verticalScrollPosition = contentSize.height - 
contentArea.height;
+                }
+                if (_horizontalScroller)
+                {
+                    ScrollBarModel(_horizontalScroller.model).maximum = 
contentSize.width;
+                    ScrollBarModel(_horizontalScroller.model).pageSize = 
contentArea.width;
+                    ScrollBarModel(_horizontalScroller.model).pageStepSize = 
contentArea.width;
+                    if (contentSize.width > contentArea.width &&
+                        (contentSize.width - contentArea.width) < 
_horizontalScrollPosition)
+                        _horizontalScrollPosition = contentSize.width - 
contentArea.width;
+                }
+
+                var rect:Rectangle = new Rectangle(_horizontalScrollPosition, 
_verticalScrollPosition,
+                    (_verticalScroller != null && _verticalScroller.visible) ?
+                    _verticalScroller.x : viewportWidth,
+                    (_horizontalScroller != null && 
_horizontalScroller.visible) ?
+                    _horizontalScroller.y : viewportHeight);
+                contentArea.scrollRect = rect;
+                return contentSize;
+
+            }
+            COMPILE::JS
+            {
+                return new Size(contentView.width, contentView.height);
+            }
+
+               }
+
+               COMPILE::SWF
+               private function createVerticalScrollBar():ScrollBar
+               {
+                       var vsbm:ScrollBarModel = new ScrollBarModel();
+                       vsbm.minimum = 0;
+                       vsbm.snapInterval = 1;
+                       vsbm.stepSize = 1;
+                       vsbm.value = 0;
+
+                       var vsb:VScrollBar;
+                       vsb = new VScrollBar();
+                       vsb.model = vsbm;
+                       vsb.visible = false;
+
+                       vsb.addEventListener("scroll",handleVerticalScroll);
+                       return vsb;
+               }
+
+        COMPILE::SWF
+               private function createHorizontalScrollBar():ScrollBar
+               {
+                       var hsbm:ScrollBarModel = new ScrollBarModel();
+                       hsbm.minimum = 0;
+                       hsbm.snapInterval = 1;
+                       hsbm.stepSize = 1;
+                       hsbm.value = 0;
+
+                       var hsb:HScrollBar;
+                       hsb = new HScrollBar();
+                       hsb.model = hsbm;
+                       hsb.visible = false;
+
+                       hsb.addEventListener("scroll",handleHorizontalScroll);
+                       return hsb;
+               }
+
+        COMPILE::SWF
+               private function handleVerticalScroll(event:Event):void
+               {
+                       var host:UIBase = UIBase(_strand);
+                       var vpos:Number = 
ScrollBarModel(_verticalScroller.model).value;
+                       var rect:Rectangle = contentArea.scrollRect;
+                       rect.y = vpos;
+                       contentArea.scrollRect = rect;
+
+                       _verticalScrollPosition = vpos;
+               }
+
+        COMPILE::SWF
+               private function handleHorizontalScroll(event:Event):void
+               {
+                       var host:UIBase = UIBase(_strand);
+                       var hpos:Number = 
ScrollBarModel(_horizontalScroller.model).value;
+                       var rect:Rectangle = contentArea.scrollRect;
+                       rect.x = hpos;
+                       contentArea.scrollRect = rect;
+
+                       _horizontalScrollPosition = hpos;
+               }
+
+        COMPILE::SWF
+               private function handleVerticalScrollChange():void
+               {
+                       if (_verticalScroller) {
+                               ScrollBarModel(_verticalScroller.model).value = 
verticalScrollPosition;
+                       }
+               }
+
+        COMPILE::SWF
+               private function handleHorizontalScrollChange():void
+               {
+                       if (_horizontalScroller) {
+                               ScrollBarModel(_horizontalScroller.model).value 
= horizontalScrollPosition;
+                       }
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/SpinnerButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/SpinnerButton.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/SpinnerButton.as
new file mode 100644
index 0000000..f03b527
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/SpinnerButton.as
@@ -0,0 +1,31 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.html.TextButton;
+
+       public class SpinnerButton extends TextButton
+       {
+               public function SpinnerButton()
+               {
+                       super();
+                       className = 'SpinnerButton';
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
new file mode 100644
index 0000000..b897012
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/StringItemRenderer.as
@@ -0,0 +1,180 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+    COMPILE::SWF
+    {
+        import flash.text.TextFieldAutoSize;
+        import flash.text.TextFieldType;
+        
+        import org.apache.flex.core.CSSTextField;            
+    }
+    COMPILE::JS
+    {
+        import org.apache.flex.core.WrappedHTMLElement;
+        import 
org.apache.flex.html.beads.controllers.ItemRendererMouseController;        
+    }
+    import org.apache.flex.events.Event;
+    import org.apache.flex.html.beads.ITextItemRenderer;
+    
+       /**
+        *  The StringItemRenderer class displays data in string form using the 
data's toString()
+        *  function.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class StringItemRenderer extends DataItemRenderer implements 
ITextItemRenderer
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function StringItemRenderer()
+               {
+                       super();
+                       
+            COMPILE::SWF
+            {
+                textField = new CSSTextField();
+                textField.type = TextFieldType.DYNAMIC;
+                textField.autoSize = TextFieldAutoSize.LEFT;
+                textField.selectable = false;
+                textField.parentDrawsBackground = true;         
+            }
+               }
+               
+        COMPILE::SWF
+               public var textField:CSSTextField;
+               
+               /**
+                * @private
+                */
+        COMPILE::SWF
+               override public function addedToParent():void
+               {
+                       super.addedToParent();
+                       
+                       addChild(textField);
+
+                       adjustSize();
+               }
+               
+               /**
+                * @private
+                */
+        COMPILE::SWF
+               override public function adjustSize():void
+               {
+                       var cy:Number = height/2;
+                       
+                       textField.x = 0;
+                       textField.y = cy - textField.height/2;
+                       textField.width = width;
+                       
+                       updateRenderer();
+               }
+               
+               /**
+                *  The text currently displayed by the itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get text():String
+               {
+            COMPILE::SWF
+            {
+                return textField.text;                    
+            }
+            COMPILE::JS
+            {
+                return this.element.innerHTML;
+            }
+               }
+               
+               public function set text(value:String):void
+               {
+            COMPILE::SWF
+            {
+                textField.text = value;                    
+            }
+            COMPILE::JS
+            {
+                this.element.innerHTML = value;
+            }
+               }
+               
+               /**
+                *  Sets the data value and uses the String version of the data 
for display.
+                * 
+                *  @param Object data The object being displayed by the 
itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               override public function set data(value:Object):void
+               {
+                       super.data = value;
+            var text:String;
+                       if (labelField) text = String(value[labelField]);
+                       else if (dataField) text = String(value[dataField]);
+                       else text = String(value);
+            
+            this.text = text;
+               }
+               
+        COMPILE::JS
+        private var controller:ItemRendererMouseController;
+            
+        COMPILE::JS
+        private var backgroundView:WrappedHTMLElement;
+        
+        /**
+         * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
+         */
+        COMPILE::JS
+        override protected function createElement():WrappedHTMLElement
+        {            
+            element = document.createElement('div') as WrappedHTMLElement;
+            positioner = element;
+            positioner.style.position = 'relative';
+            
+            element.flexjs_wrapper = this;
+            className = 'StringItemRenderer';
+            
+            // itemRenderers should provide something for the background to 
handle
+            // the selection and highlight
+            backgroundView = element;
+            
+            return element;
+        }
+
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
new file mode 100644
index 0000000..5908d73
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TextFieldItemRenderer.as
@@ -0,0 +1,560 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+    import flash.text.TextFieldType;
+    
+    import org.apache.flex.core.CSSTextField;
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IBeadController;
+    import org.apache.flex.core.IFlexJSElement;
+    import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.IUIBase;
+    import org.apache.flex.core.UIBase;
+    import org.apache.flex.core.ValuesManager;
+    import org.apache.flex.events.Event;
+    import org.apache.flex.events.IEventDispatcher;
+    import org.apache.flex.events.MouseEvent;
+    import org.apache.flex.events.utils.MouseEventConverter;
+    import org.apache.flex.geom.Rectangle;
+    import org.apache.flex.html.beads.ITextItemRenderer;
+       import org.apache.flex.utils.CSSContainerUtils;
+       
+       /**
+        *  The TextFieldItemRenderer class provides a 
org.apache.flex.html.TextField as an itemRenderer.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class TextFieldItemRenderer extends CSSTextField implements 
ITextItemRenderer, IStrand, IUIBase, IFlexJSElement
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function TextFieldItemRenderer()
+               {
+                       super();
+            type = TextFieldType.DYNAMIC;
+            selectable = false;
+            
+            MouseEventConverter.setupInstanceConverters(this);
+               }
+                
+        public var highlightColor:uint = 0xCEDBEF;
+        public var selectedColor:uint = 0xA8C6EE;
+        public var downColor:uint = 0x808080;
+               
+               private var _explicitWidth:Number;
+               
+               /**
+                *  The explicitly set width (as opposed to measured width
+                *  or percentage width).
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get explicitWidth():Number
+               {
+                       if (isNaN(_explicitWidth))
+                       {
+                               var value:* = 
ValuesManager.valuesImpl.getValue(this, "width");
+                               if (value !== undefined) {
+                                       _explicitWidth = Number(value);
+                               }
+                       }
+                       
+                       return _explicitWidth;
+               }
+               
+               /**
+                *  @private
+                */
+               public function set explicitWidth(value:Number):void
+               {
+                       if (_explicitWidth == value)
+                               return;
+                       
+                       // width can be pixel or percent not both
+                       if (!isNaN(value))
+                               _percentWidth = NaN;
+                       
+                       _explicitWidth = value;
+                       
+                       dispatchEvent(new Event("explicitWidthChanged"));
+               }
+               
+               private var _explicitHeight:Number;
+               
+               /**
+                *  The explicitly set width (as opposed to measured width
+                *  or percentage width).
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get explicitHeight():Number
+               {
+                       if (isNaN(_explicitHeight))
+                       {
+                               var value:* = 
ValuesManager.valuesImpl.getValue(this, "height");
+                               if (value !== undefined) {
+                                       _explicitHeight = Number(value);
+                               }
+                       }
+                       
+                       return _explicitHeight;
+               }
+               
+               /**
+                *  @private
+                */
+               public function set explicitHeight(value:Number):void
+               {
+                       if (_explicitHeight == value)
+                               return;
+                       
+                       // height can be pixel or percent not both
+                       if (!isNaN(value))
+                               _percentHeight = NaN;
+                       
+                       _explicitHeight = value;
+                       
+                       dispatchEvent(new Event("explicitHeightChanged"));
+               }
+               
+               private var _percentWidth:Number;
+               
+               /**
+                *  The requested percentage width this component
+                *  should have in the parent container.  Note that
+                *  the actual percentage may be different if the 
+                *  total is more than 100% or if there are other
+                *  components with explicitly set widths.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get percentWidth():Number
+               {
+                       return _percentWidth;
+               }
+               
+               /**
+                *  @private
+                */
+               public function set percentWidth(value:Number):void
+               {
+                       if (_percentWidth == value)
+                               return;
+                       
+                       if (!isNaN(value))
+                               _explicitWidth = NaN;
+                       
+                       _percentWidth = value;
+                       
+                       dispatchEvent(new Event("percentWidthChanged"));
+               }
+               
+               private var _percentHeight:Number;
+               
+               /**
+                *  The requested percentage height this component
+                *  should have in the parent container.  Note that
+                *  the actual percentage may be different if the 
+                *  total is more than 100% or if there are other
+                *  components with explicitly set heights.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get percentHeight():Number
+               {
+                       return _percentHeight;
+               }
+               
+               /**
+                *  @private
+                */
+               public function set percentHeight(value:Number):void
+               {
+                       if (_percentHeight == value)
+                               return;
+                       
+                       if (!isNaN(value))
+                               _explicitHeight = NaN;
+                       
+                       _percentHeight = value;
+                       
+                       dispatchEvent(new Event("percentHeightChanged"));
+               }
+
+        private var _width:Number;
+               
+               /**
+                * @private
+                */
+        override public function get width():Number
+        {
+                       if (isNaN(explicitWidth))
+                       {
+                               var w:Number = _width;
+                               if (isNaN(w)) w = $width;
+                               var metrics:Rectangle = 
CSSContainerUtils.getBorderAndPaddingMetrics(this);
+                               return w + metrics.left + metrics.right;
+                       }
+                       else
+                               return explicitWidth;
+        }
+        override public function set width(value:Number):void
+        {
+                       if (explicitWidth != value)
+                       {
+                               explicitWidth = value;
+                       }
+                       
+                       if (value != _width) {
+                               _width = value;
+                               dispatchEvent( new Event("widthChanged") );
+                       }
+        }
+               
+               /**
+                * @private
+                */
+        protected function get $width():Number
+        {
+            return super.width;
+        }
+        
+        private var _height:Number;
+               
+               /**
+                * @private
+                */
+        override public function get height():Number
+        {
+                       if (isNaN(explicitHeight))
+                       {
+                               var h:Number = _height;
+                               if (isNaN(h)) h = $height;
+                               var metrics:Rectangle = 
CSSContainerUtils.getBorderAndPaddingMetrics(this);
+                               return h + metrics.top + metrics.bottom;
+                       }
+                       else
+                               return explicitHeight;
+        }
+
+        override public function set height(value:Number):void
+        {
+                       if (explicitHeight != value)
+                       {
+                               explicitHeight = value;
+                       }
+                       
+                       if (_height != value) {
+                               _height = value;
+                               dispatchEvent(new Event("heightChanged"));
+                       }
+        }
+               
+               /**
+                * @private
+                */
+        protected function get $height():Number
+        {
+            return super.height;
+        }
+
+               /**
+                *  The String(data) for the itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+        public function get data():Object
+        {
+            return text;
+        }
+        public function set data(value:Object):void
+        {
+            text = String(value);
+        }
+
+       private var _listData:Object;
+
+               /**
+                *  Additional data about the list the itemRenderer may find 
useful.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+       public function get listData():Object
+       {
+               return _listData;
+       }
+       public function set listData(value:Object):void
+       {
+               _listData = value;
+       }
+               
+               /**
+                * @private
+                */
+               public function get labelField():String
+               {
+                       return null;
+               }
+               public function set labelField(value:String):void
+               {
+                       // nothing to do for this
+               }
+        
+        private var _index:int;
+        
+               /**
+                *  An index value for the itemRenderer corresponding the 
data's position with its dataProvider.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+        public function get index():int
+        {
+            return _index;
+        }
+        public function set index(value:int):void
+        {
+            _index = value;
+        }
+        
+        private var _hovered:Boolean;
+        
+               /**
+                *  Returns whether or not the itemRenderer is a "hovered" 
state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+        public function get hovered():Boolean
+        {
+            return _hovered;
+        }
+        public function set hovered(value:Boolean):void
+        {
+            _hovered = value;
+            updateRenderer();
+        }
+        
+        private var _selected:Boolean;
+        
+               /**
+                *  Whether or not the itemRenderer should be represented in a 
selected state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+        public function get selected():Boolean
+        {
+            return _selected;
+        }
+        public function set selected(value:Boolean):void
+        {
+            _selected = value;
+            updateRenderer();
+        }
+
+        private var _down:Boolean;
+        
+               /**
+                *  Whether or not the itemRenderer should be represented in a 
down (or pre-selected) state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+        public function get down():Boolean
+        {
+            return _down;
+        }
+        public function set down(value:Boolean):void
+        {
+            _down = value;
+            updateRenderer();
+        }
+               
+               private var _itemRendererParent:Object;
+               
+               /**
+                *  The parent component of the itemRenderer instance. This is 
the container that houses
+                *  all of the itemRenderers.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get itemRendererParent():Object
+               {
+                       return _itemRendererParent;
+               }
+               public function set itemRendererParent(value:Object):void
+               {
+                       _itemRendererParent = value;
+               }
+        
+               /**
+                * @private
+                */
+        public function updateRenderer():void
+        {
+            background = (down || selected || hovered);
+            if (down)
+                backgroundColor = downColor;
+            else if (hovered)
+                backgroundColor = highlightColor;
+            else if (selected)
+                backgroundColor = selectedColor;
+        }
+        
+               /**
+                * @private
+                */
+        public function get element():IFlexJSElement
+        {
+            return this;
+        }
+
+        // beads declared in MXML are added to the strand.
+        // from AS, just call addBead()
+        public var beads:Array;
+        
+        private var _beads:Vector.<IBead>;
+               
+               /**
+                * @private
+                */
+        public function addBead(bead:IBead):void
+        {
+            if (!_beads)
+                _beads = new Vector.<IBead>;
+            _beads.push(bead);
+            bead.strand = this;
+        }
+        
+               /**
+                * @private
+                */
+        public function getBeadByType(classOrInterface:Class):IBead
+        {
+            for each (var bead:IBead in _beads)
+            {
+                if (bead is classOrInterface)
+                    return bead;
+            }
+            return null;
+        }
+        
+               /**
+                * @private
+                */
+        public function removeBead(value:IBead):IBead  
+        {
+            var n:int = _beads.length;
+            for (var i:int = 0; i < n; i++)
+            {
+                var bead:IBead = _beads[i];
+                if (bead == value)
+                {
+                    _beads.splice(i, 1);
+                    return bead;
+                }
+            }
+            return null;
+        }
+        
+               /**
+                * @private
+                */
+        public function addedToParent():void
+        {
+            var c:Class;
+            
+            for each (var bead:IBead in beads)
+                addBead(bead);
+            
+            dispatchEvent(new Event("beadsAdded"));
+
+            // renderer has a default model (the 'data' property)
+            // and it is essentially a view of that model, so it
+            // only needs an assignable controller
+            
+            if (getBeadByType(IBeadController) == null) 
+            {
+                c = ValuesManager.valuesImpl.getValue(this, "iBeadController") 
as Class;
+                if (c)
+                {
+                    var controller:IBeadController = new c as IBeadController;
+                    if (controller)
+                        addBead(controller);
+                }
+            }
+        }
+        
+        /**
+         *  @copy org.apache.flex.core.IUIBase#topMostEventDispatcher
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public function get topMostEventDispatcher():IEventDispatcher
+        {
+            if (!parent)
+                return null;
+            return IUIBase(parent).topMostEventDispatcher;
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeItemRenderer.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeItemRenderer.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeItemRenderer.as
new file mode 100644
index 0000000..7250e82
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeItemRenderer.as
@@ -0,0 +1,64 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{      
+       public class TreeItemRenderer extends StringItemRenderer
+       {
+               /**
+                * Constructor.
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+                */
+               public function TreeItemRenderer()
+               {
+                       super();
+               }
+               
+               /**
+                * Sets the data for the itemRenderer instance along with the 
listData
+                * (TreeListData).
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+                */
+               override public function set data(value:Object):void
+               {
+                       super.data = value;
+                       
+                       var treeData:TreeListData = listData as TreeListData;
+                       var indentSpace:String = "    ";
+                       
+                       COMPILE::JS {
+                               indentSpace = "&nbsp;&nbsp;&nbsp;&nbsp;"
+                       }
+                       
+                       var indent:String = treeData.hasChildren ? 
(treeData.isOpen ? "▼" : "▶") : " ";
+                       for (var i:int=0; i < treeData.depth; i++) {
+                               indent += indentSpace;
+                       }
+                       
+                       this.text = indent + this.text;
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeListData.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeListData.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeListData.as
new file mode 100644
index 0000000..c6da4d5
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/TreeListData.as
@@ -0,0 +1,76 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       /**
+        *  The TreeListData class contains information that Tree item 
renderers may
+        *  find useful when displaying the data for a node in the tree.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        *  @flexjsignoreimport goog.events.Event
+        */
+       public class TreeListData
+       {
+               /**
+                *  constructor.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function TreeListData()
+               {
+               }
+
+               /**
+                *  The depth of the data within the tree with the root being 
zero.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public var depth:Number;
+               
+               /**
+                *  Whether or not the node for this data is open (and its 
children
+                *  visible).
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public var isOpen:Boolean;
+               
+               /**
+                *  Whether or not the node for this data has any children.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public var hasChildren:Boolean;
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/UIItemRendererBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/UIItemRendererBase.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/UIItemRendererBase.as
new file mode 100644
index 0000000..f253bd2
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/UIItemRendererBase.as
@@ -0,0 +1,303 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.core.ISelectableItemRenderer;
+       import org.apache.flex.core.UIBase;
+       import org.apache.flex.core.ValuesManager;
+       import org.apache.flex.events.Event;
+       import org.apache.flex.utils.MXMLDataInterpreter;
+       
+    [DefaultProperty("mxmlContent")]
+
+    /**
+        *  The UIItemRendererBase class is the base class for all 
itemRenderers. An itemRenderer is used to
+        *  display a single datum within a collection of data. Components such 
as a List use itemRenderers to 
+        *  show their dataProviders.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class UIItemRendererBase extends UIBase implements 
ISelectableItemRenderer
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function UIItemRendererBase()
+               {
+               }
+               
+               /**
+                * @private
+                */
+               override public function addedToParent():void
+               {
+                       super.addedToParent();
+                       
+            // very common for item renderers to be resized by their 
containers,
+            addEventListener("widthChanged", sizeChangeHandler);
+            addEventListener("heightChanged", sizeChangeHandler);
+                       addEventListener("sizeChanged", sizeChangeHandler);
+
+            // each MXML file can also have styles in fx:Style block
+            ValuesManager.valuesImpl.init(this);
+            
+            MXMLDataInterpreter.generateMXMLProperties(this, mxmlProperties);
+            MXMLDataInterpreter.generateMXMLInstances(this, this, 
MXMLDescriptor);
+            
+            dispatchEvent(new Event("initBindings"));
+            dispatchEvent(new Event("initComplete"));
+            
+               }
+               
+               private var _itemRendererParent:Object;
+               
+               /**
+                * The parent container for the itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get itemRendererParent():Object
+               {
+                       return _itemRendererParent;
+               }
+               public function set itemRendererParent(value:Object):void
+               {
+                       _itemRendererParent = value;
+               }
+               
+        /**
+         *  @copy org.apache.flex.core.ItemRendererClassFactory#mxmlContent
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.0
+         */
+        public var mxmlContent:Array;
+        
+               /**
+                * @private
+                */
+        public function get MXMLDescriptor():Array
+        {
+            return null;
+        }
+        
+        private var mxmlProperties:Array ;
+        
+               /**
+                * @private
+                */
+        public function generateMXMLAttributes(data:Array):void
+        {
+            mxmlProperties = data;
+        }
+        
+               public var backgroundColor:uint = 0xFFFFFF;
+               public var highlightColor:uint = 0xCEDBEF;
+               public var selectedColor:uint = 0xA8C6EE;
+               public var downColor:uint = 0x808080;
+               protected var useColor:uint = backgroundColor;
+               
+               private var _data:Object;
+               
+        [Bindable("__NoChangeEvent__")]
+               /**
+                *  The data being represented by this itemRenderer. This can 
be something simple like a String or
+                *  a Number or something very complex.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get data():Object
+               {
+                       return _data;
+               }
+               public function set data(value:Object):void
+               {
+                       _data = value;
+               }
+               
+               private var _listData:Object;
+               
+               [Bindable("__NoChangeEvent__")]
+               /**
+                *  Additional data about the list structure the itemRenderer 
may
+                *  find useful.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get listData():Object
+               {
+                       return _listData;
+               }
+               public function set listData(value:Object):void
+               {
+                       _listData = value;
+               }
+               
+               private var _labelField:String = "label";
+               
+               /**
+                * The name of the field within the data to use as a label. 
Some itemRenderers use this field to
+                * identify the value they should show while other 
itemRenderers ignore this if they are showing
+                * complex information.
+                */
+               public function get labelField():String
+               {
+                       return _labelField;
+               }
+               public function set labelField(value:String):void
+               {
+                       _labelField = value;
+               }
+               
+               private var _index:int;
+               
+               /**
+                *  The position with the dataProvider being shown by the 
itemRenderer instance.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get index():int
+               {
+                       return _index;
+               }
+               public function set index(value:int):void
+               {
+                       _index = value;
+               }
+               
+               private var _hovered:Boolean;
+               
+               /**
+                *  Whether or not the itemRenderer is in a hovered state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get hovered():Boolean
+               {
+                       return _hovered;
+               }
+               public function set hovered(value:Boolean):void
+               {
+                       _hovered = value;
+                       updateRenderer();
+               }
+               
+               private var _selected:Boolean;
+               
+               /**
+                *  Whether or not the itemRenderer is in a selected state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get selected():Boolean
+               {
+                       return _selected;
+               }
+               public function set selected(value:Boolean):void
+               {
+                       _selected = value;
+                       updateRenderer();
+               }
+               
+               private var _down:Boolean;
+               
+               /**
+                *  Whether or not the itemRenderer is in a down (or 
pre-selected) state.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function get down():Boolean
+               {
+                       return _down;
+               }
+               public function set down(value:Boolean):void
+               {
+                       _down = value;
+                       updateRenderer();
+               }
+               
+               /**
+                * @private
+                */
+               public function updateRenderer():void
+               {
+                       if (down)
+                               useColor = downColor;
+                       else if (hovered)
+                               useColor = highlightColor;
+                       else if (selected)
+                               useColor = selectedColor;
+                       else
+                               useColor = backgroundColor;
+               }
+               
+               /**
+                * @private
+                */
+               private function sizeChangeHandler(event:Event):void
+               {
+                       adjustSize();
+               }
+               
+               /**
+                *  This function is called whenever the itemRenderer changes 
size. Sub-classes should override
+                *  this method an handle the size change.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function adjustSize():void
+               {
+                       // handle in subclass
+               }
+       }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/d8221452/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/VScrollBar.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/VScrollBar.as
 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/VScrollBar.as
new file mode 100644
index 0000000..a72c64c
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/flex/org/apache/flex/html/supportClasses/VScrollBar.as
@@ -0,0 +1,49 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.supportClasses
+{
+       import org.apache.flex.core.IChrome;
+       import org.apache.flex.core.IViewportScroller;
+       
+       /**
+        *  The ScrollBar class represents either a vertical or horizontal 
control
+        *  that allows the user to quickly scan through a component that does 
not
+        *  wholly fit within its container.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion FlexJS 0.0
+        */
+       public class VScrollBar extends ScrollBar implements IChrome, 
IViewportScroller
+       {
+               /**
+                *  constructor.
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion FlexJS 0.0
+                */
+               public function VScrollBar()
+               {
+                       super();
+               }               
+       }
+}

Reply via email to