You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by bi...@apache.org on 2014/11/04 20:16:02 UTC

[12/22] git commit: [flex-examples] [refs/heads/develop] - updates, new images

updates, new images

Signed-off-by: OmPrakash Muppirala <bi...@gmail.com>


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

Branch: refs/heads/develop
Commit: 1f0cce9905c6d60d9d555852ea981941dd1be6b9
Parents: 015a690
Author: nasha001 <na...@DM-DT-NASH.hartford.gov>
Authored: Tue Nov 4 12:58:33 2014 -0500
Committer: OmPrakash Muppirala <bi...@gmail.com>
Committed: Tue Nov 4 11:07:39 2014 -0800

----------------------------------------------------------------------
 .../src/LayoutViews/AccordionLayoutView.mxml    |  96 ++--
 .../src/LayoutViews/CarouselLayoutView.mxml     | 101 +++-
 .../src/LayoutViews/CoverFlowLayoutView.mxml    | 113 +++--
 .../src/LayoutViews/HorizontalLayoutView.mxml   | 101 +++-
 .../src/LayoutViews/RolodexLayoutView.mxml      |  98 ++--
 .../src/LayoutViews/StackLayoutView.mxml        |  99 ++--
 .../src/LayoutViews/TileLayoutView.mxml         | 110 +++--
 .../src/LayoutViews/TimeMachineLayoutView.mxml  | 100 ++--
 .../src/LayoutViews/VerticalLayoutView.mxml     | 101 +++-
 tourdeflexmobile/src/UIViews/ButtonBarView.mxml |  61 +--
 .../src/UIViews/CalloutButtonView.mxml          |  86 ++--
 tourdeflexmobile/src/UIViews/CheckboxView.mxml  |  52 ++-
 .../src/UIViews/DateSpinnerView.mxml            |  48 +-
 tourdeflexmobile/src/UIViews/HscrubberView.mxml |  71 +++
 tourdeflexmobile/src/UIViews/ListView.mxml      |  44 +-
 .../src/UIViews/MobileGridView.mxml             | 122 ++---
 .../src/UIViews/RadiobuttonView.mxml            |  50 +-
 .../src/UIViews/SpinnerListView.mxml            | 143 +++---
 tourdeflexmobile/src/UIViews/TextInputView.mxml |  76 ++-
 .../src/UIViews/ToggleSwitchView.mxml           |  54 ++-
 .../src/assets/font/Roboto-Bold.ttf             | Bin 0 -> 84924 bytes
 .../src/assets/font/Roboto-BoldItalic.ttf       | Bin 0 -> 88104 bytes
 .../src/assets/font/Roboto-Italic.ttf           | Bin 0 -> 87680 bytes
 .../src/assets/font/Roboto-Regular.ttf          | Bin 0 -> 84564 bytes
 tourdeflexmobile/src/assets/icons/160/1.png     | Bin 0 -> 12581 bytes
 tourdeflexmobile/src/assets/icons/160/2.png     | Bin 0 -> 11322 bytes
 tourdeflexmobile/src/assets/icons/160/3.png     | Bin 0 -> 12013 bytes
 tourdeflexmobile/src/assets/icons/160/about.png | Bin 1333 -> 465 bytes
 tourdeflexmobile/src/assets/icons/160/add.png   | Bin 1090 -> 186 bytes
 tourdeflexmobile/src/assets/icons/160/dock.png  | Bin 1129 -> 252 bytes
 tourdeflexmobile/src/assets/icons/160/icon.png  | Bin 0 -> 1735 bytes
 tourdeflexmobile/src/assets/icons/160/icon1.png | Bin 0 -> 1708 bytes
 tourdeflexmobile/src/assets/icons/240/1.png     | Bin 0 -> 20085 bytes
 tourdeflexmobile/src/assets/icons/240/2.png     | Bin 0 -> 16937 bytes
 tourdeflexmobile/src/assets/icons/240/3.png     | Bin 0 -> 18607 bytes
 tourdeflexmobile/src/assets/icons/240/about.png | Bin 1629 -> 683 bytes
 tourdeflexmobile/src/assets/icons/240/add.png   | Bin 1142 -> 278 bytes
 tourdeflexmobile/src/assets/icons/240/dock.png  | Bin 1211 -> 289 bytes
 tourdeflexmobile/src/assets/icons/240/icon.png  | Bin 0 -> 2898 bytes
 tourdeflexmobile/src/assets/icons/240/icon1.png | Bin 0 -> 2901 bytes
 tourdeflexmobile/src/assets/icons/320/1.png     | Bin 0 -> 27846 bytes
 tourdeflexmobile/src/assets/icons/320/2.png     | Bin 0 -> 22973 bytes
 tourdeflexmobile/src/assets/icons/320/3.png     | Bin 0 -> 28158 bytes
 tourdeflexmobile/src/assets/icons/320/about.png | Bin 2040 -> 860 bytes
 tourdeflexmobile/src/assets/icons/320/add.png   | Bin 1221 -> 250 bytes
 tourdeflexmobile/src/assets/icons/320/dock.png  | Bin 1337 -> 350 bytes
 tourdeflexmobile/src/assets/icons/320/icon.png  | Bin 0 -> 4106 bytes
 tourdeflexmobile/src/assets/icons/320/icon1.png | Bin 0 -> 4125 bytes
 tourdeflexmobile/src/assets/icons/480/1.png     | Bin 0 -> 56962 bytes
 tourdeflexmobile/src/assets/icons/480/2.png     | Bin 0 -> 51977 bytes
 tourdeflexmobile/src/assets/icons/480/3.png     | Bin 0 -> 58282 bytes
 tourdeflexmobile/src/assets/icons/480/about.png | Bin 0 -> 1409 bytes
 tourdeflexmobile/src/assets/icons/480/add.png   | Bin 0 -> 305 bytes
 tourdeflexmobile/src/assets/icons/480/dock.png  | Bin 0 -> 432 bytes
 tourdeflexmobile/src/assets/icons/480/icon.png  | Bin 0 -> 7092 bytes
 tourdeflexmobile/src/assets/icons/480/icon1.png | Bin 0 -> 7141 bytes
 tourdeflexmobile/src/assets/icons/640/icon.png  | Bin 0 -> 10109 bytes
 tourdeflexmobile/src/assets/icons/640/icon1.png | Bin 0 -> 10235 bytes
 tourdeflexmobile/src/assets/icons/icon1024.png  | Bin 0 -> 481460 bytes
 tourdeflexmobile/src/assets/icons/icon144.png   | Bin 0 -> 28472 bytes
 tourdeflexmobile/src/assets/icons/icon192.png   | Bin 0 -> 42041 bytes
 tourdeflexmobile/src/assets/icons/icon48.png    | Bin 0 -> 8203 bytes
 tourdeflexmobile/src/assets/icons/icon512.png   | Bin 0 -> 137395 bytes
 tourdeflexmobile/src/assets/icons/icon72.png    | Bin 0 -> 12525 bytes
 tourdeflexmobile/src/assets/icons/icon96.png    | Bin 0 -> 17331 bytes
 tourdeflexmobile/src/assets/images/bg.png       | Bin 2848 -> 0 bytes
 .../src/assets/images/logo_01_fullcolor.png     | Bin 0 -> 69140 bytes
 .../src/assets/images/logo_01_fullcolor_wb.png  | Bin 0 -> 134721 bytes
 .../src/assets/images/poweredby.png             | Bin 0 -> 165477 bytes
 .../src/renderers/AccordionElement.mxml         |  14 +
 .../src/renderers/MenuRenderer.mxml             |  34 +-
 tourdeflexmobile/src/styles.css                 | 460 +++++++++++++++++--
 tourdeflexmobile/src/views/BlogView.mxml        |  26 +-
 tourdeflexmobile/src/views/HttpServiceView.mxml |  42 +-
 74 files changed, 1648 insertions(+), 654 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/AccordionLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/AccordionLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/AccordionLayoutView.mxml
index 35f7e78..87f344f 100644
--- a/tourdeflexmobile/src/LayoutViews/AccordionLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/AccordionLayoutView.mxml
@@ -18,40 +18,84 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="AccordionLayout" xmlns:ns="http://flex.apache.org/experimental/ns">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="AccordionLayout" 
+		xmlns:ns="http://flex.apache.org/experimental/ns" xmlns:renderers="renderers.*">
 	
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			import spark.skins.spark.DefaultComplexItemRenderer;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  150;
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="200" height="200" horizontalCenter="0" verticalCenter="0">
-		<s:Group id="group">
-			<s:layout>
-				<ns:AccordionLayout useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>	
+	
+	<s:List id="list" includeIn="DemoState" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer" pageScrollingEnabled="true">
+		<s:layout>
+			<ns:AccordionLayout 
+				useScrollBarForNavigation="true" 
+				scrollBarDirection="horizontal" 
+				duration="500" 
+				direction="horizontal"/>
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+				<renderers:AccordionElement/>
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="An AccordionLayout class arranges the layout elements in a vertical or horizontal sequence, with one of them at a time fully visible. 				
+				&#xd; &#xd;The position of the elements is determined by arranging them in a sequence, top to bottom or left to right depending on the value or duration.	
+				&#xd; &#xd;If the target of the layout implements ISelectable list, a ButtonBarBase can be set using the buttonBar property and the layout will connect the target and ButtonBarBase together so that the ButtonBarBase can be used to navigate through the elements.
+				"/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/CarouselLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/CarouselLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/CarouselLayoutView.mxml
index d87f7e4..46c0ab8 100644
--- a/tourdeflexmobile/src/LayoutViews/CarouselLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/CarouselLayoutView.mxml
@@ -18,40 +18,91 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="CarouselLayout" xmlns:ns="http://flex.apache.org/experimental/ns">
+		xmlns:s="library://ns.adobe.com/flex/spark" title="CarouselLayout" xmlns:ns="http://flex.apache.org/experimental/ns" xmlns:renderers="renderers.*">
 	
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			import spark.skins.spark.DefaultComplexItemRenderer;
+			
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
+	<s:actionContent>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>	
 	
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
+			pageScrollingEnabled="true" includeIn="DemoState">
+		<s:layout>
+			<ns:CarouselLayout  useScrollBarForNavigation="true" 
+								scrollBarDirection="horizontal" 
+								angle="40" 							
+								depthColor="1" 
+								depthColorAlpha="0.5"
+								fieldOfView="90" 
+								focalLength="600"
+								duration="250" 
+								radiusY="100" 
+								radiusZ="2000"
+								radiusX="570" />			
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text=" CarouselLayout class arranges the layout elements in a sequence along an arc, with one of them at a time selected. 
+				
+				&#xd; &#xd;The position of the elements is determined by the radii radiusX, radiusY and radiusZ. These can be properties can be set the negative values to produce a ring of elements surrounding the view point.
+				
+				&#xd; &#xd;The rotation of the elements is determined by the rotationX and rotationY properties."/>
 	
-	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<ns:CarouselLayout verticalAlign="middle" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/CoverFlowLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/CoverFlowLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/CoverFlowLayoutView.mxml
index 116831d..f24fc3c 100644
--- a/tourdeflexmobile/src/LayoutViews/CoverFlowLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/CoverFlowLayoutView.mxml
@@ -18,40 +18,101 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="CoverFlowLayout" xmlns:ns="http://flex.apache.org/experimental/ns">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="CoverFlowLayout" 
+		xmlns:ns="http://flex.apache.org/experimental/ns">
 	
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<ns:CoverflowLayout verticalAlign="middle" duration="500" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>		
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
+			pageScrollingEnabled="true" includeIn="DemoState">
+		<s:layout>
+			<ns:CoverflowLayout verticalAlign="middle" 
+								duration="200"  
+								id="coverFlowLayoutID" 
+								useScrollBarForNavigation="true"
+								scrollBarDirection="horizontal"
+								selectedHorizontalDisplacement="100" 
+								horizontalDisplacement="100" 
+								selectedVerticalDisplacement="0"
+								verticalDisplacement="0" 
+								horizontalScrollPosition="320"
+								fieldOfView="40" 
+								focalLength="660"
+								maximumZ="50"/>
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="A CoverflowLayout class arranges the layout elements in a linear along with unselected items having a different z and rotation.
+				
+				&#xd; &#xd;The horizontal position of the elements is determined by the combined result of horizontalAlign, horizontalDisplacement, horizontalAlignOffset or horizontalAlignOffsetPercent, elementHorizontalAlign and selectedHorizontalDisplacement.
+				
+				&#xd; &#xd;The horizontal position of the elements is determined by the combined result of verticalAlign, verticalDisplacement, verticalAlignOffset or verticalAlignOffsetPercent, elementVerticalAlign and selectedVerticalDisplacement.
+				
+				&#xd; &#xd;The z position of unselected elements is determined by the maximumZ property.
+				
+				&#xd; &#xd;The rotation of the elements is determined by the rotationX, rotationY and rotationZ properties.
+				
+				&#xd; &#xd;The color of unselected elements is determined by the depthColor and depthColorAlpha properties.
+				
+				&#xd; &#xd;If depthColor has a value of -1, no color transform is applied.
+				
+				&#xd; &#xd;The number elements or elements rendered is determined by the numUnselectedElements property. If numUnselectedElements has a value of -1 and useVirtualLayout has a value of true, only the elements that fit within the bound of the target are rendered, If numUnselectedElements has a value of -1 and useVirtualLayout has a value of false, all elements are rendered."/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/HorizontalLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/HorizontalLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/HorizontalLayoutView.mxml
index 0caf89d..d7c1b2f 100644
--- a/tourdeflexmobile/src/LayoutViews/HorizontalLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/HorizontalLayoutView.mxml
@@ -23,35 +23,86 @@ limitations under the License.
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			import spark.skins.spark.DefaultComplexItemRenderer;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.horizontalScrollPosition = group.contentWidth;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<s:HorizontalLayout verticalAlign="middle" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>	
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer" includeIn="DemoState" verticalScrollPolicy="off">
+		<s:layout>
+			<s:HorizontalLayout verticalAlign="middle" useVirtualLayout="true" />
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The HorizontalLayout class arranges the layout elements in a horizontal sequence, left to right, with optional gaps between the elements and optional padding around the elements.				
+				&#xd; &#xd;The horizontal position of the elements is determined by arranging them in a horizontal sequence, left to right, taking into account the padding before the first element and the gaps between the elements.
+				&#xd; &#xd;The vertical position of the elements is determined by the layout's verticalAlign property.
+				&#xd; &#xd;During the execution of the measure() method, the default size of the container is calculated by accumulating the preferred sizes of the elements, including gaps and padding. When the requestedColumnCount property is set to a value other than -1, only the space for that many elements is measured, starting from the first element.				
+				&#xd; &#xd;During the execution of the updateDisplayList() method, the width of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum width and maximum width are always respected):				
+				&#xd; &#xd;- If variableColumnWidth is false, then set the element's width to the value of the columnWidth property.				
+				&#xd; &#xd;- If the element's percentWidth is set, then calculate the element's width by distributing the available container width between all elements with percentWidth setting. The available container width is equal to the container width minus the gaps, the padding and the space occupied by the rest of the elements. The element's precentWidth property is ignored when the layout is virtualized.				
+				&#xd; &#xd;- Set the element's width to its preferred width.				
+				&#xd; &#xd;The height of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum height and maximum height are always respected):				
+				&#xd; &#xd;- If the verticalAlign property is 'justify', then set the element's height to the container height.
+				&#xd; &#xd;- If the verticalAlign property is 'contentJustify', then set the element's height to the maximum between the container's height and all elements' preferred height.
+				&#xd; &#xd;- If the element's percentHeight property is set, then calculate the element's height as a percentage of the container's height.
+				&#xd; &#xd;- Set the element's height to its preferred height. "/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/RolodexLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/RolodexLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/RolodexLayoutView.mxml
index 8934ec6..c6f675e 100644
--- a/tourdeflexmobile/src/LayoutViews/RolodexLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/RolodexLayoutView.mxml
@@ -18,40 +18,86 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="RolodexLayout" xmlns:ns="http://flex.apache.org/experimental/ns">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="RolodexLayout" 
+		xmlns:ns="http://flex.apache.org/experimental/ns">
 	
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<ns:RolodexLayout horizontalAlign="center" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>		
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
+			pageScrollingEnabled="true" includeIn="DemoState">
+		<s:layout>
+			<ns:RolodexLayout useScrollBarForNavigation="true" 
+							  scrollBarDirection="vertical"
+							  duration="200" 
+							  fieldOfView="30" 
+							  focalLength="870"
+							  horizontalDisplacement="0" 
+							  verticalDisplacement="180"
+							  maximumZ="2000" 
+							  rotationAnchor="top"/>
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The RolodexLayout class arranges the layout elements in a depth sequence, front to back, with optional depths between the elements and optional aligment of the sequence of elements. 
+				&#xd; &#xd;When moving between elements the first element is rotated by 270 degrees, with the transform point anchored on the side of the element specified with rotationAnchor to transition the element in and out of view.
+				&#xd; &#xd;The vertical position of the elements is determined by a combination of the verticalAlign, verticalOffset, verticalDisplacement and the number of indices the element is from the selectedIndex property. First the element is aligned using the verticalAlign property and then the verticalOffset is applied. The value of verticalDisplacement is then multiplied of the number of elements the element is from the selected element.
+				&#xd; &#xd;The horizontal position of the elements is determined by a combination of the horizontalAlign, horizontalOffset, horizontalDisplacement and the number of indices the element is from the selectedIndex property. First the element is aligned using the horizontalAlign property and then the determined is applied. The value of horizontalDisplacement is then multiplied of the number of elements the element is from the selected element."/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/StackLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/StackLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/StackLayoutView.mxml
index 3e556ac..f3a4ee0 100644
--- a/tourdeflexmobile/src/LayoutViews/StackLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/StackLayoutView.mxml
@@ -18,40 +18,87 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="StackLayout" xmlns:ns="http://flex.apache.org/experimental/ns">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="StackLayout" 
+		xmlns:ns="http://flex.apache.org/experimental/ns">
 	
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<ns:StackLayout verticalAlign="middle" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>		
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
+			pageScrollingEnabled="true" includeIn="DemoState">
+		<s:layout>
+			<ns:StackLayout horizontalAlign="justify" verticalAlign="justify" scrollBarDirection="horizontal"/>
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="An StackLayout class shows a single element at a time.. 				
+				&#xd; &#xd;The horizontal position of the shown element is determined by the layout's horizontalAlign property.
+				&#xd; &#xd;The vertical position of the shown element is determined by the layout's verticalAlign property.
+				&#xd; &#xd;The width of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum width and maximum width are always respected):
+				&#xd; &#xd;- If horizontalAlign is 'justify', then set the element's width to the container width.			
+				&#xd; &#xd;- If horizontalAlign is 'contentJustify', then set the element's width to the maximum between the container's width and all elements' preferred width.				
+				&#xd; &#xd;- If the element's percentWidth is set, then calculate the element's width as a percentage of the container's width.				
+				&#xd; &#xd;- Set the element's width to its preferred width.
+				&#xd; &#xd;The height of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum height and maximum height are always respected):
+				&#xd; &#xd;- If the verticalAlign property is 'justify', then set the element's height to the container height.
+				&#xd; &#xd;- If the verticalAlign property is 'contentJustify', then set the element's height to the maximum between the container's height and all elements' preferred height
+				&#xd; &#xd;- If the element's percentHeight property is set, then calculate the element's height as a percentage of the container's height.
+				&#xd; &#xd;- Set the element's height to its preferred height."/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/TileLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/TileLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/TileLayoutView.mxml
index 059817f..6dc48eb 100644
--- a/tourdeflexmobile/src/LayoutViews/TileLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/TileLayoutView.mxml
@@ -23,38 +23,92 @@ limitations under the License.
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			import spark.skins.spark.DefaultComplexItemRenderer;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var miniGroup:Group = new Group();
-				group.addElement(miniGroup);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*100);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				miniGroup.addElement(bitmapImage);
-				
-				//group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<s:TileLayout orientation="rows" columnWidth="100" rowHeight="100" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>	
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer" includeIn="DemoState">
+		<s:layout>
+			<s:TileLayout    columnAlign="justifyUsingWidth"
+							 columnWidth="NaN"
+							 verticalAlign="middle"
+							 horizontalAlign="center"
+							 horizontalGap="6"
+							 orientation="rows" 
+							 rowAlign="top"
+							 verticalGap="6"/>
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box2}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box3}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box1}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box2}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box3}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box1}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box2}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box3}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box1}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box2}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box3}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box1}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box2}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box3}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box1}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box2}" scaleX=".7" scaleY=".7"/>
+				<s:BitmapImage source="{box3}" scaleX=".7" scaleY=".7"/>
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The TileLayout class arranges layout elements in columns and rows of equally-sized cells. The TileLayout class uses a number of properties that control orientation, count, size, gap and justification of the columns and the rows as well as element alignment within the cells. 				
+				&#xd; &#xd;Per-element supported constraints are percentWidth and percentHeight. Element's minimum and maximum sizes are always be respected and where possible, an element's size is limited to less then or equal of the cell size.
+				&#xd; &#xd;When not explicitly set, the columnWidth property is calculated as the maximum preferred bounds width of all elements and the columnHeight property is calculated as the maximum preferred bounds height of all elements.
+				&#xd; &#xd;When not explicitly set, the columnCount and rowCount properties are calculated from any explicit width and height settings for the layout target, and columnWidth and columnHeight. In case none is specified, the columnCount and rowCount values are picked so that the resulting pixel area is as square as possible
+				&#xd; &#xd;The measured size is calculated from the columnCount, rowCount, columnWidth, rowHeight properties and the gap sizes.
+				&#xd; &#xd;The default measured size, when no properties were explicitly set, is as square as possible area and is large enough to fit all elements.
+				&#xd; &#xd;In other cases the measured size may not be big enough to fit all elements. For example, when both columnCount and rowCount are explicitly set to values such that columnCount * rowCount less than element count.
+				&#xd; &#xd;The minimum measured size is calculated the same way as the measured size but it's guaranteed to encompass enough rows and columns along the minor axis to fit all elements.
+				"/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/TimeMachineLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/TimeMachineLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/TimeMachineLayoutView.mxml
index 5a4bc42..d3f644c 100644
--- a/tourdeflexmobile/src/LayoutViews/TimeMachineLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/TimeMachineLayoutView.mxml
@@ -18,40 +18,88 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="TimeMachineLayout" xmlns:ns="http://flex.apache.org/experimental/ns">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="TimeMachineLayout" 
+		xmlns:ns="http://flex.apache.org/experimental/ns">
 	
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<ns:TimeMachineLayout verticalAlign="middle" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>		
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer"
+			pageScrollingEnabled="true" includeIn="DemoState">
+		<s:layout>
+			<ns:TimeMachineLayout useScrollBarForNavigation="true" 
+								  scrollBarDirection="vertical" 
+								  duration="200" 
+								  fieldOfView="30" 
+								  focalLength="870"
+								  horizontalDisplacement="0" 
+								  verticalDisplacement="0"
+								  maximumZ="3000"/>
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The TimeMachineLayout class arranges the layout elements in a depth sequence, front to back, with optional depths between the elements and optional aligment the sequence of elements.  
+				&#xd; &#xd;The vertical position of the elements is determined by a combination of the verticalAlign, verticalOffset, verticalDisplacement and the number of indices the element is from the selectedIndex property. First the element is aligned using the verticalAlign property and then the verticalOffset is applied. The value of verticalDisplacement is then multiplied of the number of elements the element is from the selected element.
+				&#xd; &#xd;The horizontal position of the elements is determined by a combination of the horizontalAlign, horizontalOffset, horizontalDisplacement and the number of indices the element is from the selectedIndex property. First the element is aligned using the horizontalAlign property and then the determined is applied. The value of horizontalDisplacement is then multiplied of the number of elements the element is from the selected element.			
+				"/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/LayoutViews/VerticalLayoutView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/LayoutViews/VerticalLayoutView.mxml b/tourdeflexmobile/src/LayoutViews/VerticalLayoutView.mxml
index 2d2d81b..3df28e8 100644
--- a/tourdeflexmobile/src/LayoutViews/VerticalLayoutView.mxml
+++ b/tourdeflexmobile/src/LayoutViews/VerticalLayoutView.mxml
@@ -23,35 +23,86 @@ limitations under the License.
 	<fx:Script>
 		<![CDATA[
 			import spark.primitives.BitmapImage;
+			import spark.skins.spark.DefaultComplexItemRenderer;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				var random:Number = Math.ceil(Math.random()*3);
-				
-				var bitmapImage:BitmapImage = new BitmapImage();
-				bitmapImage.width =  Math.ceil(Math.random()*150);
-				bitmapImage.height = bitmapImage.width;
-				bitmapImage.source = "assets/images/box"+random+".png";
-				group.addElement(bitmapImage);
-				
-				group.verticalScrollPosition = group.contentHeight;
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
 			}
 		]]>
 	</fx:Script>
-	
-	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/1.png')" 
+								source240dpi="@Embed('assets/icons/240/1.png')" 
+								source320dpi="@Embed('assets/icons/320/1.png')"
+								source480dpi="@Embed('assets/icons/480/1.png" id="box1"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/2.png')" 
+								source240dpi="@Embed('assets/icons/240/2.png')" 
+								source320dpi="@Embed('assets/icons/320/2.png')"
+								source480dpi="@Embed('assets/icons/480/2.png" id="box2"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/3.png')" 
+								source240dpi="@Embed('assets/icons/240/3.png')" 
+								source320dpi="@Embed('assets/icons/320/3.png')"
+								source480dpi="@Embed('assets/icons/480/3.png" id="box3"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/about.png')" id="aboutIcon"  
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')"
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/dock.png')" id="demoIcon"
+								source240dpi="@Embed('assets/icons/240/dock.png')"  
+								source320dpi="@Embed('assets/icons/320/dock.png')"
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
 	<s:actionContent>
-		<s:Button click="buttonHandler(event)">
-			<s:icon>
-				<s:MultiDPIBitmapSource source160dpi="@Embed('assets/icons/160/add.png')" source240dpi="@Embed('assets/icons/240/add.png')" source320dpi="@Embed('assets/icons/320/add.png')" />
-			</s:icon>
-		</s:Button>
-	</s:actionContent>
-			
-	<s:Scroller id="scroller" width="100%" height="100%">
-		<s:Group id="group">
-			<s:layout>
-				<s:VerticalLayout horizontalAlign="center" useVirtualLayout="true" />
-			</s:layout>
-		</s:Group>
-	</s:Scroller>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>	
+	<s:List id="list" horizontalCenter="0" verticalCenter="0" width="100%" height="100%" itemRenderer="spark.skins.spark.DefaultComplexItemRenderer" includeIn="DemoState">
+		<s:layout>
+			<s:VerticalLayout useVirtualLayout="true" horizontalAlign="center" />
+		</s:layout>
+		<s:dataProvider>
+			<s:ArrayList>
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+				<s:BitmapImage source="{box1}" />
+				<s:BitmapImage source="{box2}" />
+				<s:BitmapImage source="{box3}" />
+			</s:ArrayList>
+		</s:dataProvider>
+	</s:List>
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" 
+				text="VerticalLayout class arranges the layout elements in a vertical sequence, top to bottom, with optional gaps between the elements and optional padding around the sequence of elements. 				
+				&#xd; &#xd;The vertical position of the elements is determined by arranging them in a vertical sequence, top to bottom, taking into account the padding before the first element and the gaps between the elements.
+				&#xd; &#xd;The horizontal position of the elements is determined by the layout's horizontalAlign property.
+				&#xd; &#xd;During the execution of the measure() method, the default size of the container is calculated by accumulating the preferred sizes of the elements, including gaps and padding. When requestedRowCount is set, only the space for that many elements is measured, starting from the first element.
+				&#xd; &#xd;During the execution of the updateDisplayList() method, the height of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum height and maximum height are always respected):
+				&#xd; &#xd;- If variableRowHeight is false, then set the element's height to the value of the rowHeight property.
+				&#xd; &#xd;- If the element's percentHeight is set, then calculate the element's height by distributing the available container height between all elements with a percentHeight setting. The available container height is equal to the container height minus the gaps, the padding and the space occupied by the rest of the elements. The element's precentHeight property is ignored when the layout is virtualized.
+				&#xd; &#xd;- Set the element's height to its preferred height.
+				&#xd; &#xd;The width of each element is calculated according to the following rules, listed in their respective order of precedence (element's minimum width and maximum width are always respected):
+				&#xd; &#xd;- If horizontalAlign is 'justify', then set the element's width to the container width.
+				&#xd; &#xd;- If horizontalAlign is 'contentJustify', then set the element's width to the maximum between the container's width and all elements' preferred width.
+				&#xd; &#xd;- Set the element's width to its preferred width.			
+				"/>
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/UIViews/ButtonBarView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/UIViews/ButtonBarView.mxml b/tourdeflexmobile/src/UIViews/ButtonBarView.mxml
index 54814f2..a28e7db 100644
--- a/tourdeflexmobile/src/UIViews/ButtonBarView.mxml
+++ b/tourdeflexmobile/src/UIViews/ButtonBarView.mxml
@@ -23,7 +23,6 @@ limitations under the License.
 	<fx:Script>
 		<![CDATA[
 			import spark.events.IndexChangeEvent;
-			import spark.skins.mobile.TextAreaSkin;
 			
 			protected function buttonbarHandler(event:IndexChangeEvent):void
 			{
@@ -32,47 +31,51 @@ limitations under the License.
 			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				if(currentState == "DemoState"){
+				if(currentState == "DemoState")
+				{
 					currentState = "InfoState";				
-				}else if(currentState == "InfoState"){
+				}
+				else if(currentState == "InfoState")
+				{
 					currentState = "DemoState";
 				}
 			}
 			
 		]]>
 	</fx:Script>
-	
 	<s:states>
 		<s:State name="DemoState"/>
 		<s:State name="InfoState"/>
 	</s:states>
-	
 	<fx:Declarations>
-		<s:MultiDPIBitmapSource id="aboutIcon" source160dpi="@Embed('assets/icons/160/about.png')" source240dpi="@Embed('assets/icons/240/about.png')" source320dpi="@Embed('assets/icons/320/about.png')"/>
-		<s:MultiDPIBitmapSource id="demoIcon" source160dpi="@Embed('assets/icons/160/dock.png')" source240dpi="@Embed('assets/icons/240/dock.png')" source320dpi="@Embed('assets/icons/320/dock.png')"/>
+		<s:MultiDPIBitmapSource id="aboutIcon" 
+								source160dpi="@Embed('assets/icons/160/about.png')" 
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')" 
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource id="demoIcon" 
+								source160dpi="@Embed('assets/icons/160/dock.png')" 
+								source240dpi="@Embed('assets/icons/240/dock.png')" 
+								source320dpi="@Embed('assets/icons/320/dock.png')" 
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
 	</fx:Declarations>
-	
-	<s:ButtonBar id="buttonbar" includeIn="DemoState" change="buttonbarHandler(event)" left="5" right="5" top="5">
-		<s:ArrayList>
-			<fx:Object label="Button 1"/>
-			<fx:Object label="Button 2"/>
-			<fx:Object label="Button 3"/>
-		</s:ArrayList>
-	</s:ButtonBar>
-
-	<s:Label id="label" includeIn="DemoState" horizontalCenter="0" textAlign="center" bottom="20"/>
-	
-	<s:TextArea includeIn="InfoState" skinClass="spark.skins.mobile.TextAreaSkin" left="10" right="10" top="10" bottom="10" editable="false" text="The ButtonBar control defines a horizontal group of logically related buttons with a common look and navigation.
-				&#xd; &#xd;The typical use for a button bar is for grouping a set of related buttons together, which gives them a common look and navigation, and handling the logic for the change event in a single place.
-				
-				&#xd; &#xd;The ButtonBar control creates Button controls based on the value of its dataProvider property. Use methods such as addItem() and removeItem() to manipulate the dataProvider property to add and remove data items. The ButtonBar control automatically adds or removes the necessary children based on changes to the dataProvider property.
-				
-				&#xd; &#xd;To use this component in a list-based component, such as a List or DataGrid, create an item renderer. For information about creating an item renderer, see Custom Spark item renderers.
-				
-				&#xd; &#xd;For non-mobile projects, you can use the ButtonBar control to set the active child of a ViewStack container, as the following example shows:
-				
-				&#xd; &#xd;Note: The Spark list-based controls (the Spark ListBase class and its subclasses such as ButtonBar, ComboBox, DropDownList, List, and TabBar) do not support the BasicLayout class as the value of the layout property. Do not use BasicLayout with the Spark list-based controls."/>
-	
+	<s:VGroup width="100%" height="100%" includeIn="DemoState" horizontalAlign="center" verticalAlign="middle">
+		<s:ButtonBar id="buttonbar" change="buttonbarHandler(event)">
+			<s:ArrayList>
+				<fx:Object label="Button 1"/>
+				<fx:Object label="Button 2"/>
+				<fx:Object label="Button 3"/>
+			</s:ArrayList>
+		</s:ButtonBar>
+		<s:Spacer height="10"/>
+		<s:Label id="label"  horizontalCenter="0" textAlign="center"/>
+	</s:VGroup>	
+	<s:TextArea includeIn="InfoState" selectable="false"  left="10" right="10" top="10" bottom="10" editable="false" text="The ButtonBar control defines a horizontal group of logically related buttons with a common look and navigation.
+				&#xd; &#xd;The typical use for a button bar is for grouping a set of related buttons together, which gives them a common look and navigation, and handling the logic for the change event in a single place.				
+				&#xd; &#xd;The ButtonBar control creates Button controls based on the value of its dataProvider property. Use methods such as addItem() and removeItem() to manipulate the dataProvider property to add and remove data items. The ButtonBar control automatically adds or removes the necessary children based on changes to the dataProvider property.				
+				&#xd; &#xd;To use this component in a list-based component, such as a List or DataGrid, create an item renderer. For information about creating an item renderer, see Custom Spark item renderers.			
+				&#xd; &#xd;For non-mobile projects, you can use the ButtonBar control to set the active child of a ViewStack container, as the following example shows:				
+				&#xd; &#xd;Note: The Spark list-based controls (the Spark ListBase class and its subclasses such as ButtonBar, ComboBox, DropDownList, List, and TabBar) do not support the BasicLayout class as the value of the layout property. Do not use BasicLayout with the Spark list-based controls."/>	
 	<s:actionContent>
 		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
 	</s:actionContent>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/UIViews/CalloutButtonView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/UIViews/CalloutButtonView.mxml b/tourdeflexmobile/src/UIViews/CalloutButtonView.mxml
index eec4a8c..61e52dc 100644
--- a/tourdeflexmobile/src/UIViews/CalloutButtonView.mxml
+++ b/tourdeflexmobile/src/UIViews/CalloutButtonView.mxml
@@ -18,55 +18,75 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="CalloutButton">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="CalloutButton">
 	
 	<fx:Script>
 		<![CDATA[
-			import spark.skins.mobile.TextAreaSkin;
+			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				if(currentState == "DemoState"){
+				if(currentState == "DemoState")
+				{
 					currentState = "InfoState";				
-				}else if(currentState == "InfoState"){
+				}
+				else if(currentState == "InfoState")
+				{
 					currentState = "DemoState";
 				}
 			}
+			
 		]]>
-	</fx:Script>
-	
+	</fx:Script>	
 	<s:states>
 		<s:State name="DemoState"/>
 		<s:State name="InfoState"/>
-	</s:states>
-	
+	</s:states>	
 	<fx:Declarations>
-		<s:MultiDPIBitmapSource id="aboutIcon" source160dpi="@Embed('assets/icons/160/about.png')" source240dpi="@Embed('assets/icons/240/about.png')" source320dpi="@Embed('assets/icons/320/about.png')"/>
-		<s:MultiDPIBitmapSource id="demoIcon" source160dpi="@Embed('assets/icons/160/dock.png')" source240dpi="@Embed('assets/icons/240/dock.png')" source320dpi="@Embed('assets/icons/320/dock.png')"/>
+		<s:MultiDPIBitmapSource id="aboutIcon" 
+								source160dpi="@Embed('assets/icons/160/about.png')" 
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')" 
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource id="demoIcon" 
+								source160dpi="@Embed('assets/icons/160/dock.png')" 
+								source240dpi="@Embed('assets/icons/240/dock.png')" 
+								source320dpi="@Embed('assets/icons/320/dock.png')" 
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
 	</fx:Declarations>
-	
-	<s:CalloutButton label="CalloutButton" horizontalCenter="0" y="10">
-		<s:List>
-			<s:ArrayList>
-				<fx:Object label="Item 1"/>
-				<fx:Object label="Item 2"/>
-				<fx:Object label="Item 3"/>
-				<fx:Object label="Item 4"/>
-				<fx:Object label="Item 5"/>
-			</s:ArrayList>
-		</s:List>
-	</s:CalloutButton>
-	
-	<s:TextArea includeIn="InfoState" skinClass="spark.skins.mobile.TextAreaSkin" left="10" right="10" top="10" bottom="10" editable="false" text="The CalloutButton control is a drop down component that defines a button to open and close a Callout container. The CalloutButton specifies the layout and child components of the Callout container.
-				
-				&#xd; &#xd;The CalloutButton control uses the spark.components.supportClasses.DropDownController class to manage the Callout container. You can access the DropDownController by using the protected CalloutButton.dropDownController property.
-				
-				&#xd; &#xd;When the callout is open:
-				
+	<s:VGroup includeIn="DemoState" width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
+		<s:CalloutButton label="Callout List" horizontalCenter="0">
+			<s:List>
+				<s:ArrayList>
+					<fx:Object label="Item 1"/>
+					<fx:Object label="Item 2"/>
+					<fx:Object label="Item 3"/>
+					<fx:Object label="Item 4"/>
+					<fx:Object label="Item 5"/>
+				</s:ArrayList>
+			</s:List>
+		</s:CalloutButton>	
+		<s:Spacer height="10"/>
+		<s:CalloutButton label="Callout Spinner" horizontalCenter="0">
+			<s:DateSpinner displayMode="dateAndTime" id="spinnerDate"/>
+		</s:CalloutButton>
+		<s:Spacer height="10"/>
+		<s:CalloutButton label="Callout Check Boxes" horizontalCenter="0" >
+			<s:VGroup includeIn="DemoState" horizontalAlign="center" width="100%" height="100%" 
+					  paddingLeft="5" paddingRight="10" paddingTop="5" paddingBottom="5">
+				<s:CheckBox label="CheckBox 1" />
+				<s:CheckBox label="CheckBox 2" />
+				<s:CheckBox label="CheckBox 3" />
+			</s:VGroup>
+		</s:CalloutButton>
+	</s:VGroup>
+	<s:TextArea includeIn="InfoState" selectable="false" left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The CalloutButton control is a drop down component that defines a button to open and close a Callout container. The CalloutButton specifies the layout and child components of the Callout container.				
+				&#xd; &#xd;The CalloutButton control uses the spark.components.supportClasses.DropDownController class to manage the Callout container. You can access the DropDownController by using the protected CalloutButton.dropDownController property.				
+				&#xd; &#xd;When the callout is open:				
 				&#xd; &#xd;Clicking the button closes the callout
-				&#xd; &#xd;Clicking outside of the callout closes the callout."/>
-	
+				&#xd; &#xd;Clicking outside of the callout closes the callout."/>	
 	<s:actionContent>
 		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
-	</s:actionContent>
-	
+	</s:actionContent>	
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/UIViews/CheckboxView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/UIViews/CheckboxView.mxml b/tourdeflexmobile/src/UIViews/CheckboxView.mxml
index ff9dbc6..ed8a18a 100644
--- a/tourdeflexmobile/src/UIViews/CheckboxView.mxml
+++ b/tourdeflexmobile/src/UIViews/CheckboxView.mxml
@@ -18,11 +18,12 @@ limitations under the License.
 
 -->
 <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
-		xmlns:s="library://ns.adobe.com/flex/spark" title="CheckBox">
+		xmlns:s="library://ns.adobe.com/flex/spark" 
+		title="CheckBox">
 	
 	<fx:Script>
 		<![CDATA[
-			import spark.skins.mobile.TextAreaSkin;
+			
 			protected function checkboxHandler(event:Event):void
 			{
 				label.text = event.target.label + " toggled: " + event.target.selected as String;
@@ -30,40 +31,45 @@ limitations under the License.
 			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				if(currentState == "DemoState"){
+				if(currentState == "DemoState")
+				{
 					currentState = "InfoState";				
-				}else if(currentState == "InfoState"){
+				}
+				else if(currentState == "InfoState")
+				{
 					currentState = "DemoState";
 				}
 			}
 		]]>
-	</fx:Script>
-	
+	</fx:Script>	
 	<s:states>
 		<s:State name="DemoState"/>
 		<s:State name="InfoState"/>
-	</s:states>
-	
+	</s:states>	
 	<fx:Declarations>
-		<s:MultiDPIBitmapSource id="aboutIcon" source160dpi="@Embed('assets/icons/160/about.png')" source240dpi="@Embed('assets/icons/240/about.png')" source320dpi="@Embed('assets/icons/320/about.png')"/>
-		<s:MultiDPIBitmapSource id="demoIcon" source160dpi="@Embed('assets/icons/160/dock.png')" source240dpi="@Embed('assets/icons/240/dock.png')" source320dpi="@Embed('assets/icons/320/dock.png')"/>
-	</fx:Declarations>
-	
-	<s:VGroup includeIn="DemoState" horizontalCenter="0" y="20">
+		<s:MultiDPIBitmapSource id="aboutIcon" 
+								source160dpi="@Embed('assets/icons/160/about.png')" 
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')" 
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource id="demoIcon" 
+								source160dpi="@Embed('assets/icons/160/dock.png')" 
+								source240dpi="@Embed('assets/icons/240/dock.png')" 
+								source320dpi="@Embed('assets/icons/320/dock.png')" 
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>	
+	<s:VGroup includeIn="DemoState" horizontalAlign="center" width="100%" height="100%" verticalAlign="middle">
 		<s:CheckBox change="checkboxHandler(event)" label="CheckBox 1" />
 		<s:CheckBox change="checkboxHandler(event)" label="CheckBox 2" />
 		<s:CheckBox change="checkboxHandler(event)" label="CheckBox 3" />
-	</s:VGroup>
-	
-	<s:Label includeIn="DemoState" id="label" horizontalCenter="0" bottom="20" textAlign="center"/>
-	
-	<s:TextArea includeIn="InfoState" skinClass="spark.skins.mobile.TextAreaSkin" left="10" right="10" top="10" bottom="10" editable="false" text="The CheckBox component consists of an optional label and a small box that can contain a check mark or not.
-				&#xd; &#xd;When a user clicks a CheckBox component or its associated text, the CheckBox component sets its selected property to true for checked, and to false for unchecked.
-				
+		<s:Spacer height="10"/>
+		<s:Label id="label" horizontalCenter="0" bottom="20" textAlign="center"/>
+	</s:VGroup>	
+	<s:TextArea includeIn="InfoState" selectable="false" left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The CheckBox component consists of an optional label and a small box that can contain a check mark or not.
+				&#xd; &#xd;When a user clicks a CheckBox component or its associated text, the CheckBox component sets its selected property to true for checked, and to false for unchecked.		
 				&#xd; &#xd;To use this component in a list-based component, such as a List or DataGrid, create an item renderer. For information about creating an item renderer, see Custom Spark item renderers."/>
-	
 	<s:actionContent>
 		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
-	</s:actionContent>
-	
+	</s:actionContent>	
 </s:View>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/UIViews/DateSpinnerView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/UIViews/DateSpinnerView.mxml b/tourdeflexmobile/src/UIViews/DateSpinnerView.mxml
index 0cb738f..c3e0cde 100644
--- a/tourdeflexmobile/src/UIViews/DateSpinnerView.mxml
+++ b/tourdeflexmobile/src/UIViews/DateSpinnerView.mxml
@@ -21,38 +21,48 @@ limitations under the License.
 		xmlns:s="library://ns.adobe.com/flex/spark" title="DateSpinnerView">
 	<fx:Script>
 		<![CDATA[
-			import spark.skins.mobile.TextAreaSkin;
+			
 			
 			protected function buttonHandler(event:MouseEvent):void
 			{
-				if(currentState == "DemoState"){
+				if(currentState == "DemoState")
+				{
 					currentState = "InfoState";				
-				}else if(currentState == "InfoState"){
+				}
+				else if(currentState == "InfoState")
+				{
 					currentState = "DemoState";
 				}
 			}
 		]]>
-	</fx:Script>
-	
+	</fx:Script>	
 	<s:states>
 		<s:State name="DemoState"/>
 		<s:State name="InfoState"/>
-	</s:states>
-	
+	</s:states>	
 	<fx:Declarations>
-		<s:MultiDPIBitmapSource id="aboutIcon" source160dpi="@Embed('assets/icons/160/about.png')" source240dpi="@Embed('assets/icons/240/about.png')" source320dpi="@Embed('assets/icons/320/about.png')"/>
-		<s:MultiDPIBitmapSource id="demoIcon" source160dpi="@Embed('assets/icons/160/dock.png')" source240dpi="@Embed('assets/icons/240/dock.png')" source320dpi="@Embed('assets/icons/320/dock.png')"/>
+		<s:MultiDPIBitmapSource id="aboutIcon" 
+								source160dpi="@Embed('assets/icons/160/about.png')" 
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')" 
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource id="demoIcon" 
+								source160dpi="@Embed('assets/icons/160/dock.png')" 
+								source240dpi="@Embed('assets/icons/240/dock.png')" 
+								source320dpi="@Embed('assets/icons/320/dock.png')" 
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+		<s:DateTimeFormatter dateStyle="medium" timeStyle="medium" id="dateTimeFormatter"/>
 	</fx:Declarations>
-	
-	<s:DateSpinner includeIn="DemoState" displayMode="dateAndTime" verticalCenter="0" horizontalCenter="0"/>
-	
-	<s:TextArea includeIn="InfoState" skinClass="spark.skins.mobile.TextAreaSkin" left="10" right="10" top="10" bottom="10" editable="false" text="The DateSpinner control presents an interface for picking a particular date or time.
-				&#xd;&#xd;The DateSpinner control can display the date, the time, or the date and time, based on the value of the displayMode property.
-				
-				&#xd;&#xd;The UI for the control is made up of a series of SpinnerList controls wrapped inside a SpinnerListContainer that show the currently-selected date. Through touch or mouse interaction, users can adjust the selected date.
-				
-				&#xd;&#xd;The DateSpinnerSkin only defines some sizing properties. To change the appearance of the DateSpinner control, you typically reskin the underlying SpinnerListSkin or SpinnerListContainerSkin."/>
-	
+	<s:VGroup includeIn="DemoState" horizontalAlign="center" verticalAlign="middle" width="100%" height="100%">
+		<s:DateSpinner displayMode="dateAndTime" id="spinnerDate"/>
+		<s:Spacer height="10"/>
+		<s:Label id="label" textAlign="center" text="{dateTimeFormatter.format(spinnerDate.selectedDate)}"/>
+	</s:VGroup>	
+	<s:TextArea includeIn="InfoState" selectable="false" left="10" right="10" top="10" bottom="10" editable="false" borderVisible="false" 
+				text="The DateSpinner control presents an interface for picking a particular date or time.
+				&#xd;&#xd;The DateSpinner control can display the date, the time, or the date and time, based on the value of the displayMode property.				
+				&#xd;&#xd;The UI for the control is made up of a series of SpinnerList controls wrapped inside a SpinnerListContainer that show the currently-selected date. Through touch or mouse interaction, users can adjust the selected date.			
+				&#xd;&#xd;The DateSpinnerSkin only defines some sizing properties. To change the appearance of the DateSpinner control, you typically reskin the underlying SpinnerListSkin or SpinnerListContainerSkin."/>	
 	<s:actionContent>
 		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
 	</s:actionContent>

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/1f0cce99/tourdeflexmobile/src/UIViews/HscrubberView.mxml
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/UIViews/HscrubberView.mxml b/tourdeflexmobile/src/UIViews/HscrubberView.mxml
new file mode 100644
index 0000000..96d605f
--- /dev/null
+++ b/tourdeflexmobile/src/UIViews/HscrubberView.mxml
@@ -0,0 +1,71 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+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.
+
+-->
+<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
+		xmlns:s="library://ns.adobe.com/flex/spark" title="HSlider">
+	<fx:Script>
+		<![CDATA[
+			
+			protected function buttonHandler(event:MouseEvent):void
+			{
+				if(currentState == "DemoState")
+				{
+					currentState = "InfoState";				
+				}
+				else if(currentState == "InfoState")
+				{
+					currentState = "DemoState";
+				}
+			}
+			
+			private function submitText():void
+			{
+				label.text = HSlider.value.toString();
+			}
+			
+		]]>
+	</fx:Script>	
+	<s:states>
+		<s:State name="DemoState"/>
+		<s:State name="InfoState"/>
+	</s:states>	
+	<fx:Declarations>
+		<s:MultiDPIBitmapSource id="aboutIcon" 
+								source160dpi="@Embed('assets/icons/160/about.png')" 
+								source240dpi="@Embed('assets/icons/240/about.png')" 
+								source320dpi="@Embed('assets/icons/320/about.png')" 
+								source480dpi="@Embed('assets/icons/480/about.png')"/>
+		<s:MultiDPIBitmapSource id="demoIcon" 
+								source160dpi="@Embed('assets/icons/160/dock.png')" 
+								source240dpi="@Embed('assets/icons/240/dock.png')" 
+								source320dpi="@Embed('assets/icons/320/dock.png')" 
+								source480dpi="@Embed('assets/icons/480/dock.png')"/>
+	</fx:Declarations>
+	<s:VGroup includeIn="DemoState" horizontalAlign="center" verticalAlign="middle" width="100%" height="100%">
+		<s:HSlider id="HSlider" left="20" right="20" minimum="0" maximum="100"/>		
+		<s:Spacer height="10"/>
+		<s:Label id="label" horizontalCenter="0" textAlign="center" text="{HSlider.value.toString()}"/>
+	</s:VGroup>	
+	<s:TextArea includeIn="InfoState" selectable="false" left="10" right="10" top="10" bottom="10" editable="false" 
+				text="The HSlider (horizontal slider) control lets users select a value by moving a slider thumb between the end points of the slider track. The HSlider control has a horizontal direction. The slider track stretches from left to right. The current value of the slider is determined by the relative location of the thumb between the end points of the slider, corresponding to the slider's minimum and maximum values. 				
+				&#xd; &#xd;The slider can allow a continuous range of values between its minimum and maximum values or it can be restricted to values at specific intervals between the minimum and maximum value. The slider can contain a data tip to show its current value."/>
+	<s:actionContent>
+		<s:Button click="buttonHandler(event)" icon.DemoState="{aboutIcon}" icon.InfoState="{demoIcon}"/>
+	</s:actionContent>
+</s:View>