flex-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From build...@apache.org
Subject svn commit: r920222 [5/9] - in /websites/staging/flex/trunk: cgi-bin/ content/ content/tourdeflex/ content/tourdeflex/mx/ content/tourdeflex/mx/charts/ content/tourdeflex/mx/containers/ content/tourdeflex/mx/containers/assets/ content/tourdeflex/mx/con...
Date Sat, 23 Aug 2014 08:50:32 GMT
Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/DropShadowGraphicExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/DropShadowGraphicExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/DropShadowGraphicExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EclipseExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EclipseExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EclipseExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EclipseExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EllipseTransformExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EllipseTransformExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EllipseTransformExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/EllipseTransformExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LineExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LineExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LineExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LineExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LinearGradientsSpreadMethodExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LinearGradientsSpreadMethodExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LinearGradientsSpreadMethodExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/LinearGradientsSpreadMethodExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/OrangeCrayonStar.fxg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/OrangeCrayonStar.fxg
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RectExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RectExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RectExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RectExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RichTextExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RichTextExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RichTextExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/RichTextExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/StaticFXGExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/StaticFXGExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/StaticFXGExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/StaticFXGExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/assets/ApacheFlexIcon.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/assets/ApacheFlexIcon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/assets/ApacheFlexLogo.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/assets/ApacheFlexLogo.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/skins/TDFPanelSkin.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/fxg/skins/TDFPanelSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollator2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollator2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollator2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollator2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollatorExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollatorExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollatorExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCollatorExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatter2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatter2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatter2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatter2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatterExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatterExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatterExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyFormatterExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidator2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidator2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidator2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidator2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidatorExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidatorExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidatorExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkCurrencyValidatorExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatter2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatter2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatter2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatter2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatterExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatterExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatterExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkDateTimeFormatterExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkFormatterExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkFormatterExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkFormatterExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkFormatterExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatter2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatter2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatter2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatter2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatterExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatterExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatterExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberFormatterExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidator2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidator2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidator2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidator2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidatorExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidatorExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidatorExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkNumberValidatorExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortField2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortField2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortField2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortField2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortFieldExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortFieldExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortFieldExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkSortandSortFieldExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkStringToolsExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkStringToolsExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkStringToolsExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/i18n/SparkStringToolsExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/Item.as
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/Item.as (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/Item.as Sat Aug 23 08:50:20 2014
@@ -0,0 +1,62 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+    [Bindable]
+    public class Item
+    {
+        private var _name:String;
+        private var _photo:String;
+		private var _price:String;
+        
+        public function Item()
+        {
+        }
+        
+        public function get name():String
+        {
+            return _name;
+        }
+		
+		public function set name(name:String):void
+		{
+			_name = name;
+		}
+
+		public function get photo():String
+        {
+            return _photo;
+        }
+		
+		public function set photo(photo:String):void
+		{
+			_photo = photo;
+		}
+        
+		public function get price():String
+		{
+			return _price;
+		}
+		public function set price(price:String):void
+		{
+			_price = price;
+		}
+
+    }
+}
\ No newline at end of file

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer1Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer1Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer1Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer1Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ItemRenderer2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ListItemRendererExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ListItemRendererExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ListItemRendererExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/ListItemRendererExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/MyListItemRenderer.mxml
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/MyListItemRenderer.mxml (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/MyListItemRenderer.mxml Sat Aug 23 08:50:20 2014
@@ -0,0 +1,39 @@
+<!--
+
+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:ItemRenderer
+	xmlns:fx="http://ns.adobe.com/mxml/2009"
+	xmlns:s="library://ns.adobe.com/flex/spark"
+	xmlns:mx="library://ns.adobe.com/flex/mx">
+	
+	<s:states>
+		<s:State name="normal"/>
+		<s:State name="hovered"/>
+		<s:State name="selected" />
+	</s:states>
+	
+	<s:layout>
+		<s:VerticalLayout/>
+	</s:layout>
+	
+	<s:HGroup verticalAlign="middle" paddingTop="0" paddingBottom="0">
+		<mx:Image source="{data.photo}" width="50" height="40" alpha.hovered=".5"/>
+		<s:Label text="{data.name}" color.hovered="0x1313cd" color.selected="0x000000" verticalAlign="bottom"/>
+	</s:HGroup>
+	
+</s:ItemRenderer>
\ No newline at end of file

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/1.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/1.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/2.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/2.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/3.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/3.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/4.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/4.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/5.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/5.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/6.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/6.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/7.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/7.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/8.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/8.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/9.jpg
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/9.jpg
------------------------------------------------------------------------------
    svn:mime-type = image/jpeg

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/ApacheFlexIcon.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/assets/ApacheFlexIcon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/data/list.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/data/list.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/renderers/ImageRenderer1.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/renderers/ImageRenderer1.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/renderers/ImageRenderer2.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/renderers/ImageRenderer2.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/skins/TDFPanelSkin.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/itemRenderers/skins/TDFPanelSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutAnimatedExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutAnimatedExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutAnimatedExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutAnimatedExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlickrWheelExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlickrWheelExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlickrWheelExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlickrWheelExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlowExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlowExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlowExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutFlowExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutHBaselineExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutHBaselineExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutHBaselineExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/CustomLayoutHBaselineExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/FlickrThumbnail.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/FlickrThumbnail.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/FlowLayout1.as
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/layouts/FlowLayout1.as (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/layouts/FlowLayout1.as Sat Aug 23 08:50:20 2014
@@ -0,0 +1,195 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+import mx.core.ILayoutElement;
+
+import spark.components.supportClasses.GroupBase;
+import spark.layouts.supportClasses.LayoutBase;
+
+public class FlowLayout1 extends LayoutBase
+{
+    
+    //---------------------------------------------------------------
+    //
+    //  Class properties
+    //
+    //---------------------------------------------------------------
+    
+    //---------------------------------------------------------------
+    //  horizontalGap
+    //---------------------------------------------------------------
+
+    private var _horizontalGap:Number = 10;
+
+    public function set horizontalGap(value:Number):void
+    {
+        _horizontalGap = value;
+        
+        // We must invalidate the layout
+        var layoutTarget:GroupBase = target;
+        if (layoutTarget)
+            layoutTarget.invalidateDisplayList();
+    }
+    
+    //---------------------------------------------------------------
+    //  verticalAlign
+    //---------------------------------------------------------------
+
+    private var _verticalAlign:String = "bottom";
+    
+    public function set verticalAlign(value:String):void
+    {
+        _verticalAlign = value;
+        
+        // We must invalidate the layout
+        var layoutTarget:GroupBase = target;
+        if (layoutTarget)
+            layoutTarget.invalidateDisplayList();
+    }
+    
+	//---------------------------------------------------------------
+	//  horizontalAlign
+	//---------------------------------------------------------------
+	
+	private var _horizontalAlign:String = "left"; // center, right
+	
+	public function set horizontalAlign(value:String):void
+	{
+		_horizontalAlign = value;
+		
+		// We must invalidate the layout
+		var layoutTarget:GroupBase = target;
+		if (layoutTarget)
+			layoutTarget.invalidateDisplayList();
+	}
+	
+    //---------------------------------------------------------------
+    //
+    //  Class methods
+    //
+    //---------------------------------------------------------------
+    
+    override public function updateDisplayList(containerWidth:Number,
+                                               containerHeight:Number):void
+    {
+        var element:ILayoutElement;
+        var layoutTarget:GroupBase = target;
+        var count:int = layoutTarget.numElements;
+        var hGap:Number = _horizontalGap;
+
+        // The position for the current element
+        var x:Number = 0;
+        var y:Number = 0;
+        var elementWidth:Number;
+        var elementHeight:Number;
+
+        var vAlign:Number = 0;
+        switch (_verticalAlign)
+        {
+            case "middle" : vAlign = 0.5; break;
+            case "bottom" : vAlign = 1; break;
+        }
+
+        // Keep track of per-row height, maximum row width
+        var maxRowWidth:Number = 0;
+
+        // loop through the elements
+        // while we can start a new row
+        var rowStart:int = 0;
+        while (rowStart < count)
+        {
+            // The row always contains the start element
+            element = useVirtualLayout ? layoutTarget.getVirtualElementAt(rowStart) :
+										 layoutTarget.getElementAt(rowStart);
+									     
+            var rowWidth:Number = element.getPreferredBoundsWidth();
+            var rowHeight:Number =  element.getPreferredBoundsHeight();
+            
+            // Find the end of the current row
+            var rowEnd:int = rowStart;
+            while (rowEnd + 1 < count)
+            {
+                element = useVirtualLayout ? layoutTarget.getVirtualElementAt(rowEnd + 1) :
+										     layoutTarget.getElementAt(rowEnd + 1);
+                
+                // Since we haven't resized the element just yet, get its preferred size
+                elementWidth = element.getPreferredBoundsWidth();
+                elementHeight = element.getPreferredBoundsHeight();
+
+                // Can we add one more element to this row?
+                if (rowWidth + hGap + elementWidth > containerWidth)
+                    break;
+
+                rowWidth += hGap + elementWidth;
+                rowHeight = Math.max(rowHeight, elementHeight);
+                rowEnd++;
+            }
+            
+			x = 0;
+			switch (_horizontalAlign)
+			{
+				case "center" : x = Math.round(containerWidth - rowWidth) / 2; break;
+				case "right" : x = containerWidth - rowWidth;
+			}
+			
+            // Keep track of the maximum row width so that we can
+            // set the correct contentSize
+            maxRowWidth = Math.max(maxRowWidth, x + rowWidth);
+
+            // Layout all the elements within the row
+            for (var i:int = rowStart; i <= rowEnd; i++) 
+            {
+                element = useVirtualLayout ? layoutTarget.getVirtualElementAt(i) : 
+											 layoutTarget.getElementAt(i);
+
+                // Resize the element to its preferred size by passing
+                // NaN for the width and height constraints
+                element.setLayoutBoundsSize(NaN, NaN);
+
+                // Find out the element's dimensions sizes.
+                // We do this after the element has been already resized
+                // to its preferred size.
+                elementWidth = element.getLayoutBoundsWidth();
+                elementHeight = element.getLayoutBoundsHeight();
+
+                // Calculate the position within the row
+                var elementY:Number = Math.round((rowHeight - elementHeight) * vAlign);
+
+                // Position the element
+                element.setLayoutBoundsPosition(x, y + elementY);
+
+                x += hGap + elementWidth;
+            }
+
+            // Next row will start with the first element after the current row's end
+            rowStart = rowEnd + 1;
+
+            // Update the position to the beginning of the row
+            x = 0;
+            y += rowHeight;
+        }
+
+        // Set the content size which determines the scrolling limits
+        // and is used by the Scroller to calculate whether to show up
+        // the scrollbars when the the scroll policy is set to "auto"
+        layoutTarget.setContentSize(maxRowWidth, y);
+    }
+}
+}
\ No newline at end of file

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/HBaselineLayout.as
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/layouts/HBaselineLayout.as (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/layouts/HBaselineLayout.as Sat Aug 23 08:50:20 2014
@@ -0,0 +1,199 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 {
+
+import mx.core.ILayoutElement;
+import mx.events.PropertyChangeEvent;
+import mx.formatters.NumberBase;
+
+import spark.components.supportClasses.GroupBase;
+import spark.layouts.HorizontalLayout;
+
+public class HBaselineLayout extends HorizontalLayout
+{
+	public function HBaselineLayout()
+	{
+		super();
+	}
+
+	//----------------------------------
+	//  globalBaseline
+	//----------------------------------
+	
+	[Inspectable(category="General")]
+
+	private var _globalBaseline:Number = NaN;
+	public function get globalBaseline():Number
+	{
+		return _globalBaseline;
+	}
+
+	public function set globalBaseline(value:Number):void
+	{
+		_globalBaseline = value;
+		var target:GroupBase = this.target;
+		if (target)
+		{
+			target.invalidateSize();
+			target.invalidateDisplayList();
+		}
+	}
+
+	//----------------------------------
+	//  actualBaseline
+	//----------------------------------
+	
+	private var _actualBaseline:Number;
+	
+	[Bindable("propertyChange")]
+	[Inspectable(category="General")]
+	
+	public function get actualBaseline():Number
+	{
+		return _actualBaseline;
+	}
+	
+	private function setActualBaseline(value:Number):void
+	{
+		if (value == _actualBaseline)
+			return;
+
+		var oldValue:Number = _actualBaseline;
+		_actualBaseline = value;
+		dispatchEvent(PropertyChangeEvent.createUpdateEvent(this, "actualBaseline", oldValue, value));
+	}
+	
+	//----------------------------------
+	//  verticalAlign
+	//----------------------------------
+	
+	[Inspectable(category="General", enumeration="top,bottom,middle,justify,contentJustify,baseline", defaultValue="top")]
+	override public function get verticalAlign():String
+	{
+		return super.verticalAlign;		
+	}
+
+	/**
+	 *  @private 
+	 */
+	override public function measure():void
+	{
+		super.measure();
+		
+		var target:GroupBase = this.target;
+		if (!target || verticalAlign != "baseline")
+			return;
+		
+		measureBaseline(true /*usePreferredSize*/);
+		if (!isNaN(_globalBaseline))
+			measuredBaselineTop = _globalBaseline;
+		
+		// The measured height is the sum of the space above and below the baseline
+		if (isNaN(paddingTop))
+			measuredBaselineTop += paddingTop;
+		if (isNaN(paddingBottom))
+			measuredBaselineBottom += paddingBottom;
+		target.measuredHeight = Math.round(measuredBaselineTop + measuredBaselineBottom);
+	}
+	
+	/**
+	 *  @private 
+	 */
+	override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+	{
+		super.updateDisplayList(unscaledWidth, unscaledHeight);
+		
+		var target:GroupBase = this.target;
+		if (!target || verticalAlign != "baseline")
+			return;
+
+		measureBaseline(false /*usePreferredSize*/);
+		if (!isNaN(_globalBaseline))
+			measuredBaselineTop = _globalBaseline;
+
+		if (isNaN(paddingTop))
+			measuredBaselineTop += paddingTop;
+		
+		// Adjust the position of the elements
+		var contentHeight:Number = 0;
+		var count:int = target.numElements;
+		for (var i:int = 0; i < count; i++)
+		{
+			var element:ILayoutElement = target.getElementAt(i);
+			if (!element || !element.includeInLayout)
+				continue;
+			
+			var elementBaseline:Number = element.baseline as Number;
+			if (isNaN(elementBaseline))
+				elementBaseline = 0;
+
+			var baselinePosition:Number = element.baselinePosition;
+			var y:Number = measuredBaselineTop + (elementBaseline - baselinePosition);
+			element.setLayoutBoundsPosition(element.getLayoutBoundsX(), y);
+			contentHeight = Math.max(contentHeight, element.getLayoutBoundsHeight() + y);
+		}
+
+		// Adjust the content height
+		if (isNaN(paddingBottom))
+			contentHeight += paddingBottom;
+		target.setContentSize(target.contentWidth, contentHeight);
+		
+		// Update the baseline
+		setActualBaseline(measuredBaselineTop);
+	}
+
+	private var measuredBaselineTop:Number = 0;			// How much space is needed above the baseline to fit all the elements
+	private var measuredBaselineBottom:Number = 0;		// How much space is needed below the baseline to fit all the elements
+	
+	/**
+	 *  @private 
+	 */
+	private function measureBaseline(usePreferredSize:Boolean):void
+	{
+		var elementBaseline:Number = 0; 			// The current element's explicit baseline constraint
+		var elementBaselineTop:Number = 0;			// The portiono of the current element that's above the baseline
+		var elementBaselineBottom:Number = 0;		// The portion of the current element that's below the baseline
+
+		measuredBaselineTop = 0;
+		measuredBaselineBottom = 0;
+
+		var count:int = target.numElements;
+		for (var i:int = 0; i < count; i++)
+		{
+			var element:ILayoutElement = target.getElementAt(i);
+			if (!element || !element.includeInLayout)
+				continue;
+			
+			var elementHeight:Number = usePreferredSize ? element.getPreferredBoundsHeight() :
+														  element.getLayoutBoundsHeight();
+			elementBaseline = element.baseline as Number;
+			if (isNaN(elementBaseline))
+				elementBaseline = 0;
+			
+			var baselinePosition:Number = element.baselinePosition;
+			
+			elementBaselineTop = baselinePosition - elementBaseline;
+			elementBaselineBottom = elementHeight - elementBaselineTop;
+			
+			measuredBaselineTop = Math.max(elementBaselineTop, measuredBaselineTop);
+			measuredBaselineBottom = Math.max(elementBaselineBottom, measuredBaselineBottom);
+		}
+	}
+}
+}
\ No newline at end of file

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/NumberInterpolatorWrapping.as
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/layouts/NumberInterpolatorWrapping.as (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/layouts/NumberInterpolatorWrapping.as Sat Aug 23 08:50:20 2014
@@ -0,0 +1,110 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+import spark.effects.interpolation.IInterpolator;
+    
+public class NumberInterpolatorWrapping implements IInterpolator
+{
+    private var _rangeBegin:Number;
+    private var _rangeEnd:Number;
+    public function NumberInterpolatorWrapping(rangeBegin:Number, rangeEnd:Number)
+    {
+        _rangeBegin = rangeBegin;
+        _rangeEnd = rangeEnd;
+    }
+        
+    /**
+     * Returns the type that an implementor can handle
+     */
+    public function get interpolatedType():Class
+    {
+        return Number;
+    }
+    
+    /**
+     * Given an elapsed fraction of an animation between 0 and 1,
+     * and start and end values, this function returns some value
+     * based on whatever interpolation the implementor chooses to
+     * provide.
+     */
+    public function interpolate(fraction:Number, startValue:Object, endValue:Object):Object
+    {
+        if (fraction == 0)
+            return startValue;
+        else if (fraction == 1)
+            return endValue;
+        var start:Number = Number(startValue);
+        var end:Number = Number(endValue);
+
+        if (Math.abs(end - start) < Math.abs(_rangeEnd - _rangeBegin) - Math.abs(end - start))
+        {
+            return start + fraction * (end - start);
+        }
+        else
+        {
+            var result:Number;
+            if (start < end)
+            {
+                result = start - fraction * (_rangeEnd - _rangeBegin - Math.abs(start - end));
+                if (result < _rangeBegin)
+                    result += _rangeEnd - _rangeBegin;
+                return result;
+            }
+            else
+            {
+                result = start + fraction * (_rangeEnd - _rangeBegin - Math.abs(start - end));
+                if (result > _rangeEnd)
+                    result -= _rangeEnd - _rangeBegin;
+                return result;
+            }
+        }        
+    }
+    
+    public function increment(baseValue:Object, incrementValue:Object):Object
+    {
+        var result:Number = Number(baseValue) + Number(incrementValue);
+        // This won't handle situations where we're adding more than
+        // the range itself, but since this will only be called when
+        // the user submits a 'byValue' that large, it seems unlikely
+        // at the very least
+        if (result > _rangeEnd)
+            result = _rangeBegin + (result - _rangeEnd);
+        return result;
+    }
+    
+    public function decrement(baseValue:Object, decrementValue:Object):Object
+    {
+        var result:Number = Number(baseValue) - Number(decrementValue);
+        // This won't handle situations where we're subtracting more than
+        // the range itself, but since this will only be called when
+        // the user submits a 'byValue' that large, it seems unlikely
+        // at the very least
+        if (result < _rangeBegin)
+            result = _rangeEnd + (_rangeBegin - result);
+        return result;
+    }
+    
+    public function getLength(startValue:Number, endValue:Number):Number
+    {
+        return Math.min( Math.abs(startValue - endValue), Math.abs(_rangeEnd - _rangeBegin - Math.abs(startValue - endValue)));
+    }   
+
+}
+}
\ No newline at end of file

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/WheelLayout.as
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/layouts/WheelLayout.as (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/layouts/WheelLayout.as Sat Aug 23 08:50:20 2014
@@ -0,0 +1,516 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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
+{
+
+import flash.geom.Matrix;
+import flash.geom.Matrix3D;
+import flash.geom.Point;
+import flash.geom.Rectangle;
+import flash.geom.Vector3D;
+
+import mx.core.ILayoutElement;
+import mx.core.IVisualElement;
+
+import spark.components.supportClasses.GroupBase;
+import spark.core.NavigationUnit;
+import spark.layouts.supportClasses.LayoutBase;
+
+public class WheelLayout extends LayoutBase
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Constructor
+    //
+    //--------------------------------------------------------------------------
+
+    public function WheelLayout()
+    {
+        super();
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  gap
+    //----------------------------------
+
+    private var _gap:Number = 0;
+
+    /**
+     *  The gap between the items
+     */
+    public function get gap():Number
+    {
+        return _gap;
+    }
+    
+    public function set gap(value:Number):void
+    {
+        _gap = value;
+        var layoutTarget:GroupBase = target;
+        if (layoutTarget)
+        {
+            layoutTarget.invalidateSize();
+            layoutTarget.invalidateDisplayList();
+        }
+    }
+    
+    //----------------------------------
+    //  axisAngle
+    //----------------------------------
+
+    /**
+     *  @private  
+     *  The total width of all items, including gap space.
+     */
+    private var _totalWidth:Number;
+
+    /**
+     *  @private  
+     *  Cache which item is currently in view, to facilitate scrollposition delta calculations
+     */
+    private var _centeredItemIndex:int = 0;
+    private var _centeredItemCircumferenceBegin:Number = 0;
+    private var _centeredItemCircumferenceEnd:Number = 0;
+    private var _centeredItemDegrees:Number = 0;
+
+    /**
+     *  The axis to tilt the 3D wheel 
+     */
+    private var _axis:Vector3D = new Vector3D(0, 1, 0.1);
+    
+    /**
+     *  The angle to tilt the axis of the wheel
+     */
+    public function set axisAngle(value:Number):void
+    {
+        _axis = new Vector3D(0, Math.cos(Math.PI * value /180), Math.sin(Math.PI * value /180));
+        var layoutTarget:GroupBase = target;
+        if (layoutTarget)
+        {
+            layoutTarget.invalidateSize();
+            layoutTarget.invalidateDisplayList();
+        }
+    }
+    
+    /**
+     *  @private 
+     *  Given the radius of the sphere, return the radius of the
+     *  projected sphere. Uses the projection matrix of the
+     *  layout target to calculate.
+     */    
+    private function projectSphere(radius:Number, radius1:Number):Number
+    {
+        var fl:Number = target.transform.perspectiveProjection.focalLength;
+        var alpha:Number = Math.asin( radius1 / (radius + fl) );
+        return fl * Math.tan(alpha) * 2;
+    }
+    
+    /**
+     *  @private
+     *  Given the totalWidth, maxHeight and maxHalfWidthDiagonal, calculate the bounds of the items
+     *  on screen.  Uses the projection matrix of the layout target to calculate. 
+     */
+    private function projectBounds(totalWidth:Number, maxWidth:Number, maxHeight:Number, maxHalfWidthDiagonal:Number):Point
+    {
+        // Use the the total width as a circumference of an imaginary circle which we will use to
+        // align the items in 3D:
+        var radius:Number = _totalWidth * 0.5 / Math.PI;
+        
+        // Now since we are going to arrange all the items along circle, middle of the item being the tangent point,
+        // we need to calculate the minimum bounding circle. It is easily calculated from the maximum width item:
+        var boundingRadius:Number = Math.sqrt(radius * radius + 0.25 * maxWidth * maxWidth);
+                                      
+        var projectedBoundsW:Number = _axis.z * _axis.z * (maxHalfWidthDiagonal + 2 * radius) + 
+                                      projectSphere(radius, boundingRadius ) * _axis.y * _axis.y;
+                                      
+        var projectedBoundsH:Number = Math.abs(_axis.z) * (maxHalfWidthDiagonal + 2 * radius) +
+                                      maxHeight * _axis.y * _axis.y;
+                                      
+        return new Point(projectedBoundsW + 10, projectedBoundsH + 10);
+    }
+
+    /**
+     *  @private 
+     *  Iterates through all the items, calculates the projected bounds on screen, updates _totalWidth member variable.
+     */    
+    private function calculateBounds():Point
+    {
+        // Calculate total width:
+        _totalWidth = 0;
+     
+        var maxHeight:Number = 0;
+        var maxWidth:Number = 0;
+        var maxD:Number = 0;
+   
+        // Add up all the widths
+        var iter:LayoutIterator = new LayoutIterator(target);
+        var el:ILayoutElement;
+        while (el = iter.nextElement())
+        {
+            var preferredWidth:Number = el.getPreferredBoundsWidth(false /*postTransform*/);
+            var preferredHeight:Number = el.getPreferredBoundsHeight(false /*postTransform*/);
+
+            // Add up item width
+            _totalWidth += preferredWidth;
+            
+            // Max up item size
+            maxWidth = Math.max(maxWidth, preferredWidth);
+            maxHeight = Math.max(maxHeight, preferredHeight);
+            
+            maxD = Math.max(maxD, Math.sqrt(preferredWidth * preferredWidth / 4 + 
+                                            preferredHeight * preferredHeight));    
+        }
+        
+        // Add up the gap
+        _totalWidth += gap * iter.numVisited;
+
+        // Project        
+        return projectBounds(_totalWidth, maxWidth, maxHeight, maxD);
+    }
+    
+    //--------------------------------------------------------------------------
+    //
+    //  Overridden methods: LayoutBase
+    //
+    //--------------------------------------------------------------------------
+    
+    /**
+     * @private
+     */
+    override public function set target(value:GroupBase):void
+    {
+        // Make sure that if layout is swapped out, we clean up
+        if (!value && target)
+        {
+            target.maintainProjectionCenter = false;
+
+            var iter:LayoutIterator = new LayoutIterator(target);
+            var el:ILayoutElement;
+            while (el = iter.nextElement())
+            {
+                el.setLayoutMatrix(new Matrix(), false /*triggerLayout*/);
+            }
+        }
+        
+        super.target = value;
+
+        // Make sure we turn on projection the first time the layout
+        // gets assigned to the group
+        if (target)
+            target.maintainProjectionCenter = true;
+    }
+    
+    override public function measure():void
+    {
+        var bounds:Point = calculateBounds();
+        
+        target.measuredWidth = bounds.x;
+        target.measuredHeight = bounds.y;
+    }
+    
+    override public function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+    {
+        // Get the bounds, this will also update _totalWidth
+        var bounds:Point = calculateBounds();
+
+        // Update the content size
+        target.setContentSize(_totalWidth + unscaledWidth, bounds.y); 
+        var radius:Number = _totalWidth * 0.5 / Math.PI;
+        var gap:Number = this.gap;
+        _centeredItemDegrees = Number.MAX_VALUE;
+        
+        var scrollPosition:Number = target.horizontalScrollPosition;
+        var totalWidthSoFar:Number = 0;
+        // Subtract the half width of the first element from totalWidthSoFar: 
+        var iter:LayoutIterator = new LayoutIterator(target);
+        var el:ILayoutElement = iter.nextElement();
+        if (!el)
+            return;
+        totalWidthSoFar -= el.getPreferredBoundsWidth(false /*postTransform*/) / 2;
+        
+        // Set the 3D Matrix for all the elements:
+        iter.reset();
+        while (el = iter.nextElement())
+        { 
+            // Size the item, no need to position it, since we'd set the computed matrix
+            // which defines the position.
+            el.setLayoutBoundsSize(NaN, NaN, false /*postTransform*/);
+            var elementWidth:Number = el.getLayoutBoundsWidth(false /*postTransform*/);
+            var elementHeight:Number = el.getLayoutBoundsHeight(false /*postTransform*/); 
+            var degrees:Number = 360 * (totalWidthSoFar + elementWidth/2 - scrollPosition) / _totalWidth; 
+
+            // Remember which item is centered, this is used during scrolling
+            var curDegrees:Number = degrees % 360;
+            if (Math.abs(curDegrees) < Math.abs(_centeredItemDegrees))
+            {
+                _centeredItemDegrees = curDegrees;
+                _centeredItemIndex = iter.curIndex;
+                _centeredItemCircumferenceBegin = totalWidthSoFar - gap;
+                _centeredItemCircumferenceEnd = totalWidthSoFar + elementWidth + gap;
+            }
+
+            // Calculate and set the 3D Matrix 
+            var m:Matrix3D = new Matrix3D();
+            m.appendTranslation(-elementWidth/2, -elementHeight/2 + radius * _axis.z, -radius * _axis.y );
+            m.appendRotation(-degrees, _axis);
+            m.appendTranslation(unscaledWidth/2, unscaledHeight/2, radius * _axis.y);
+            el.setLayoutMatrix3D(m, false /*triggerLayout*/);
+            
+            // Update the layer for a correct z-order
+            if (el is IVisualElement)
+                IVisualElement(el).depth = Math.abs( Math.floor(180 - Math.abs(degrees % 360)) );
+
+            // Move on to next item
+            totalWidthSoFar += elementWidth + gap;
+        }
+    }
+    
+    private function scrollPositionFromCenterToNext(next:Boolean):Number
+    {
+        var iter:LayoutIterator = new LayoutIterator(target, _centeredItemIndex);
+        var el:ILayoutElement = next ? iter.nextElementWrapped() : iter.prevElementWrapped();
+        if (!el)
+            return 0;
+        
+        var elementWidth:Number = el.getLayoutBoundsWidth(false /*postTransform*/);
+        
+        var value:Number; 
+        if (next)
+        {
+            if (_centeredItemDegrees > 0.1)
+                return (_centeredItemCircumferenceEnd + _centeredItemCircumferenceBegin) / 2;
+            
+            value = _centeredItemCircumferenceEnd + elementWidth/2;
+            if (value > _totalWidth)
+                value -= _totalWidth;
+        }
+        else
+        {
+            if (_centeredItemDegrees < -0.1)
+                return (_centeredItemCircumferenceEnd + _centeredItemCircumferenceBegin) / 2;
+
+            value = _centeredItemCircumferenceBegin - elementWidth/2;
+            if (value < 0)
+                value += _totalWidth;
+        }
+        return value;     
+    }
+    
+    override protected function scrollPositionChanged():void
+    {
+        if (target)
+            target.invalidateDisplayList();
+    }
+
+    override public function getHorizontalScrollPositionDelta(navigationUnit:uint):Number
+    {
+        var g:GroupBase = target;
+        if (!g || g.numElements == 0)
+            return 0;
+            
+        var value:Number;     
+
+        switch (navigationUnit)
+        {
+            case NavigationUnit.LEFT:
+            {
+                value = target.horizontalScrollPosition - 30;
+                if (value < 0)
+                    value += _totalWidth;
+                return value - target.horizontalScrollPosition;
+            }
+                
+            case NavigationUnit.RIGHT:
+            {
+                value = target.horizontalScrollPosition + 30;
+                if (value > _totalWidth)
+                    value -= _totalWidth;
+                return value - target.horizontalScrollPosition;
+            }
+                
+            case NavigationUnit.PAGE_LEFT:
+                return scrollPositionFromCenterToNext(false) - target.horizontalScrollPosition;
+                
+            case NavigationUnit.PAGE_RIGHT:
+                return scrollPositionFromCenterToNext(true) - target.horizontalScrollPosition;
+                
+            case NavigationUnit.HOME: 
+                return 0;
+                
+            case NavigationUnit.END: 
+                return _totalWidth;
+                
+            default:
+                return 0;
+        }       
+    }
+    
+    /**
+     *  @private
+     */ 
+    override public function getScrollPositionDeltaToElement(index:int):Point
+    {
+        var layoutTarget:GroupBase = target;
+        if (!layoutTarget)
+            return null;
+       
+        var gap:Number = this.gap;     
+        var totalWidthSoFar:Number = 0;
+        var iter:LayoutIterator = new LayoutIterator(layoutTarget);
+
+        var el:ILayoutElement = iter.nextElement();
+        if (!el)
+            return null;
+        totalWidthSoFar -= el.getLayoutBoundsWidth(false /*postTransform*/) / 2;
+
+        iter.reset();
+        while (null != (el = iter.nextElement()) && iter.curIndex <= index)
+        {    
+            var elementWidth:Number = el.getLayoutBoundsWidth(false /*postTransform*/);
+            totalWidthSoFar += gap + elementWidth;
+        }
+        return new Point(totalWidthSoFar - elementWidth / 2 -gap - layoutTarget.horizontalScrollPosition, 0);
+    }
+
+    /**
+     *  @private
+     */ 
+    override public function updateScrollRect(w:Number, h:Number):void
+    {
+        var g:GroupBase = target;
+        if (!g)
+            return;
+            
+        if (clipAndEnableScrolling)
+        {
+            // Since scroll position is reflected in our 3D calculations,
+            // always set the top-left of the srcollRect to (0,0).
+            g.scrollRect = new Rectangle(0, verticalScrollPosition, w, h);
+        }
+        else
+            g.scrollRect = null;
+    } 
+}
+}
+
+import mx.core.ILayoutElement;
+
+import spark.components.supportClasses.GroupBase;
+    
+class LayoutIterator 
+{
+    private var _curIndex:int;
+    private var _numVisited:int = 0;
+    private var totalElements:int;
+    private var _target:GroupBase;
+    private var _loopIndex:int = -1;
+	private var _useVirtual:Boolean;
+
+    public function get curIndex():int
+    {
+        return _curIndex;
+    }
+
+    public function LayoutIterator(target:GroupBase, index:int=-1):void
+    {
+        totalElements = target.numElements;
+        _target = target;
+        _curIndex = index;
+		_useVirtual = _target.layout.useVirtualLayout;
+    }
+
+    public function nextElement():ILayoutElement
+    {
+        while (_curIndex < totalElements - 1)
+        {
+            var el:ILayoutElement = _useVirtual ? _target.getVirtualElementAt(++_curIndex) :
+										 		  _target.getElementAt(++_curIndex);
+            if (el && el.includeInLayout)
+            {
+                ++_numVisited;
+                return el;
+            }
+        }
+        return null;
+    }
+    
+    public function prevElement():ILayoutElement
+    {
+        while (_curIndex > 0)
+        {
+            var el:ILayoutElement = _useVirtual ? _target.getVirtualElementAt(--_curIndex) :
+												  _target.getElementAt(--_curIndex);
+            if (el && el.includeInLayout)
+            {
+                ++_numVisited;
+                return el;
+            }
+        }
+        return null;
+    }
+
+    public function nextElementWrapped():ILayoutElement
+    {
+        if (_loopIndex == -1)
+            _loopIndex = _curIndex;
+        else if (_loopIndex == _curIndex)
+            return null;
+
+        var el:ILayoutElement = nextElement();
+        if (el)
+            return el;
+        else if (_curIndex == totalElements - 1)
+            _curIndex = -1;
+        return nextElement();
+    }
+    
+    public function prevElementWrapped():ILayoutElement
+    {
+        if (_loopIndex == -1)
+            _loopIndex = _curIndex;
+        else if (_loopIndex == _curIndex)
+            return null;
+
+        var el:ILayoutElement = prevElement();
+        if (el)
+            return el;
+        else if (_curIndex == 0)
+            _curIndex = totalElements;
+        return prevElement();
+    }
+
+    public function reset():void
+    {
+        _curIndex = -1;
+        _numVisited = 0;
+        _loopIndex = -1;
+    }
+
+    public function get numVisited():int
+    {
+        return _numVisited;
+    }
+}
+    

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/assets/ApacheFlexIcon.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/assets/ApacheFlexIcon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/assets/xdslider.png
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/assets/xdslider.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/data/catalog.xml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/data/catalog.xml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/layouts/FilteredTileLayout.as
==============================================================================
--- websites/staging/flex/trunk/content/tourdeflex/spark/layouts/layouts/FilteredTileLayout.as (added)
+++ websites/staging/flex/trunk/content/tourdeflex/spark/layouts/layouts/FilteredTileLayout.as Sat Aug 23 08:50:20 2014
@@ -0,0 +1,260 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 layouts
+{
+	import mx.collections.ICollectionView;
+	import mx.effects.Parallel;
+	import mx.events.EffectEvent;
+	
+	import spark.components.supportClasses.GroupBase;
+	import spark.components.supportClasses.ItemRenderer;
+	import spark.effects.Fade;
+	import spark.effects.Move;
+	import spark.layouts.supportClasses.LayoutBase;
+
+	public class FilteredTileLayout extends LayoutBase
+	{
+		public var filteredItems:ICollectionView;
+		
+		public var fadeOutDuration:Number = 400;
+		
+		public var moveDuration:Number = 400;
+		
+		public var fadeInDuration:Number = 400;
+
+		private var _target:GroupBase;
+
+		private var _containerWidth:Number;
+		
+		private var fadeOutEffects:Parallel;
+		private var fadeInEffects:Parallel;
+		private var moveEffects:Parallel;
+		
+		private var _horizontalGap:Number = 10;
+
+		private var _verticalGap:Number = 10;
+
+		private var _tileWidth:Number = 100;
+
+		private var _tileHeight:Number = 100;
+
+		public function set	horizontalGap(value:Number):void
+		{
+			_horizontalGap = value;
+			if (target)	target.invalidateDisplayList();
+		}
+
+		public function set	verticalGap(value:Number):void
+		{
+			_verticalGap = value;
+			if (target)	target.invalidateDisplayList();
+		}
+		
+		public function set	tileWidth(value:Number):void
+		{
+			_tileWidth = value;
+			if (target)	target.invalidateDisplayList();
+		}
+		
+		public function set	tileHeight(value:Number):void
+		{
+			_tileHeight = value;
+			if (target)	target.invalidateDisplayList();
+		}
+		
+		public function filter():void
+		{
+			// Prevent updateDisplayList() from being executed while we are animating tiles
+			_target.autoLayout = false;
+
+			// No filter has been applied. Keep showing all the items in the dataProvider
+			if (filteredItems == null) return;
+			
+			var count:int = _target.numElements;
+			
+			// No items in the dataProvider: Nothing to show.
+			if (count == 0) return;
+			
+			var x:int = 0;
+			var y:int = 0;
+			
+			fadeOutEffects = new Parallel();
+			fadeInEffects = new Parallel();
+			moveEffects = new Parallel();
+
+			for (var i:int = 0; i < count; i++)
+			{
+				var itemRenderer:ItemRenderer = _target.getElementAt(i) as ItemRenderer;
+				
+				if (filteredItems.contains(itemRenderer.data))
+				{
+					// The element is part of the selection: calculate its x and y values
+					if (x + _tileWidth > _containerWidth)
+					{
+						x = 0;
+						y += _tileHeight + _verticalGap;
+					} 
+
+					if (itemRenderer.visible == false)
+					{
+						trace("FadeIn: " + itemRenderer.data.name);
+						// if the element was hidden, set its new x and y values (without Move animation) and register it for FadeIn animation
+						itemRenderer.visible = true;
+						itemRenderer.setLayoutBoundsPosition(x, y);
+						var fadeIn:Fade = new Fade(itemRenderer);
+						fadeIn.alphaTo = 1;
+						fadeInEffects.addChild(fadeIn);
+					}  
+					else
+					{
+						trace("Move: " + itemRenderer.data.name);
+						// the element was already visible: register it for Move animation
+						if (itemRenderer.x != x || itemRenderer.y != y)
+						{
+							var move:Move = new Move(itemRenderer);
+							move.xTo = x;
+							move.yTo = y;
+							moveEffects.addChild(move);
+						}
+					}
+					x += _tileWidth + _horizontalGap;
+				}					
+				else
+				{
+					if (itemRenderer.alpha == 1)
+					{
+						trace("FadeOut: " + itemRenderer.data.name);
+						// the element is filtered out: register it for FadeOut animation
+						var fadeOut:Fade = new Fade(itemRenderer);
+						fadeOut.alphaTo = 0;
+						fadeOutEffects.addChild(fadeOut);
+					}
+				}
+			}
+			fadeOutTiles();			
+		}
+
+		private function fadeOutTiles(event:EffectEvent = null):void
+		{
+			trace("fadeOutTiles");
+			if (fadeOutEffects.children.length > 0) {
+				fadeOutEffects.duration = fadeOutDuration;
+				fadeOutEffects.addEventListener(EffectEvent.EFFECT_END, moveTiles)
+				fadeOutEffects.play();
+			}
+			else
+			{
+				moveTiles();	
+			}
+		}
+		
+		private function moveTiles(event:EffectEvent = null):void
+		{
+			// Undesired behaviors may happen if we leave tiles with alpha=0 in the display list while performing other animations 
+			setInvisibleTiles();
+			
+			trace("moveTiles");
+			if (moveEffects.children.length > 0) {
+				moveEffects.duration = moveDuration;
+				moveEffects.addEventListener(EffectEvent.EFFECT_END, fadeInTiles)
+				moveEffects.play();
+			}
+			else
+			{
+				fadeInTiles();	
+			}
+		}
+
+		private function fadeInTiles(event:EffectEvent = null):void
+		{
+			trace("fadeInTiles");
+			if (fadeInEffects.children.length > 0) {
+				fadeInEffects.duration = fadeInDuration;
+				moveEffects.addEventListener(EffectEvent.EFFECT_END, fadeInTilesEnd)
+				fadeInEffects.play();
+			}
+			else
+			{
+				fadeInTilesEnd();	
+			}
+		}
+		
+		private function fadeInTilesEnd(event:EffectEvent = null):void
+		{
+			_target.autoLayout = true; 
+		}
+		
+		private function setInvisibleTiles():void
+		{
+			var count:int = _target.numElements;
+			
+			if (count == 0) return;
+			
+			for (var i:int = 0; i < count; i++)
+			{
+				var itemRenderer:ItemRenderer = _target.getElementAt(i) as ItemRenderer;
+				if (!filteredItems.contains(itemRenderer.data))
+				{	
+					trace("Removing from layout: " + itemRenderer.data.name);					
+					itemRenderer.visible = false;
+				}		
+			}
+		}
+	
+		override public function updateDisplayList(containerWidth:Number, containerHeight:Number):void
+		{
+			trace("updateDisplaylist");
+
+			_target = target;
+			_containerWidth = containerWidth;
+
+			var count:int = target.numElements;
+			if (count == 0) return;
+			
+			var x:int=0;
+			var y:int=0;
+			
+			for (var i:int = 0; i < count; i++)
+			{
+				var itemRenderer:ItemRenderer = _target.getElementAt(i) as ItemRenderer;
+
+				itemRenderer.setLayoutBoundsSize(_tileWidth, _tileHeight);
+				
+				if (filteredItems && filteredItems.contains(itemRenderer.data))
+				{
+					// The element is part of the selection: calculate its x and y values
+					if (x + _tileWidth > containerWidth)
+					{
+						x = 0;
+						y += _tileHeight + _verticalGap;
+					} 
+					itemRenderer.setLayoutBoundsPosition(x, y);	
+					itemRenderer.alpha = 1;
+					x += _tileWidth + _horizontalGap;
+				}					
+				else
+				{
+					itemRenderer.alpha = 0;
+				}
+				
+			}
+		}
+
+	}
+}
\ No newline at end of file

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/renderers/PhoneRenderer.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/renderers/PhoneRenderer.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/skins/TDFPanelSkin.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/layouts/skins/TDFPanelSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module1.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module1.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module1.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module1.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module2.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module2.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module2.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/Module2.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/ModuleExample.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/ModuleExample.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/ModuleExample.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/ModuleExample.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/modules/TDFGradientBackgroundSkin.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/modules/TDFGradientBackgroundSkin.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding1Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding1Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding1Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding1Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash

Added: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding2Example.mxml
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding2Example.mxml
------------------------------------------------------------------------------
    svn:mime-type = application/xml

Added: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding2Example.swf
==============================================================================
Binary file - no diff available.

Propchange: websites/staging/flex/trunk/content/tourdeflex/spark/other/BidirectionalBinding2Example.swf
------------------------------------------------------------------------------
    svn:mime-type = application/x-shockwave-flash



Mime
View raw message