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