You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by bi...@apache.org on 2014/08/23 10:48:22 UTC

svn commit: r1619987 [19/22] - in /flex/site/trunk/content/tourdeflex: ./ mx/ mx/charts/ mx/containers/ mx/containers/assets/ mx/controls/ mx/controls/assets/ mx/core/ mx/effects/ mx/effects/assets/ mx/formatters/ mx/printing/ mx/states/ mx/validators/...

Added: flex/site/trunk/content/tourdeflex/spark/skinning/skins/IconTextButtonSkin.mxml
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/skinning/skins/IconTextButtonSkin.mxml?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/skinning/skins/IconTextButtonSkin.mxml (added)
+++ flex/site/trunk/content/tourdeflex/spark/skinning/skins/IconTextButtonSkin.mxml Sat Aug 23 08:47:51 2014
@@ -0,0 +1,195 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<!--
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" 
+			 minWidth="21" minHeight="21"
+			 alpha.disabled="0.5">
+	
+	<!-- host component -->
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Button")]
+		]]>
+	</fx:Metadata>
+	
+	<fx:Script>
+		<![CDATA[         
+			/* Define the skin elements that should not be colorized. 
+			For button, the graphics are colorized but the label is not. */
+			static private const exclusions:Array = ["labelDisplay"];
+			/** 
+			 * @copy spark.skins.SparkSkin#colorizeExclusions
+			 */     
+			override public function get colorizeExclusions():Array {return exclusions;}
+			
+		]]>        
+	</fx:Script>
+	
+	<!-- states -->
+	<s:states>
+		<s:State name="up" />
+		<s:State name="over" />
+		<s:State name="down" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- layer 1: shadow -->
+	<s:Rect left="-1" right="-1" top="-1" bottom="-1" radiusX="7" radiusY="7">
+		<s:fill>
+			<s:LinearGradient rotation="90">
+				<s:GradientEntry color="0x000000" 
+								 color.down="0xFFFFFF"
+								 alpha="0.01"
+								 alpha.down="0" />
+				<s:GradientEntry color="0x000000" 
+								 color.down="0xFFFFFF" 
+								 alpha="0.07"
+								 alpha.down="0.5" />
+			</s:LinearGradient>
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- layer 2: fill -->
+	<s:Rect left="1" right="1" top="1" bottom="1" radiusX="7" radiusY="7">
+		<s:fill>
+			<s:LinearGradient rotation="90">
+				<s:GradientEntry color="0xFFFFFF" 
+								 color.over="0xBBBDBD" 
+								 color.down="0xAAAAAA" 
+								 alpha="0.85" />
+				<s:GradientEntry color="0xD8D8D8" 
+								 color.over="0x9FA0A1" 
+								 color.down="0x929496" 
+								 alpha="0.85" />
+			</s:LinearGradient>
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- layer 3: fill lowlight -->
+	<s:Rect left="1" right="1" bottom="1" height="9" radiusX="7" radiusY="7">
+		
+		<s:fill>
+			<s:LinearGradient rotation="90">
+				<s:GradientEntry color="0x000000" alpha="0.0099" />
+				<s:GradientEntry color="0x000000" alpha="0.0627" />
+			</s:LinearGradient>
+		</s:fill>
+	</s:Rect>
+	
+	<!-- layer 4: fill highlight -->
+	<s:Rect left="1" right="1" top="1" height="9" radiusX="7" radiusY="7">
+		<s:fill>
+			<s:SolidColor color="0xFFFFFF" 
+						  alpha="0.33" 
+						  alpha.over="0.22" 
+						  alpha.down="0.12" />
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- layer 5: highlight stroke (all states except down) -->
+	<s:Rect left="1" right="1" top="1" bottom="1" radiusX="7" radiusY="7" excludeFrom="down">
+		<s:stroke>
+			<s:LinearGradientStroke rotation="90" weight="1">
+				<s:GradientEntry color="0xFFFFFF" alpha.over="0.22" />
+				<s:GradientEntry color="0xD8D8D8" alpha.over="0.22" />
+			</s:LinearGradientStroke>
+		</s:stroke>
+	</s:Rect>
+	
+	
+	<!-- layer 6: highlight stroke (down state only) -->
+	<s:Rect left="1" top="1" bottom="1" width="1" includeIn="down">
+		<s:fill>
+			<s:SolidColor color="0x000000" alpha="0.07" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect right="1" top="1" bottom="1" width="1" includeIn="down">
+		<s:fill>
+			<s:SolidColor color="0x000000" alpha="0.07" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect left="2" top="1" right="2" height="1" includeIn="down">
+		<s:fill>
+			<s:SolidColor color="0x000000" alpha="0.25" />
+		</s:fill>
+	</s:Rect>
+	
+	<s:Rect left="1" top="2" right="1" height="1" includeIn="down">
+		<s:fill>
+			<s:SolidColor color="0x000000" alpha="0.09" />
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- layer 7: border - put on top of the fill so it doesn't disappear when scale is less than 1 -->
+	<s:Rect left="0" right="0" top="0" bottom="0" width="69" height="20" radiusX="7" radiusY="7">
+		<s:stroke>
+			<s:LinearGradientStroke rotation="90" weight="1">
+				<s:GradientEntry color="0x000000" 
+								 alpha="0.5625"
+								 alpha.down="0.6375" />
+				<s:GradientEntry color="0x000000" 
+								 alpha="0.75" 
+								 alpha.down="0.85" />
+			</s:LinearGradientStroke>
+		</s:stroke>
+	</s:Rect>
+	
+	<!-- icon/symbol layer -->
+	<s:Group id="symbol" left="7" top="7" right="3" bottom="3">
+		<s:filters>
+			<s:DropShadowFilter alpha="0.5" blurX="0" blurY="0" distance="1" />
+		</s:filters> 
+		<s:BitmapImage source="@Embed('../assets/icon_plus.png')"/>
+		
+	</s:Group>
+	
+	<!-- The divider between symbol and text -->
+	<s:Line blendMode="overlay" verticalCenter="0" height="90%" left="20">
+		<s:stroke>
+			<s:SolidColorStroke color="#3d3d3d" weight=".25" />
+		</s:stroke>
+	</s:Line>
+	
+	<!-- layer 8: text -->
+	<s:Group id="textGroup" verticalCenter="1" left="25">
+		<s:filters>
+			<s:DropShadowFilter alpha="0.5" blurX="0" blurY="0" distance="1" />
+		</s:filters>  
+		<s:Label id="labelDisplay" 
+			textAlign="center"
+			verticalAlign="middle"
+			maxDisplayedLines="1">
+		</s:Label>
+	</s:Group>
+</s:SparkSkin>
\ No newline at end of file

Propchange: flex/site/trunk/content/tourdeflex/spark/skinning/skins/IconTextButtonSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/skinning/skins/MyPanelSkin.mxml
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/skinning/skins/MyPanelSkin.mxml?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/skinning/skins/MyPanelSkin.mxml (added)
+++ flex/site/trunk/content/tourdeflex/spark/skinning/skins/MyPanelSkin.mxml Sat Aug 23 08:47:51 2014
@@ -0,0 +1,101 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<!--- The default skin class for a Spark Panel container.  
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" alpha.disabled="0.5" blendMode="normal">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Panel")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script>
+		/* Define the skin elements that should not be colorized. 
+		For panel, border and title backround are skinned, but the content area and title text are not. */
+		static private const exclusions:Array = ["background", "titleDisplay", "contentGroup", "bgfill"];
+		
+		/** 
+		 * @copy spark.skins.SparkSkin#colorizeExclusions
+		 */     
+		override public function get colorizeExclusions():Array {return exclusions;}
+		
+		/* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+		static private const contentFill:Array = [];
+		
+		/**
+		 * @inheritDoc
+		 */
+		override public function get contentItems():Array {return contentFill};
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="disabled" />
+	</s:states>
+	
+	<!-- background fill -->
+	<s:Rect left="0" right="0" bottom="0" top="0" >
+		<s:fill>
+			<s:LinearGradient rotation="90" >
+				<s:GradientEntry color="0xFFFFFF" />
+				<s:GradientEntry color="0x000000" />
+			</s:LinearGradient>
+		</s:fill>
+	</s:Rect>
+	
+	<!-- title bar fill -->
+	<s:Rect left="0" right="0" top="0" height="30">
+		<s:fill>
+			<s:LinearGradient rotation="90">
+				<s:GradientEntry color="0x000000" />
+				<s:GradientEntry color="0xC0C0C0" />
+			</s:LinearGradient>
+		</s:fill>
+	</s:Rect>
+	
+	
+	<!-- text layer -->
+	<!--- Defines the appearance of the PanelSkin class's title bar. -->
+	<s:SimpleText id="titleDisplay" lineBreak="explicit"
+				  right="4" top="2" height="30"
+				  verticalAlign="middle" fontWeight="bold" 
+				  color="0xE2E2E2">
+	</s:SimpleText>
+	
+	<!--
+	Note: setting the minimum size to 0 here so that changes to the host component's
+	size will not be thwarted by this skin part's minimum size.   This is a compromise,
+	more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
+	-->
+	<s:Group id="contentGroup" left="1" right="1" top="32" bottom="1" minWidth="0" minHeight="0">
+	</s:Group>
+	
+</s:SparkSkin>

Propchange: flex/site/trunk/content/tourdeflex/spark/skinning/skins/MyPanelSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/skinning/skins/TDFPanelSkin.mxml
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/skinning/skins/TDFPanelSkin.mxml?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/skinning/skins/TDFPanelSkin.mxml (added)
+++ flex/site/trunk/content/tourdeflex/spark/skinning/skins/TDFPanelSkin.mxml Sat Aug 23 08:47:51 2014
@@ -0,0 +1,171 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<!--- Custom Spark Panel Skin created for Tour de Flex.  
+
+@langversion 3.0
+@playerversion Flash 10
+@playerversion AIR 1.5
+@productversion Flex 4
+-->
+<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" alpha.disabled="0.5"
+			 blendMode.disabled="layer">
+	
+	<fx:Metadata>
+		<![CDATA[ 
+		/** 
+		* @copy spark.skins.spark.ApplicationSkin#hostComponent
+		*/
+		[HostComponent("spark.components.Panel")]
+		]]>
+	</fx:Metadata> 
+	
+	<fx:Script>
+		/* Define the skin elements that should not be colorized. 
+		For panel, border and title backround are skinned, but the content area and title text are not. */
+		static private const exclusions:Array = ["background", "titleDisplay", "contentGroup", "bgFill"];
+		
+		/** 
+		 * @copy spark.skins.SparkSkin#colorizeExclusions
+		 */     
+		override public function get colorizeExclusions():Array {return exclusions;}
+		
+		/* Define the content fill items that should be colored by the "contentBackgroundColor" style. */
+		static private const contentFill:Array = [];
+		
+		/**
+		 * @inheritDoc
+		 */
+		override public function get contentItems():Array {return contentFill};
+	</fx:Script>
+	
+	<s:states>
+		<s:State name="normal" />
+		<s:State name="disabled" />
+		<s:State name="normalWithControlBar" />
+		<s:State name="disabledWithControlBar" />
+	</s:states>
+	
+	<!-- drop shadow -->
+	<s:RectangularDropShadow id="shadow" blurX="20" blurY="20" alpha="0.32" distance="11" 
+							 angle="90" color="#000000" left="0" top="0" right="0" bottom="0"/>
+	
+	<!-- layer 1: border -->
+	<s:Rect left="0" right="0" top="0" bottom="0">
+		<s:stroke>
+			<s:SolidColorStroke color="0" alpha="0.50" weight="1" />
+		</s:stroke>
+	</s:Rect>
+	
+	
+	<!-- layer 2: background fill -->
+	<!-- This layer was modified for Tour de Flex samples to have a gradient border at the bottom. -->
+	<s:Rect left="0" right="0" bottom="0" height="15">
+		<s:fill>
+			<s:LinearGradient rotation="90">
+				<s:GradientEntry color="0xE2E2E2" />
+				<s:GradientEntry color="0x000000" />
+			</s:LinearGradient>
+		</s:fill>
+	</s:Rect>
+	
+	<!-- layer 3: contents -->
+	<!--- contains the vertical stack of titlebar content and controlbar -->
+	<s:Group left="1" right="1" top="1" bottom="1" >
+		<s:layout>
+			<s:VerticalLayout gap="0" horizontalAlign="justify" />
+		</s:layout>
+		
+		<s:Group id="topGroup" >
+			<!-- layer 0: title bar fill -->
+			<!-- Note: We have custom skinned the title bar to be solid black for Tour de Flex -->
+			<s:Rect id="tbFill" left="0" right="0" top="0" bottom="1" >
+				<s:fill>
+					<s:SolidColor color="0x000000" />
+				</s:fill>
+			</s:Rect>
+			
+			<!-- layer 1: title bar highlight -->
+			<s:Rect id="tbHilite" left="0" right="0" top="0" bottom="0" >
+				<s:stroke>
+					<s:LinearGradientStroke rotation="90" weight="1">
+						<s:GradientEntry color="0xEAEAEA" />
+						<s:GradientEntry color="0xD9D9D9" />
+					</s:LinearGradientStroke>
+				</s:stroke>
+			</s:Rect>
+			
+			<!-- layer 2: title bar divider -->
+			<s:Rect id="tbDiv" left="0" right="0" height="1" bottom="0">
+				<s:fill>
+					<s:SolidColor color="0xC0C0C0" />
+				</s:fill>
+			</s:Rect>
+			
+			<!-- layer 3: text -->
+			<!--- Defines the appearance of the PanelSkin class's title bar. -->
+			<!-- Note: The title text display has been slightly modified for Tour de Flex. -->
+			<s:Label id="titleDisplay" lineBreak="explicit"
+						  left="9" top="1" bottom="0" minHeight="30"
+						  verticalAlign="middle" fontWeight="bold" color="#E2E2E2">
+			</s:Label>
+		</s:Group>
+		
+		<!--
+		Note: setting the minimum size to 0 here so that changes to the host component's
+		size will not be thwarted by this skin part's minimum size.   This is a compromise,
+		more about it here: http://bugs.adobe.com/jira/browse/SDK-21143
+		-->
+		<s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0">
+		</s:Group>
+		
+		<s:Group id="bottomGroup" minWidth="0" minHeight="0"
+				 includeIn="normalWithControlBar, disabledWithControlBar" >
+			
+			<!-- layer 0: control bar background -->
+			<!-- Note: We are skinning this to be the gradient in case we do specify control
+			bar content, but it will only display if there's a controlBarContent
+			property specified.-->
+			<s:Rect left="0" right="0" bottom="0" top="0" height="15">
+				<s:fill>
+					<s:LinearGradient rotation="90">
+						<s:GradientEntry color="0xE2E2E2" />
+						<s:GradientEntry color="0x000000" />
+					</s:LinearGradient>
+				</s:fill>
+			</s:Rect>
+			
+			<!-- layer 1: control bar divider line -->
+			<s:Rect left="0" right="0" top="0" height="1" >
+				<s:fill>
+					<s:SolidColor color="0xCDCDCD" />
+				</s:fill>
+			</s:Rect>
+			
+			<!-- layer 2: control bar -->
+			<s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="0" minWidth="0" minHeight="0">
+				<s:layout>
+					<s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="10" paddingBottom="10" />
+				</s:layout>
+			</s:Group>
+		</s:Group>
+	</s:Group>
+</s:SparkSkin>

Propchange: flex/site/trunk/content/tourdeflex/spark/skinning/skins/TDFPanelSkin.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/states/AnimateShaderTransitionEffect.mxml
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/states/AnimateShaderTransitionEffect.mxml?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/states/AnimateShaderTransitionEffect.mxml (added)
+++ flex/site/trunk/content/tourdeflex/spark/states/AnimateShaderTransitionEffect.mxml Sat Aug 23 08:47:51 2014
@@ -0,0 +1,58 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
+			   xmlns:s="library://ns.adobe.com/flex/spark" 
+			   xmlns:mx="library://ns.adobe.com/flex/mx" 
+			   backgroundColor="0x000000">
+	
+	<s:states>
+		<s:State name="default"/>
+		<s:State name="flipped"/>
+	</s:states>
+	
+	<s:transitions>
+		<s:Transition id="t1">
+			<s:AnimateTransitionShader
+				target="{holder}"
+				duration="1000" 
+				shaderByteCode="@Embed(source='assets/twist.pbj', mimeType='application/octet-stream')"/>
+		</s:Transition>
+	</s:transitions>
+	
+	<s:HGroup left="190" top="7">
+		<s:Group id="holder">
+			<s:BitmapImage
+				source="@Embed('assets/back.png')"
+				visible="true" visible.flipped="false"/>
+			<s:BitmapImage
+				source="@Embed('assets/c1.png')"
+				visible="false" visible.flipped="true"/>
+		</s:Group>
+	</s:HGroup>
+	<s:VGroup top="10" right="5" width="30%">
+		<s:Label text="AnimateShaderTransition Sample" fontSize="18" color="#B7B6B6"/>
+		<s:Label color="#FFFFFF" width="200" verticalAlign="justify"
+				 text="AnimateShaderTransition animates a shader between two images. Click the button below to see the effect."/>
+		<s:Button id="playButton"
+				  label="Play Animation"
+				  click="currentState = (currentState == 'flipped') ? 'default' : 'flipped';" />
+	</s:VGroup>
+	
+</s:Application>

Propchange: flex/site/trunk/content/tourdeflex/spark/states/AnimateShaderTransitionEffect.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/states/assets/back.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/states/assets/back.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/states/assets/back.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorCanvas.mxml
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorCanvas.mxml?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorCanvas.mxml (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorCanvas.mxml Sat Aug 23 08:47:51 2014
@@ -0,0 +1,439 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+
+
+<mx:Canvas
+    xmlns="http://ns.adobe.com/mxml/2009"
+ 	xmlns:mx="library://ns.adobe.com/flex/mx"
+	xmlns:flow="library://ns.adobe.com/flashx/textLayout"
+	xmlns:textEditBar="textEditBar.*"
+	xmlns:txui="flashx.textLayout.ui.*"
+	xmlns:txrulers="flashx.textLayout.ui.rulers.*"
+	xmlns:txinsp="flashx.textLayout.ui.inspectors.*"
+	explicitMinWidth="300" 
+	explicitMinHeight="200"
+	creationComplete="handleCreationComplete()"
+	resize="handleResize()">
+	
+		
+    <Script><![CDATA[
+		import flashx.textLayout.container.ContainerController;
+		import flashx.textLayout.debug.assert;
+		import flashx.textLayout.edit.EditManager;
+		import flashx.textLayout.edit.EditingMode;
+		import flashx.textLayout.edit.ElementRange;
+		import flashx.textLayout.edit.ISelectionManager;
+		import flashx.textLayout.edit.SelectionFormat;
+		import flashx.textLayout.edit.SelectionManager;
+		import flashx.textLayout.edit.SelectionState;
+		import flashx.textLayout.elements.Configuration;
+		import flashx.textLayout.elements.InlineGraphicElementStatus;
+		import flashx.textLayout.elements.ParagraphElement;
+		import flashx.textLayout.elements.SpanElement;
+		import flashx.textLayout.elements.TextFlow;
+		import flashx.textLayout.events.SelectionEvent;
+		import flashx.textLayout.events.StatusChangeEvent;
+		import flashx.textLayout.formats.TextLayoutFormat;
+		import flashx.undo.IUndoManager;
+		import flashx.undo.UndoManager;
+		
+		import textEditBar.FileIOHelper;
+		import flashx.textLayout.ui.inspectors.TextInspectorController;
+		
+		import mx.events.IndexChangedEvent;
+				
+		private var resizeOK:Boolean;
+		public var activeFlow:TextFlow;
+
+		// undo/redo manager
+		private var undoManager:IUndoManager;
+		
+		private var bottomPanels:Array = [];
+		
+		
+		public function handleCreationComplete(): void
+		{
+			initializeConfiguration();
+			FileIOHelper.parentWindow = this;
+			FileIOHelper.changeContent = changeContent;
+					
+			resizeOK = true;
+			handleResize();
+ 			 			
+ 			undoManager = new UndoManager();
+  			 			
+			hruler.creationComplete();
+ 			vruler.creationComplete();
+ 			
+ 			var numPanels:int = bottomTabs.numChildren;
+ 			for (var i:int = 0; i < numPanels; ++i)
+ 			{
+ 				var panel:Canvas = bottomTabs.getChildAt(i) as Canvas;
+ 				bottomPanels.push(panel.getChildAt(0));
+ 				if (i > 0)
+ 					panel.removeAllChildren();
+ 			}
+  			bottomTabs.addEventListener(IndexChangedEvent.CHANGE, onBottomTabChanged);
+  			
+  			this.addEventListener(Event.ACTIVATE, onFocus); 
+  			
+			changeContent(createEmptyFlow());
+			callLater(doFocus);
+		}
+		
+		private function doFocus():void
+		{
+			if (activeFlow)
+			{
+				var selMgr:ISelectionManager = activeFlow.interactionManager;
+				if (selMgr && textPanel.visible)
+					selMgr.setFocus();
+			}
+		}
+		private function createEmptyFlow():TextFlow
+		{
+			var newFlow:TextFlow = new TextFlow();
+			var para:ParagraphElement = new ParagraphElement();
+			para.addChild(new SpanElement());
+			newFlow.addChild(para);
+			return newFlow;
+		}
+ 		
+ 		private function initializeConfiguration():void
+ 		{
+ 			var config:Configuration = TextFlow.defaultConfiguration;
+			config.unfocusedSelectionFormat = new SelectionFormat(0xffffff, 1.0, BlendMode.DIFFERENCE, 0xffffff, 1.0, BlendMode.DIFFERENCE, 0);
+			config.inactiveSelectionFormat = new SelectionFormat(0xffffff, 1.0, BlendMode.DIFFERENCE, 0xffffff, 1.0, BlendMode.DIFFERENCE, 0);
+			config.manageTabKey = true;
+			var initialFormat:TextLayoutFormat = new TextLayoutFormat();
+			initialFormat.fontFamily = "Arial";
+			initialFormat.fontSize = 16;
+			initialFormat.paddingLeft = 2;
+			initialFormat.paddingTop = 2;
+			initialFormat.paddingRight = 2;
+			initialFormat.paddingBottom = 2;
+			config.textFlowInitialFormat = initialFormat;
+		}
+ 		
+ 		private function onFocus(event:Event):void
+ 		{
+ 			if (activeFlow)
+ 			{
+	 			var selMgr:ISelectionManager = activeFlow.interactionManager;
+	 			if(selMgr)
+	 				selMgr.setFocus();
+	 		}
+ 			
+ 		}
+ 		private function onBottomTabChanged(evt:IndexChangedEvent):void
+ 		{
+ 			var panel:Canvas = bottomTabs.getChildAt(evt.oldIndex) as Canvas;
+ 			panel.removeAllChildren();
+ 			panel = bottomTabs.getChildAt(evt.newIndex) as Canvas;
+ 			panel.addChild(bottomPanels[evt.newIndex]);
+ 		}
+ 		
+  		private var editingMode:String = EditingMode.READ_WRITE;
+ 		
+		private function keyListener(event:KeyboardEvent):void
+ 		{
+			if (event.keyCode == Keyboard.ESCAPE)
+				activeFlow.interactionManager.selectRange(-1,-1);
+ 		}
+ 		
+ 		private function updateEscapeKeyListener():void
+ 		{
+ 			for (var i:int = 0; i < activeFlow.flowComposer.numControllers; i++)
+ 			{
+ 				var controller:ContainerController = activeFlow.flowComposer.getControllerAt(i);
+ 				var container:DisplayObject = controller.container as DisplayObject;
+ 				if (activeFlow.interactionManager)
+ 					container.addEventListener(KeyboardEvent.KEY_DOWN, keyListener,false,0,true);
+ 				else 
+ 					container.removeEventListener(KeyboardEvent.KEY_DOWN, keyListener);
+ 			}
+ 		}		
+
+		public function setActiveFlow(newActiveFlow:TextFlow):void
+		{
+			TextInspectorController.Instance().activeFlow = newActiveFlow;
+			for (var i:int = bottomPanels.length - 1; i >= 0; --i)
+				bottomPanels[i].activeFlow = newActiveFlow;
+		}
+		
+ 		public function setInteractionManager(selectType:String):void
+ 		{
+			editingMode = selectType;
+			var uiActiveFlow:TextFlow = null;
+
+ 			if (activeFlow)	
+ 			{
+	 			switch (selectType)
+	 			{
+	 				case EditingMode.READ_ONLY:
+						if (activeFlow.interactionManager)
+							activeFlow.interactionManager = null;
+						break;
+					case EditingMode.READ_WRITE:
+						// either direction should work.
+						new EditManager(undoManager).textFlow = activeFlow;
+						activeFlow.interactionManager = new EditManager(undoManager);
+						
+						activeFlow.addEventListener(SelectionEvent.SELECTION_CHANGE,mySelectionChangeListener,false,0,true);
+						uiActiveFlow = activeFlow;
+						activeFlow.interactionManager.selectRange(0, 0);
+						break;
+					case EditingMode.READ_SELECT:
+						activeFlow.interactionManager = new SelectionManager();
+						activeFlow.addEventListener(SelectionEvent.SELECTION_CHANGE,mySelectionChangeListener,false,0,true);
+						break;
+				}
+				setActiveFlow(uiActiveFlow);
+				updateEscapeKeyListener();
+				updateForSelectedElementRange(new SelectionState( activeFlow, 0, 0));
+ 			}
+		}
+	
+	
+ 		private function mySelectionChangeListener(e:SelectionEvent):void
+ 		{
+  			updateForSelectedElementRange(e ? e.selectionState : null);
+ 		}
+ 		
+ 		/**
+ 		* Update the GUI for a particular selection range.
+ 		* @private
+ 		* @param range may be null
+ 		*/
+ 		private function updateForSelectedElementRange(selectionState:SelectionState):void
+ 		{
+ 			var range:ElementRange = selectionState ? ElementRange.createElementRange(selectionState.textFlow, selectionState.absoluteStart, selectionState.absoluteEnd) : null;
+ 			var selMgr:ISelectionManager = activeFlow.interactionManager;
+ 			
+			for (var i:int = bottomPanels.length - 1; i >= 0; --i)
+				bottomPanels[i].update(range);
+
+			if (selMgr && textPanel.visible)
+				selMgr.setFocus();
+ 		}
+ 		
+ 		/** handleResize - resize the child containers
+ 		  * @param alwaysResize - do the recalucation no matter if the size didn't change 
+ 		  */
+ 		public function handleResize():void
+		{
+			if (resizeOK && activeFlow)
+			{
+			 	vruler.RedrawRuler();
+		 		hruler.RedrawRuler();		
+			}
+		}
+		
+		public function detachActiveFlow(deleteTheComposer:Boolean):void
+		{
+			if (activeFlow && activeFlow.flowComposer != null)
+			{
+				// Detach the containers from the display list
+				for (var idx:int = 0; idx < activeFlow.flowComposer.numControllers; idx++)
+				{
+					var controller:ContainerController = activeFlow.flowComposer.getControllerAt(idx);
+					var oldContainer:DisplayObject = controller.container;
+					if (oldContainer && oldContainer.parent)
+					{
+						Canvas(oldContainer.parent).rawChildren.removeChild(oldContainer);
+					}
+				}
+				activeFlow.flowComposer.removeAllControllers();
+				
+				// also shuts down inline graphics - need another API if we want to do this another way
+				if (deleteTheComposer)
+					activeFlow.flowComposer = null;
+			}		
+		}
+		
+		private function recomposeOnLoadComplete(e:StatusChangeEvent):void
+		{
+			if (e.status == InlineGraphicElementStatus.ERROR)
+				trace("IOERROR loading inlinegraphicelement",e.errorEvent.toString());
+			if (e.element.getTextFlow() == activeFlow && e.status == InlineGraphicElementStatus.SIZE_PENDING)
+				activeFlow.flowComposer.updateAllControllers();
+		}
+		
+		public function changeContent(newFlow:TextFlow):void
+		{
+			// Remove old containers from the display list
+			if (undoManager != null) 
+				undoManager.clearAll();
+			if (activeFlow)
+			{
+				detachActiveFlow(true);
+				activeFlow.removeEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,recomposeOnLoadComplete);
+			}
+			
+			// set activeFlow (note: this variable is used in the mxml code below.)
+			activeFlow = newFlow;
+			if (!activeFlow)
+				return;
+				
+			activeFlow.addEventListener(StatusChangeEvent.INLINE_GRAPHIC_STATUS_CHANGE,recomposeOnLoadComplete,false,0,true);
+			
+			textPanel.changeContainerSetup(activeFlow);
+
+			activeFlow.interactionManager = new EditManager(undoManager);
+			activeFlow.addEventListener(SelectionEvent.SELECTION_CHANGE,mySelectionChangeListener,false,0,true);
+			setActiveFlow(activeFlow);
+			activeFlow.interactionManager.selectRange(0, 0);
+			updateEscapeKeyListener();
+			activeFlow.flowComposer.updateAllControllers();
+
+ 			vruler.RedrawRuler();
+ 			hruler.RedrawRuler();
+ 		}
+ 		
+		/** visiblePanels is an array of the labels of the right-side property panels that are opened.
+		 * if you set it, the panels specified will be opened and all others will be closed.
+		 */
+		public function set visiblePanels(inPanelNames:Array):void
+		{
+			var panels:Array = inspectorBox.getChildren();
+			for each(var panel:DisplayObject in panels)
+			{
+				if (panel is MultiPanel)
+				{
+					var mp:MultiPanel = panel as MultiPanel;
+					mp.opened = (inPanelNames.indexOf(mp.label) != -1);
+				}
+			}
+		}
+		
+		public function get visiblePanels():Array
+		{
+			var result:Array = [];
+			var panels:Array = inspectorBox.getChildren();
+			for each(var panel:DisplayObject in panels)
+			{
+				if (panel is MultiPanel)
+				{
+					var mp:MultiPanel = panel as MultiPanel;
+					if (mp.opened)
+						result.push(mp.label);
+				}
+			}
+			return result;
+		}
+		
+       ]]>
+    </Script>
+	
+	<mx:VBox
+		width="100%"
+		height="100%" 
+		verticalGap="2"
+		backgroundColor="0x607D8A"
+		fontFamily="Myriad Pro"
+		fontWeight="bold">
+		<mx:HBox
+			width="100%"
+			height="100%"
+			horizontalGap="4">
+			<txui:PanelWithEdgeBars
+				id="panelWithScrollBars"
+				width="100%"
+				height="100%"
+				edgeInset="18"
+				gap="1"
+				mainPanel="{textPanel}"
+				topBar="{horizontalRulerBar}"
+				rightBar="{verticalRulerBar}">
+				
+				<textEditBar:SingleContainerView id="textPanel"/>
+
+				<mx:Canvas
+					id="verticalRulerBar"
+					verticalScrollPolicy="off"
+					horizontalScrollPolicy="off">
+					<txrulers:RulerBar
+						id="vruler"
+						orientation="vertical"
+						syncToPanel="{textPanel}"
+						tabPropertyEditor="{tabPropEditor}"
+						tabPanelActive="{tabPanel.opened}">
+					</txrulers:RulerBar>
+				</mx:Canvas>
+				<mx:Canvas
+					id="horizontalRulerBar"
+					verticalScrollPolicy="off"
+					horizontalScrollPolicy="off">
+					<txrulers:RulerBar
+						id="hruler"
+						syncToPanel="{textPanel}"
+						tabPropertyEditor="{tabPropEditor}"
+						tabPanelActive="{tabPanel.opened}">
+					</txrulers:RulerBar>
+				</mx:Canvas>
+			</txui:PanelWithEdgeBars>
+			<mx:Canvas
+				width="270"
+				height="100%"
+				horizontalScrollPolicy="off"
+				backgroundColor="#D9D9D9"
+				verticalScrollBarStyleName="scrollbarStyle">
+				<mx:VBox id="inspectorBox" verticalGap="1" width="100%" backgroundColor="#D9D9D9">
+				    <txui:MultiPanel id="charPanel" styleName="multiPanel" label="CHARACTER" width="100%">
+				    	<txinsp:CharacterPropertyEditor active="{charPanel.opened}"/>
+				    </txui:MultiPanel>	
+				    <txui:MultiPanel id="parPanel" styleName="multiPanel" label="PARAGRAPH" width="100%">
+				    	<txinsp:ParagraphPropertyEditor active="{parPanel.opened}"/>
+				    </txui:MultiPanel>
+				    <txui:MultiPanel id="tabPanel" styleName="multiPanel" label="TAB" width="100%" opened="false">
+				    	<txinsp:TabPropertyEditor id="tabPropEditor"/>
+				    </txui:MultiPanel>
+				    <txui:MultiPanel id="advancedPanel" styleName="multiPanel" label="ADVANCED CHARACTER" width="100%" opened="false">
+				    	<txinsp:AdvancedTextPropertyEditor active="{advancedPanel.opened}"/>
+				    </txui:MultiPanel>
+				    <txui:MultiPanel id="antialiasPanel" styleName="multiPanel" label="ANTIALIAS" width="100%" opened="false">
+				    	<txinsp:AntiAliasPropertyEditor active="{antialiasPanel.opened}"/>
+				    </txui:MultiPanel>
+				    <txui:MultiPanel id="containerPanel" styleName="multiPanel" label="CONTAINER" width="100%" opened="false">
+				    	<txinsp:TextContainerPropertyEditor active="{containerPanel.opened}"/>
+				    </txui:MultiPanel>
+				    <txui:MultiPanel id="flowPanel" styleName="multiPanel" label="FLOW" width="100%" opened="false">
+				    	<txinsp:TextFlowPropertyEditor active="{flowPanel.opened}"/>
+				    </txui:MultiPanel>
+				</mx:VBox>
+			</mx:Canvas>
+		</mx:HBox>
+		<mx:TabNavigator id="bottomTabs" width="100%" creationPolicy="all" paddingLeft="8" backgroundColor="#D9D9D9" color="#202020">
+			<mx:Canvas label="SOURCE" width="100%" height="28">
+	 			<textEditBar:FileServices id="fileWidget" fileChoose="FileIOHelper.fileChoose(event.fileName)" textLayoutExport="FileIOHelper.textLayoutExport(activeFlow)" htmlExport="FileIOHelper.htmlExport(activeFlow)" includeInLayout="false" width="100%"/> 
+			</mx:Canvas>
+			<mx:Canvas label="LINKS" width="100%" height="100%">
+   				<textEditBar:LinkBar id="linkElementProps" creationPolicy="all" includeInLayout="false"/>  	
+			</mx:Canvas>
+			<mx:Canvas label="GRAPHICS" width="100%" height="100%">
+				<textEditBar:GraphicBar id="foreignElementProps" creationPolicy="all" includeInLayout="false"/>
+			</mx:Canvas>
+			
+		</mx:TabNavigator>
+	</mx:VBox>
+
+</mx:Canvas>
\ No newline at end of file

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorCanvas.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorSample.mxml
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorSample.mxml?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorSample.mxml (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorSample.mxml Sat Aug 23 08:47:51 2014
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+
+
+<s:Application xmlns="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:local="*">
+	<local:TextLayoutEditorCanvas width="100%" height="100%"/>
+	<Style source="/flashx/textLayout/ui/VellumGUIStyles.css"/>
+	<!--<Style source="VellumGUIStyles.css"/>-->
+</s:Application>
+ 

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/TextLayoutEditorSample.mxml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/%scroll_arrow_down_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/%25scroll_arrow_down_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/%scroll_arrow_down_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/%scroll_arrow_up_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/%25scroll_arrow_up_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/%scroll_arrow_up_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/combo_drop_down_arrow.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/combo_drop_down_arrow.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/combo_drop_down_arrow.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/header_close_icon.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/header_close_icon.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/header_close_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/header_open_icon.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/header_open_icon.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/header_open_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_down.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_down.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_down.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_down_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_down_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_down_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_up.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_up.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_up.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_up_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_up_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/assets/scroll_arrow_up_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/UiClasses.as
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/UiClasses.as?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/UiClasses.as (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/UiClasses.as Sat Aug 23 08:47:51 2014
@@ -0,0 +1,54 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout
+{
+	internal class UiClasses
+	{
+		import flashx.textLayout.ui.inspectors.DynamicTextPropertyEditor; DynamicTextPropertyEditor;
+		import flashx.textLayout.ui.inspectors.SelectionUpdateEvent; SelectionUpdateEvent;
+		import flashx.textLayout.ui.inspectors.TextInspectorController; TextInspectorController;
+		import flashx.textLayout.ui.inspectors.CharacterPropertyEditor; CharacterPropertyEditor;
+		import flashx.textLayout.ui.inspectors.LinkPropertyEditor; LinkPropertyEditor;
+		import flashx.textLayout.ui.inspectors.TabPropertyEditor; TabPropertyEditor;
+		import flashx.textLayout.ui.inspectors.AdvancedTextPropertyEditor; AdvancedTextPropertyEditor;
+		import flashx.textLayout.ui.inspectors.AntiAliasPropertyEditor; AntiAliasPropertyEditor;
+		import flashx.textLayout.ui.inspectors.TextContainerPropertyEditor; TextContainerPropertyEditor;
+		import flashx.textLayout.ui.inspectors.TextFlowPropertyEditor; TextFlowPropertyEditor;
+		import flashx.textLayout.ui.inspectors.ParagraphPropertyEditor; ParagraphPropertyEditor;
+		
+		import flashx.textLayout.ui.styles.ScrollbarThumbOverSkin; ScrollbarThumbOverSkin;
+		import flashx.textLayout.ui.styles.ScrollbarTrackSkin; ScrollbarTrackSkin;
+		import flashx.textLayout.ui.styles.ScrollbarThumbUpSkin; ScrollbarThumbUpSkin;
+		import flashx.textLayout.ui.styles.ScrollbarDownArrowUpSkin; ScrollbarDownArrowUpSkin;
+		import flashx.textLayout.ui.styles.ScrollbarUpArrowUpSkin; ScrollbarUpArrowUpSkin;
+		import flashx.textLayout.ui.styles.PopupMenuSkin; PopupMenuSkin;
+		
+		import flashx.textLayout.ui.rulers.RulerBar; RulerBar;
+		import flashx.textLayout.ui.rulers.RulerDragTracker; RulerDragTracker;
+		import flashx.textLayout.ui.rulers.RulerMarker; RulerMarker;
+		import flashx.textLayout.ui.rulers.TabMarker; TabMarker;
+		import flashx.textLayout.ui.rulers.TabMarkerSkin; TabMarkerSkin;
+		import flashx.textLayout.ui.rulers.ParagraphPropertyMarker; ParagraphPropertyMarker;
+		import flashx.textLayout.ui.rulers.ParagraphPropertyMarkerSkin; ParagraphPropertyMarkerSkin;
+		
+		import flashx.textLayout.ui.MultiPanel; MultiPanel;
+		import flashx.textLayout.ui.MultiPanelHeaderSkin; MultiPanelHeaderSkin;
+		import flashx.textLayout.ui.PanelWithEdgeBars; PanelWithEdgeBars;
+	}
+}

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/UiClasses.as
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanel.as
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanel.as?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanel.as (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanel.as Sat Aug 23 08:47:51 2014
@@ -0,0 +1,206 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui
+{
+	import flash.events.MouseEvent;
+	
+	import mx.controls.Button;
+	import mx.core.EdgeMetrics;
+	import mx.core.LayoutContainer;
+	import mx.core.ScrollPolicy;
+	import mx.effects.Resize;
+	import mx.events.ResizeEvent;
+	
+    [Style(name="openDuration", type="Number", format="Time", inherit="no")]
+    [Style(name="closeDuration", type="Number", format="Time", inherit="no")]
+    [Style(name="headerTextAlign", type="String", inherit="no")]
+
+    public class MultiPanel extends LayoutContainer {
+
+		[Embed (source="assets/header_close_icon.png")]
+		private static var ICON_CLOSE:Class;
+		
+		[Embed (source="assets/header_open_icon.png")]
+		private static var ICON_OPEN:Class;
+		
+		private static var SPACING_TOP:uint = 10;
+		private static var SPACING_BOTTOM:uint = 5;
+		private var _headerButton:Button = null;
+		private var _openedChanged:Boolean = false;
+		private var _opened:Boolean = true;
+		private var _viewMetrics:EdgeMetrics;
+		private var resize:Resize;
+
+		public function MultiPanel() {
+			super();
+
+			this.verticalScrollPolicy = ScrollPolicy.OFF;
+			this.horizontalScrollPolicy = ScrollPolicy.OFF;
+			
+			addEventListener("PropertyEditorChanged", onPropertyEditorChange);
+ 		}
+
+        protected function createOrReplaceHeaderButton():void {
+           if(_headerButton) {
+                _headerButton.removeEventListener(MouseEvent.CLICK, headerButton_clickHandler);
+                
+                if(rawChildren.contains(_headerButton))
+                    rawChildren.removeChild(_headerButton);
+            }
+            
+       	 	_headerButton = new Button();
+            applyHeaderButtonStyles(_headerButton);
+            _headerButton.addEventListener(MouseEvent.CLICK, headerButton_clickHandler);
+            rawChildren.addChild(_headerButton);
+        }
+
+        protected function applyHeaderButtonStyles(button:Button):void {
+            button.setStyle("textAlign", getStyle("headerTextAlign"));
+           	button.styleName = "multiPanelHeader";
+            button.height = getStyle("headerHeight");
+            button.label = label;
+			
+            if(_opened)
+                button.setStyle('icon', ICON_OPEN);
+            else
+                button.setStyle('icon', ICON_CLOSE);
+        }
+
+        override public function set label(value:String):void {
+            super.label = value;
+            if(_headerButton) _headerButton.label = value;
+        }
+
+        public function get opened():Boolean {
+            return _opened;
+        }
+        
+        [Bindable]
+        public function set opened(value:Boolean):void {
+            var old:Boolean = _opened;
+            
+            _opened = value;
+            _openedChanged = _openedChanged || old != _opened;
+           
+            if(_openedChanged && initialized) {
+                measure();
+               	runResizeEffect();
+                
+                invalidateProperties();
+            }
+        }
+
+        override public function styleChanged(styleProp:String):void {
+            super.styleChanged(styleProp);
+            
+            if(styleProp == "headerTextAlign") {
+                applyHeaderButtonStyles(_headerButton);
+            }
+            
+            invalidateDisplayList();
+        }
+
+        override protected function createChildren():void {
+            super.createChildren();
+         
+            createOrReplaceHeaderButton();
+        }
+
+        override protected function commitProperties():void {
+			super.commitProperties();
+						
+            if(_openedChanged) {
+                if(_opened)
+                    _headerButton.setStyle('icon', ICON_OPEN);
+                else
+                    _headerButton.setStyle('icon', ICON_CLOSE);
+                
+                _openedChanged = false;
+            }
+        }
+
+        override protected function updateDisplayList(w:Number, h:Number):void {
+            super.updateDisplayList(w, h);
+            
+			_headerButton.move(0,0);
+			_headerButton.setActualSize(w, _headerButton.getExplicitOrMeasuredHeight());
+        }
+
+		override public function get viewMetrics():EdgeMetrics {
+	        if (!_viewMetrics)
+	            _viewMetrics = new EdgeMetrics(0, 0, 0, 0);
+	        
+	        var edgeMetrics:EdgeMetrics = _viewMetrics;
+	        var parentEdgeMetrics:EdgeMetrics = super.viewMetrics;
+	        
+	        edgeMetrics.left = parentEdgeMetrics.left;
+	        edgeMetrics.top = parentEdgeMetrics.top + SPACING_TOP;
+	        edgeMetrics.right = parentEdgeMetrics.right;
+	        edgeMetrics.bottom = parentEdgeMetrics.bottom + SPACING_BOTTOM;
+	        
+	        var headerHeight:Number = _headerButton.getExplicitOrMeasuredHeight();
+	        if (!isNaN(headerHeight)) {
+	        	edgeMetrics.top += headerHeight;
+	        }
+
+	        return edgeMetrics;
+    	}
+
+        override protected function measure():void {
+            super.measure();
+            
+            if(!_opened) {
+            	//only the height of the header button
+            	measuredHeight = _headerButton.getExplicitOrMeasuredHeight();
+            }
+        }
+		
+        protected function runResizeEffect():void {
+			if(resize && resize.isPlaying)
+				resize.end();
+			
+            var duration:Number = _opened ? getStyle("openDuration") : getStyle("closeDuration");
+            if(duration == 0) { 
+            	this.setActualSize(getExplicitOrMeasuredWidth(), measuredHeight);
+            	
+            	invalidateSize();
+            	invalidateDisplayList();
+            }
+            else {
+	            resize = new Resize(this);
+	            resize.heightTo = Math.min(maxHeight, measuredHeight);
+	            resize.duration = duration;
+	            resize.play();
+	        }
+	    }
+
+        protected function headerButton_clickHandler(event:MouseEvent):void {
+            opened = !_opened;
+        }
+ 		
+ 		private function onPropertyEditorChange(event:Event):void {
+ 			// Make sure that the panel exists and is open before doing anything
+            if(initialized && _opened) {
+                measure();
+               	runResizeEffect();
+                invalidateProperties();
+            }
+ 		}
+     }
+}

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanel.as
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanelHeaderSkin.as
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanelHeaderSkin.as?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanelHeaderSkin.as (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanelHeaderSkin.as Sat Aug 23 08:47:51 2014
@@ -0,0 +1,58 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui
+{
+	import mx.skins.RectangularBorder;
+	import mx.utils.GraphicsUtil;
+	import flash.display.LineScaleMode;
+	import flash.display.CapsStyle;
+
+	public class MultiPanelHeaderSkin extends RectangularBorder
+	{
+		public function MultiPanelHeaderSkin()
+		{
+			super();
+		}
+		
+		override protected function updateDisplayList(w:Number, h:Number):void
+		{
+			super.updateDisplayList(w, h);
+			
+			var fillColors:Array = [0x000000, 0x000000];
+			var fillAlphas:Array = [1.0, 1.0];
+			var borderColor:uint = 0x2A2A2A;
+			var borderAlpha:Number = 1.0;
+			
+ 			if (getStyle("fillColors") != undefined)
+				fillColors = getStyle("fillColors");
+ 			if (getStyle("fillAlphas") != undefined)
+				fillAlphas = getStyle("fillAlphas");
+ 			if (getStyle("borderColor") != undefined)
+				borderColor = getStyle("borderColor");
+ 			if (getStyle("borderAlpha") != undefined)
+				borderAlpha = getStyle("borderAlpha");
+
+			graphics.clear();
+			drawRoundRect(0,0,w, h, null, fillColors, fillAlphas, verticalGradientMatrix(0,0,w,h));
+			graphics.lineStyle(1, borderColor, borderAlpha, true, LineScaleMode.NONE, CapsStyle.SQUARE);
+			graphics.drawRect(0, 0, w-1, h);
+		}
+	}
+}
\ No newline at end of file

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/MultiPanelHeaderSkin.as
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/PanelWithEdgeBars.as
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/PanelWithEdgeBars.as?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/PanelWithEdgeBars.as (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/PanelWithEdgeBars.as Sat Aug 23 08:47:51 2014
@@ -0,0 +1,266 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui
+{
+	import flash.geom.Rectangle;
+	
+	import mx.binding.utils.*;
+	import mx.containers.Canvas;
+	import mx.core.UIComponent;
+	import mx.events.ResizeEvent;
+
+	public class PanelWithEdgeBars extends Canvas
+	{
+		public function PanelWithEdgeBars()
+		{
+			super();
+			addEventListener(ResizeEvent.RESIZE, onResize);
+		}
+		
+		public function set mainPanel(inPanel:UIComponent):void
+		{
+			if (mMainPanel == null)
+			{
+				mMainPanel = inPanel;
+				ArrangeContents();
+			}
+			else if (mMainPanel != inPanel)
+				throw new Error("Can't set main panel more than once.");
+		}
+		
+		public function get mainPanel():UIComponent
+		{
+			return mMainPanel;
+		}
+		
+		public function set topBar(inBar:UIComponent):void
+		{
+			if (mTopBar == null && inBar != null)
+			{
+				mTopBar = inBar;
+				ArrangeContents();
+				var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(includeInLayoutChanged, mTopBar, "includeInLayout");
+			}
+			else if (mTopBar != inBar)
+				throw new Error("Can't set any edge bar more than once.");
+		}
+		
+		public function get topBar():UIComponent
+		{
+			return mTopBar;
+		}
+		
+		public function set rightBar(inBar:UIComponent):void
+		{
+			if (mRightBar == null && inBar != null)
+			{
+				mRightBar = inBar;
+				ArrangeContents();
+				var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(includeInLayoutChanged, mRightBar, "includeInLayout");
+			}
+			else if (mRightBar != inBar)
+				throw new Error("Can't set any edge bar more than once.");
+		}
+		
+		public function get rightBar():UIComponent
+		{
+			return mRightBar;
+		}
+		
+		public function set bottomBar(inBar:UIComponent):void
+		{
+			if (mBottomBar == null && inBar != null)
+			{
+				mBottomBar = inBar;
+				ArrangeContents();
+				var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(includeInLayoutChanged, mBottomBar, "includeInLayout");
+			}
+			else if (mBottomBar != inBar)
+				throw new Error("Can't set any edge bar more than once.");
+		}
+		
+		public function get bottomBar():UIComponent
+		{
+			return mBottomBar;
+		}
+
+		public function set leftBar(inBar:UIComponent):void
+		{
+			if (mLeftBar == null && inBar != null)
+			{
+				mLeftBar = inBar;
+				ArrangeContents();
+				var watcherSetter:ChangeWatcher = BindingUtils.bindSetter(includeInLayoutChanged, mLeftBar, "includeInLayout");
+			}
+			else if (mLeftBar != inBar)
+				throw new Error("Can't set any edge bar more than once.");
+		}
+		
+		public function get leftBar():UIComponent
+		{
+			return mLeftBar;
+		}
+		
+		public function set edgeInset(inInset:Number):void
+		{
+			mEdgeInset = inInset;
+			ArrangeContents();
+		}
+		
+		public function get edgeInset():Number
+		{
+			return mEdgeInset;
+		}
+		
+		public function set gap(inGap:Number):void
+		{
+			mGap = inGap;
+			ArrangeContents();
+		}
+		
+		public function get gap():Number
+		{
+			return mGap;
+		}
+		
+		public function set leftInset(inInset:Number):void
+		{
+			mLeftInset = inInset;
+			ArrangeContents();
+		}
+		
+		public function get leftInset():Number
+		{
+			return mLeftInset;
+		}
+		
+		public function set topInset(inInset:Number):void
+		{
+			mTopInset = inInset;
+			ArrangeContents();
+		}
+		
+		public function get topInset():Number
+		{
+			return mTopInset;
+		}
+		
+		public function set rightInset(inInset:Number):void
+		{
+			mRightInset = inInset;
+			ArrangeContents();
+		}
+		
+		public function get rightInset():Number
+		{
+			return mRightInset;
+		}
+		
+		public function set bottomInset(inInset:Number):void
+		{
+			mBottomInset = inInset;
+			ArrangeContents();
+		}
+		
+		public function get bottomInset():Number
+		{
+			return mBottomInset;
+		}
+		
+		private function onResize(evt:ResizeEvent):void
+		{
+			ArrangeContents();
+		}
+		
+		private function includeInLayoutChanged(val:Boolean):void {
+		    ArrangeContents();
+		}
+            
+		private function ArrangeContents():void
+		{
+			var space:Rectangle = new Rectangle(0, 0, width, height);
+			for (var i:int = numChildren - 1; i >= 0; --i)
+			{
+				var child:UIComponent = getChildAt(i) as UIComponent;
+				if (child && child.includeInLayout)
+				{
+					var inset:Number;
+					if (child == mTopBar)
+					{
+						inset = mTopInset ? mTopInset : mEdgeInset;
+						child.x = space.x;
+						child.width = space.width;
+						child.y = space.y;
+						child.height = inset;
+						space.y += inset + mGap;
+						space.height -= inset + mGap;
+					}
+					else if (child == mRightBar)
+					{
+						inset = mRightInset ? mRightInset : mEdgeInset;
+						child.x = space.right - inset;
+						child.width = inset;
+						child.y = space.y;
+						child.height = space.height;
+						space.width -= inset + mGap;
+					}
+					else if (child == mBottomBar)
+					{
+						inset = mBottomInset ? mBottomInset : mEdgeInset;
+						child.x = space.x;
+						child.width = space.width;
+						child.y = space.bottom - inset;
+						child.height = inset;
+						space.height -= inset + mGap;
+					}
+					if (child == mLeftBar)
+					{
+						inset = mLeftInset ? mLeftInset : mEdgeInset;
+						child.x = space.x;
+						child.width = inset;
+						child.y = space.y;
+						child.height = space.height;
+						space.x += inset + mGap;
+						space.width -= inset + mGap;
+					}
+				}
+			}
+			if (mMainPanel)
+			{
+				mMainPanel.x = space.x;
+				mMainPanel.y = space.y;
+				mMainPanel.width = space.width;
+				mMainPanel.height = space.height;
+			}
+		}
+		
+		private var mTopBar:UIComponent = null;
+		private var mRightBar:UIComponent = null;
+		private var mBottomBar:UIComponent = null;
+		private var mLeftBar:UIComponent = null;
+		private var mMainPanel:UIComponent = null;
+		private var mEdgeInset:Number = 16;
+		private var mLeftInset:Number = 0;
+		private var mRightInset:Number = 0;
+		private var mTopInset:Number = 0;
+		private var mBottomInset:Number = 0;
+		private var mGap:Number = 1;
+	}
+}
\ No newline at end of file

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/PanelWithEdgeBars.as
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/%scroll_arrow_down_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/%25scroll_arrow_down_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/%scroll_arrow_down_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/%scroll_arrow_up_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/%25scroll_arrow_up_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/%scroll_arrow_up_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/combo_drop_down_arrow.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/combo_drop_down_arrow.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/combo_drop_down_arrow.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/header_close_icon.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/header_close_icon.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/header_close_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/header_open_icon.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/header_open_icon.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/header_open_icon.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_down.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_down.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_down.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_down_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_down_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_down_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_up.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_up.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_up.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_up_over.png
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_up_over.png?rev=1619987&view=auto
==============================================================================
Binary file - no diff available.

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/assets/scroll_arrow_up_over.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AdvancedTextPropertyEditor.as
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AdvancedTextPropertyEditor.as?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AdvancedTextPropertyEditor.as (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AdvancedTextPropertyEditor.as Sat Aug 23 08:47:51 2014
@@ -0,0 +1,190 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui.inspectors
+{
+	import flash.text.engine.*;
+	
+	import flashx.textLayout.formats.FormatValue;
+	import flashx.textLayout.formats.TextLayoutFormat;
+	import flashx.textLayout.tlf_internal;
+	use namespace tlf_internal;
+	
+	public class AdvancedTextPropertyEditor extends DynamicTextPropertyEditor
+	{
+		public function AdvancedTextPropertyEditor()
+		{
+			var recipe:XML = 
+				<recipe>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/DigitCase=Digit Case:">
+							<property name={TextInspectorController.DIGIT_CASE_UIPROP}/>
+							<choice display="Default" value={flash.text.engine.DigitCase.DEFAULT}/>
+							<choice display="Lining" value={flash.text.engine.DigitCase.LINING}/>
+							<choice display="Old Style" value={flash.text.engine.DigitCase.OLD_STYLE}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/DigitWidth=Digit Width:">
+							<property name={TextInspectorController.DIGIT_WIDTH_UIPROP}/>
+							<choice display="Default" value={flash.text.engine.DigitWidth.DEFAULT}/>
+							<choice display="Proportional" value={flash.text.engine.DigitWidth.PROPORTIONAL}/>
+							<choice display="Tabular" value={flash.text.engine.DigitWidth.TABULAR}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/DominantBaseline=Dominant Baseline:">
+							<property name={TextInspectorController.DOMINANT_BASELINE_UIPROP}/>
+							<choice display="Auto" value={FormatValue.AUTO}/>
+							<choice display="Roman" value={flash.text.engine.TextBaseline.ROMAN}/>
+							<choice display="Ascent" value={flash.text.engine.TextBaseline.ASCENT}/>
+							<choice display="Descent" value={flash.text.engine.TextBaseline.DESCENT}/>
+							<choice display="Ideographic Top" value={flash.text.engine.TextBaseline.IDEOGRAPHIC_TOP}/>
+							<choice display="Ideographic Center" value={flash.text.engine.TextBaseline.IDEOGRAPHIC_CENTER}/>
+							<choice display="Ideographic Bottom" value={flash.text.engine.TextBaseline.IDEOGRAPHIC_BOTTOM}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/AlignmentBaseline=Alignment Baseline:">
+							<property name={TextInspectorController.ALIGNMENT_BASELINE_UIPROP}/>
+							<choice display="Roman" value={flash.text.engine.TextBaseline.ROMAN}/>
+							<choice display="Ascent" value={flash.text.engine.TextBaseline.ASCENT}/>
+							<choice display="Descent" value={flash.text.engine.TextBaseline.DESCENT}/>
+							<choice display="Ideographic Top" value={flash.text.engine.TextBaseline.IDEOGRAPHIC_TOP}/>
+							<choice display="Ideographic Center" value={flash.text.engine.TextBaseline.IDEOGRAPHIC_CENTER}/>
+							<choice display="Ideographic Bottom" value={flash.text.engine.TextBaseline.IDEOGRAPHIC_BOTTOM}/>
+							<choice display="Use Dominant" value={flash.text.engine.TextBaseline.USE_DOMINANT_BASELINE}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="hotnumberunit" label="$$$/stage/TextEditing/Label/BaselineShift=Baseline Shift:">
+							<property name={TextInspectorController.BASELINE_SHIFT_UIPROP}/>
+							<defaultunit>pix</defaultunit>
+							<numericunit displayname="%" 
+								min={TextLayoutFormat.baselineShiftProperty.minPercentValue}
+								max={TextLayoutFormat.baselineShiftProperty.maxPercentValue} 
+								default="0" 
+								decimals="1"/>
+							<numericunit displayname="pix" 
+								min={TextLayoutFormat.baselineShiftProperty.minNumberValue}
+								max={TextLayoutFormat.baselineShiftProperty.maxNumberValue} 
+								default="0" 
+								decimals="1"/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/Ligatures=Ligatures:">
+							<property name={TextInspectorController.LIGATURE_LEVEL_UIPROP}/>
+							<choice display="Minimum" value={flash.text.engine.LigatureLevel.MINIMUM}/>
+							<choice display="Common" value={flash.text.engine.LigatureLevel.COMMON}/>
+							<choice display="Uncommon" value={flash.text.engine.LigatureLevel.UNCOMMON}/>
+							<choice display="Exotic" value={flash.text.engine.LigatureLevel.EXOTIC}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/Rotation=Rotation:">
+							<property name={TextInspectorController.TEXT_ROTATION_UIPROP}/>
+							<choice display="0 degrees" value={flash.text.engine.TextRotation.ROTATE_0}/>
+							<choice display="90 degrees" value={flash.text.engine.TextRotation.ROTATE_90}/>
+							<choice display="180 degrees" value={flash.text.engine.TextRotation.ROTATE_180}/>
+							<choice display="270 degrees" value={flash.text.engine.TextRotation.ROTATE_270}/>
+							<choice display="auto" value={flash.text.engine.TextRotation.AUTO}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="hotnumber" label="$$$/stage/TextEditing/Label/Alpha=Alpha:" suffix="%">
+							<property name={TextInspectorController.TEXT_ALPHA_UIPROP} 
+								minValue="0" 
+								maxValue="100"
+								convertToPercent="yes"/>
+						</editor>
+					</row>
+					<row>
+						<editor type="hotnumber" label="$$$/stage/TextEditing/Label/BackgroundAlpha=Background alpha:" suffix="%">
+							<property name={TextInspectorController.BACKGROUND_ALPHA_UIPROP} 
+								minValue="0" 
+								maxValue="100"
+								convertToPercent="yes"/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/Break=Break:">
+							<property name={TextInspectorController.BREAK_OPPORTUNITY_UIPROP}/>
+							<choice display="All" value={flash.text.engine.BreakOpportunity.ALL}/>
+							<choice display="Any" value={flash.text.engine.BreakOpportunity.ANY}/>
+							<choice display="Auto" value={flash.text.engine.BreakOpportunity.AUTO}/>
+							<choice display="No Break" value={flash.text.engine.BreakOpportunity.NONE}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/Lacale=Locale:">
+							<property name={TextInspectorController.LOCALE_UIPROP}/>
+							<choice display="Arabic" value="ar"/>,
+							<choice display="Bengali" value="bn"/>,
+							<choice display="Bulgarian" value="bg"/>,
+							<choice display="Catalan" value="ca"/>,
+							<choice display="Chinese, Simplified (China)" value="zh-CN"/>,
+							<choice display="Chinese, Traditional (Taiwan)" value="zh-TW"/>,
+							<choice display="Croatian" value="hr"/>,
+							<choice display="Czech" value="cs"/>,
+							<choice display="Danish" value="da"/>,
+							<choice display="Dutch" value="nl"/>,
+							<choice display="English" value="en"/>,
+							<choice display="Estonian" value="et"/>,
+							<choice display="Finnish" value="fi"/>,
+							<choice display="French" value="fr"/>,
+							<choice display="German" value="de"/>,
+							<choice display="Greek" value="el"/>,
+							<choice display="Gujarati" value="gu"/>,
+							<choice display="Hindi" value="hi"/>,
+							<choice display="Hebrew" value="he"/>,
+							<choice display="Hungarian" value="hu"/>,
+							<choice display="Italian" value="it"/>,
+							<choice display="Japanese" value="ja"/>,
+							<choice display="Korean" value="ko"/>,
+							<choice display="Latvian" value="lv"/>,
+							<choice display="Lithuanian" value="lt"/>,
+							<choice display="Marathi" value="mr"/>,
+							<choice display="Norwegian" value="no"/>,
+							<choice display="Persian" value="fa"/>,
+							<choice display="Polish" value="pl"/>,
+							<choice display="Portuguese" value="pt"/>,
+							<choice display="Punjabi" value="pa"/>,
+							<choice display="Romanian" value="ro"/>,
+							<choice display="Russian" value="ru"/>,
+							<choice display="Slovak" value="sk"/>,
+							<choice display="Slovenian" value="sl"/>,
+							<choice display="Spanish" value="es"/>,
+							<choice display="Swedish" value="sv"/>,
+							<choice display="Tamil" value="ta"/>,
+							<choice display="Telugu" value="te"/>,
+							<choice display="Thai" value="th"/>,
+							<choice display="Turkish" value="tr"/>,
+							<choice display="Ukrainian" value="uk"/>,
+							<choice display="Urdu" value="ur"/>,
+							<choice display="Vietnamese" value="vi"/>
+						</editor>
+					</row>
+				</recipe>;
+
+			super(recipe);
+		}
+		
+	}
+}
\ No newline at end of file

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AdvancedTextPropertyEditor.as
------------------------------------------------------------------------------
    svn:eol-style = native

Added: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AntiAliasPropertyEditor.as
URL: http://svn.apache.org/viewvc/flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AntiAliasPropertyEditor.as?rev=1619987&view=auto
==============================================================================
--- flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AntiAliasPropertyEditor.as (added)
+++ flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AntiAliasPropertyEditor.as Sat Aug 23 08:47:51 2014
@@ -0,0 +1,51 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 flashx.textLayout.ui.inspectors
+{
+	import flash.text.AntiAliasType;
+	import flash.text.engine.CFFHinting;
+	import flash.text.engine.RenderingMode;
+
+	public class AntiAliasPropertyEditor extends DynamicTextPropertyEditor
+	{
+		public function AntiAliasPropertyEditor()
+		{
+			var recipe:XML = 
+				<recipe>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/Antialias=Antialias:">
+							<property name={TextInspectorController.RENDERING_MODE_UIPROP}/>
+							<choice display="Normal" value={flash.text.engine.RenderingMode.NORMAL}/>
+							<choice display="CFF" value={flash.text.engine.RenderingMode.CFF}/>
+						</editor>
+					</row>
+					<row>
+						<editor type="combo" label="$$$/stage/TextEditing/Label/GridFit=Grid Fit:">
+							<property name={TextInspectorController.CFF_HINTING_UIPROP}/>
+							<choice display="None" value={flash.text.engine.CFFHinting.NONE}/>
+							<choice display="Horizontal stem" value={flash.text.engine.CFFHinting.HORIZONTAL_STEM}/>
+						</editor>
+					</row>
+				</recipe>;
+			super(recipe);
+		}
+		
+	}
+}
\ No newline at end of file

Propchange: flex/site/trunk/content/tourdeflex/spark/tlf/flashx/textLayout/ui/inspectors/AntiAliasPropertyEditor.as
------------------------------------------------------------------------------
    svn:eol-style = native