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/12/20 00:35:36 UTC

[4/6] git commit: [flex-examples] [refs/heads/develop] - Remove redundant Android skins (it now comes with the 4.14 SDK)

Remove redundant Android skins (it now comes with the 4.14 SDK)


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

Branch: refs/heads/develop
Commit: 8ccec1f59b749e246aa509e1cd5013ed9a1f2ce1
Parents: eb3b97a
Author: OmPrakash Muppirala <bi...@gmail.com>
Authored: Fri Dec 19 15:32:23 2014 -0800
Committer: OmPrakash Muppirala <bi...@gmail.com>
Committed: Fri Dec 19 15:32:23 2014 -0800

----------------------------------------------------------------------
 .../src/spark/skins/android4/ActionBarSkin.as   | 725 ---------------
 .../skins/android4/ButtonBarFirstButtonSkin.as  |  93 --
 .../skins/android4/ButtonBarMiddleButtonSkin.as |  95 --
 .../src/spark/skins/android4/ButtonBarSkin.as   | 166 ----
 .../src/spark/skins/android4/ButtonSkin.as      | 397 ---------
 .../src/spark/skins/android4/CalloutSkin.as     | 825 -----------------
 .../src/spark/skins/android4/CheckBoxSkin.as    | 268 ------
 .../src/spark/skins/android4/DateSpinnerSkin.as | 153 ----
 .../src/spark/skins/android4/HScrollBarSkin.as  | 205 -----
 .../spark/skins/android4/HScrollBarThumbSkin.as | 169 ----
 .../src/spark/skins/android4/HSliderSkin.as     | 293 ------
 .../spark/skins/android4/HSliderThumbSkin.as    | 333 -------
 .../spark/skins/android4/HSliderTrackSkin.as    | 227 -----
 .../src/spark/skins/android4/ListSkin.as        | 204 -----
 .../src/spark/skins/android4/RadioButtonSkin.as | 253 ------
 .../skins/android4/SpinnerListContainerSkin.as  | 327 -------
 .../skins/android4/SpinnerListScrollerSkin.mxml |  94 --
 .../src/spark/skins/android4/SpinnerListSkin.as | 293 ------
 .../skins/android4/SplitViewNavigatorSkin.as    | 157 ----
 .../android4/TabbedViewNavigatorTabBarSkin.as   | 122 ---
 .../skins/android4/TextAreaHScrollBarSkin.as    | 105 ---
 .../android4/TextAreaHScrollBarThumbSkin.as     | 116 ---
 .../src/spark/skins/android4/TextAreaSkin.as    | 892 -------------------
 .../skins/android4/TextAreaVScrollBarSkin.as    | 105 ---
 .../android4/TextAreaVScrollBarThumbSkin.as     | 117 ---
 .../src/spark/skins/android4/TextInputSkin.as   | 375 --------
 .../spark/skins/android4/ToggleSwitchSkin.as    | 506 -----------
 .../android4/TransparentNavigationButtonSkin.as | 109 ---
 .../src/spark/skins/android4/VScrollBarSkin.as  | 207 -----
 .../spark/skins/android4/VScrollBarThumbSkin.as | 178 ----
 .../spark/skins/android4/ViewMenuItemSkin.as    | 238 -----
 .../src/spark/skins/android4/ViewMenuSkin.mxml  | 184 ----
 .../android4/supportClasses/CalloutArrow.as     | 457 ----------
 .../supportClasses/StageTextSkinBase.as         | 402 ---------
 .../android4/supportClasses/TextSkinBase.as     | 213 -----
 35 files changed, 9603 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/ActionBarSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/ActionBarSkin.as b/tourdeflexmobile/src/spark/skins/android4/ActionBarSkin.as
deleted file mode 100644
index f1ef220..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/ActionBarSkin.as
+++ /dev/null
@@ -1,725 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-	import flash.display.GradientType;
-	import flash.events.Event;
-	import flash.text.TextFormatAlign;
-	
-	import mx.core.DPIClassification;
-	import mx.core.mx_internal;
-	import mx.utils.ColorUtil;
-	
-	import spark.components.ActionBar;
-	import spark.components.Group;
-	import spark.components.supportClasses.StyleableTextField;
-	import spark.core.SpriteVisualElement;
-	import spark.layouts.HorizontalAlign;
-	import spark.layouts.HorizontalLayout;
-	import spark.layouts.VerticalAlign;
-	import spark.skins.android4.assets.ActionBarBackground;
-	import spark.skins.mobile.supportClasses.MobileSkin;
-	
-	use namespace mx_internal;
-	
-	/**
-	 *  The default skin class for the Spark ActionBar component in mobile
-	 *  applications.
-	 *  
-	 *  @see spark.components.ActionBar
-	 *  @see spark.skins.mobile.TransparentNavigationButtonSkin
-	 *  @see spark.skins.mobile.BeveledBackButtonSkin
-	 *  @see spark.skins.mobile.TransparentActionButtonSkin
-	 *  @see spark.skins.mobile.BeveledActionButtonSkin
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion AIR 2.5
-	 *  @productversion Flex 4.5
-	 */
-	public class ActionBarSkin extends MobileSkin
-	{
-		//--------------------------------------------------------------------------
-		//
-		//  Class constants
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @private
-		 */
-		mx_internal static const ACTIONBAR_CHROME_COLOR_RATIOS:Array = [0, 80];
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Constructor
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  Constructor.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 2.5
-		 *  @productversion Flex 4.5
-		 */
-		public function ActionBarSkin()
-		{
-			super();
-			
-			borderClass = spark.skins.android4.assets.ActionBarBackground;
-			
-			switch (applicationDPI)
-			{
-				
-				case DPIClassification.DPI_640:
-				{
-					borderSize = 2;
-					layoutContentGroupHeight = 172;
-					layoutTitleGroupHorizontalPadding = 52;
-					
-					break;
-				}
-				case DPIClassification.DPI_480:
-				{
-					borderSize = 2;
-					layoutContentGroupHeight = 130;
-					layoutTitleGroupHorizontalPadding = 40;
-					
-					
-					break;
-				}
-				case DPIClassification.DPI_320:
-				{
-					borderSize = 2;
-					layoutContentGroupHeight = 86;
-					layoutTitleGroupHorizontalPadding = 26;
-					
-					break;
-				}
-				case DPIClassification.DPI_240:
-				{
-					borderSize = 1;
-					layoutContentGroupHeight = 65;
-					layoutTitleGroupHorizontalPadding = 20;
-					
-					break;
-				}
-				case DPIClassification.DPI_120:
-				{
-					borderSize = 1;
-					layoutContentGroupHeight = 32;
-					layoutTitleGroupHorizontalPadding = 10;
-					
-					break;
-				}	
-				default:
-				{
-					// default DPI_160
-					borderSize = 1;
-					layoutContentGroupHeight = 43;
-					layoutTitleGroupHorizontalPadding = 13;
-					
-					break;
-				}
-			}
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Graphics variables
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  FXG Class reference for the ActionBar background border graphic.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion AIR 2.5
-		 *  @productversion Flex 4.5
-		 */
-		protected var borderClass:Class;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Layout variables
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @private
-		 */
-		private var borderSize:uint;
-		
-		/**
-		 *  Default height for navigationGroup, titleGroup and actionGroup.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion AIR 2.5
-		 *  @productversion Flex 4.5
-		 */
-		protected var layoutContentGroupHeight:uint;
-		
-		/**
-		 *  Default horizontal padding for the titleGroup and titleDisplay.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion AIR 2.5
-		 *  @productversion Flex 4.5
-		 */
-		protected var layoutTitleGroupHorizontalPadding:uint;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Variables
-		//
-		//--------------------------------------------------------------------------
-		
-		/** 
-		 *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-		 */
-		public var hostComponent:ActionBar;
-		
-		/**
-		 *  @private
-		 */
-		private var _navigationVisible:Boolean = false;
-		
-		/**
-		 *  @private
-		 */
-		private var _titleContentVisible:Boolean = false;
-		
-		/**
-		 *  @private
-		 */
-		private var _actionVisible:Boolean = false;
-		
-		/**
-		 *  @private
-		 */
-		private var border:SpriteVisualElement;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Skin parts
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @copy spark.components.ActionBar#navigationGroup
-		 */
-		public var navigationGroup:Group;
-		
-		/**
-		 *  @copy spark.components.ActionBar#titleGroup
-		 */
-		public var titleGroup:Group;
-		
-		/**
-		 *  @copy spark.components.ActionBar#actionGroup
-		 */
-		public var actionGroup:Group;
-		
-		/**
-		 *  @copy spark.components.ActionBar#titleDisplay
-		 * 
-		 *  @private
-		 *  Wraps a StyleableTextField in a UIComponent to be compatible with
-		 *  ViewTransition effects.
-		 */
-		public var titleDisplay:TitleDisplayComponent;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden methods
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @private
-		 */
-		override protected function createChildren():void
-		{
-			if (borderClass)
-			{
-				border = new borderClass();
-				addChild(border);
-			}
-			
-			navigationGroup = new Group();
-			var hLayout:HorizontalLayout = new HorizontalLayout();
-			hLayout.horizontalAlign = HorizontalAlign.LEFT;
-			hLayout.verticalAlign = VerticalAlign.MIDDLE;
-			hLayout.gap = 0;
-			hLayout.paddingLeft = hLayout.paddingTop = hLayout.paddingRight =  hLayout.paddingBottom = 0;
-			navigationGroup.layout = hLayout;
-			navigationGroup.id = "navigationGroup";
-			
-			titleGroup = new Group();
-			hLayout = new HorizontalLayout();
-			hLayout.horizontalAlign = HorizontalAlign.LEFT;
-			hLayout.verticalAlign = VerticalAlign.MIDDLE;
-			hLayout.gap = 0;
-			hLayout.paddingLeft = hLayout.paddingRight = layoutTitleGroupHorizontalPadding; 
-			hLayout.paddingTop = hLayout.paddingBottom = 0;
-			titleGroup.layout = hLayout;
-			titleGroup.id = "titleGroup";
-			
-			actionGroup = new Group();
-			hLayout = new HorizontalLayout();
-			hLayout.horizontalAlign = HorizontalAlign.RIGHT;
-			hLayout.verticalAlign = VerticalAlign.MIDDLE;
-			hLayout.gap = 0;
-			hLayout.paddingLeft = hLayout.paddingTop = hLayout.paddingRight =  hLayout.paddingBottom = 0;
-			actionGroup.layout = hLayout;
-			actionGroup.id = "actionGroup";
-			
-			titleDisplay = new TitleDisplayComponent();
-			titleDisplay.id = "titleDisplay";
-			
-			// initialize titleAlign style (center is managed explicitly in layoutContents)
-			var titleAlign:String = getStyle("titleAlign");
-			titleAlign = (titleAlign == "center") ? TextFormatAlign.LEFT : titleAlign;
-			titleDisplay.setStyle("textAlign", titleAlign);
-			
-			addChild(navigationGroup);
-			addChild(titleGroup);
-			addChild(actionGroup);
-			addChild(titleDisplay);
-		}
-		
-		/**
-		 *  @private
-		 */
-		override protected function measure():void
-		{
-			var titleWidth:Number = 0;
-			var titleHeight:Number = 0;
-			
-			if (_titleContentVisible)
-			{
-				titleWidth = titleGroup.getPreferredBoundsWidth();
-				titleHeight = titleGroup.getPreferredBoundsHeight();
-			}
-			else
-			{
-				// use titleLayout for paddingLeft and paddingRight
-				var layoutObject:Object = hostComponent.titleLayout;
-				titleWidth = ((layoutObject.paddingLeft) ? Number(layoutObject.paddingLeft) : 0)
-					+ ((layoutObject.paddingRight) ? Number(layoutObject.paddingRight) : 0)
-					+ titleDisplay.getPreferredBoundsWidth();
-				
-				titleHeight = titleDisplay.getPreferredBoundsHeight();
-			}
-			
-			measuredWidth =
-				getStyle("paddingLeft")
-				+ navigationGroup.getPreferredBoundsWidth()
-				+ titleWidth
-				+ actionGroup.getPreferredBoundsWidth()
-				+ getStyle("paddingRight");
-			
-			// measuredHeight is contentGroupHeight, 2x border on top and bottom
-			measuredHeight =
-				getStyle("paddingTop")
-				+ Math.max(layoutContentGroupHeight,
-					navigationGroup.getPreferredBoundsHeight(), 
-					actionGroup.getPreferredBoundsHeight(),
-					titleHeight)
-				+ getStyle("paddingBottom");
-		}
-		
-		/**
-		 *  @private
-		 */
-		override protected function commitCurrentState():void
-		{
-			super.commitCurrentState();
-			
-			_titleContentVisible = currentState.indexOf("titleContent") >= 0;
-			_navigationVisible = currentState.indexOf("Navigation") >= 0;
-			_actionVisible = currentState.indexOf("Action") >= 0;
-			
-			invalidateSize();
-			invalidateDisplayList();
-		}
-		
-		/**
-		 *  @private
-		 */
-		override public function styleChanged(styleProp:String):void
-		{
-			if (titleDisplay)
-			{
-				var allStyles:Boolean = !styleProp || styleProp == "styleName";
-				
-				if (allStyles || (styleProp == "titleAlign"))
-				{
-					var titleAlign:String = getStyle("titleAlign");
-					
-					if (titleAlign == "center")
-					{ 
-						// If the title align is set to center, the alignment is set to LEFT
-						// so that the skin can manually center the component in layoutContents
-						titleDisplay.setStyle("textAlign", TextFormatAlign.LEFT);
-					}
-					else
-					{
-						titleDisplay.setStyle("textAlign", titleAlign);
-					}
-				}
-			}
-			
-			super.styleChanged(styleProp);
-		}
-		
-		/**
-		 *  @private
-		 */
-		override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			super.layoutContents(unscaledWidth, unscaledHeight);
-			
-			var navigationGroupWidth:Number = 0;
-			
-			var paddingLeft:Number   = getStyle("paddingLeft"); 
-			var paddingRight:Number  = getStyle("paddingRight");
-			var paddingTop:Number    = getStyle("paddingTop");
-			var paddingBottom:Number = getStyle("paddingBottom");
-			
-			var titleCompX:Number = paddingLeft;
-			var titleCompWidth:Number = 0;
-			
-			var actionGroupX:Number = unscaledWidth;
-			var actionGroupWidth:Number = 0;
-			
-			// remove top and bottom padding from content group height
-			var contentGroupsHeight:Number = Math.max(0, unscaledHeight - paddingTop - paddingBottom);
-			
-			if (border)
-			{
-				// FXG uses scale-9, drop shadow is drawn outside the bounds
-				setElementSize(border, unscaledWidth, unscaledHeight);
-			}
-			
-			// position groups, overlap of navigation and action groups is allowed
-			// when overlap occurs, titleDisplay/titleGroup is not visible
-			if (_navigationVisible)
-			{
-				navigationGroupWidth = navigationGroup.getPreferredBoundsWidth();
-				titleCompX += navigationGroupWidth;
-				
-				setElementSize(navigationGroup, navigationGroupWidth, contentGroupsHeight);
-				setElementPosition(navigationGroup, paddingLeft, paddingTop);
-			}
-			
-			if (_actionVisible)
-			{
-				// actionGroup x position can be negative
-				actionGroupWidth = actionGroup.getPreferredBoundsWidth();
-				actionGroupX = unscaledWidth - actionGroupWidth - paddingRight;
-				
-				setElementSize(actionGroup, actionGroupWidth, contentGroupsHeight);
-				setElementPosition(actionGroup, actionGroupX, paddingTop);
-			}
-			
-			// titleGroup or titleDisplay is given remaining width after navigation
-			// and action groups preferred widths
-			titleCompWidth = unscaledWidth - navigationGroupWidth - actionGroupWidth
-				- paddingLeft - paddingRight;
-			
-			if (titleCompWidth <= 0)
-			{
-				titleDisplay.visible = false;
-				titleGroup.visible = false;
-			}
-			else if (_titleContentVisible)
-			{
-				titleDisplay.visible = false;
-				titleGroup.visible = true;
-				
-				// use titleGroup for titleContent
-				setElementSize(titleGroup, titleCompWidth, contentGroupsHeight);
-				setElementPosition(titleGroup, titleCompX, paddingTop);
-			}
-			else
-			{
-				// use titleDisplay for title text label
-				titleGroup.visible = false;
-				
-				// use titleLayout for paddingLeft and paddingRight
-				var layoutObject:Object = hostComponent.titleLayout;
-				var titlePaddingLeft:Number = (layoutObject.paddingLeft) ? Number(layoutObject.paddingLeft) : 0;
-				var titlePaddingRight:Number = (layoutObject.paddingRight) ? Number(layoutObject.paddingRight) : 0;
-				
-				// align titleDisplay to the absolute center
-				var titleAlign:String = getStyle("titleAlign");
-				
-				// check for available width after padding
-				if ((titleCompWidth - titlePaddingLeft - titlePaddingRight) <= 0)
-				{
-					titleCompX = 0;
-					titleCompWidth = 0;
-				}
-				else if (titleAlign == "center")
-				{ 
-					// use LEFT instead of CENTER
-					titleCompWidth = titleDisplay.getExplicitOrMeasuredWidth();
-					
-					// use x position of titleDisplay to implement CENTER
-					titleCompX = Math.round((unscaledWidth - titleCompWidth) / 2); 
-					
-					var navigationOverlap:Number = navigationGroupWidth + titlePaddingLeft - titleCompX;
-					var actionOverlap:Number = (titleCompX + titleCompWidth + titlePaddingRight) - actionGroupX;
-					
-					// shrink and/or move titleDisplay width if there is any
-					// overlap after centering
-					if ((navigationOverlap > 0) && (actionOverlap > 0))
-					{
-						// remaining width
-						titleCompX = navigationGroupWidth + titlePaddingLeft;
-						titleCompWidth = unscaledWidth - navigationGroupWidth - actionGroupWidth - titlePaddingLeft - titlePaddingRight;
-					}
-					else if ((navigationOverlap > 0) || (actionOverlap > 0))
-					{
-						if (navigationOverlap > 0)
-						{
-							// nudge to the right
-							titleCompX += navigationOverlap;
-						}
-						else if (actionOverlap > 0)
-						{
-							// nudge to the left
-							titleCompX -= actionOverlap;
-							
-							// force left padding
-							if (titleCompX < (navigationGroupWidth + titlePaddingLeft))
-								titleCompX = navigationGroupWidth + titlePaddingLeft;
-						}
-						
-						// recompute action overlap and force right padding
-						actionOverlap = (titleCompX + titleCompWidth + titlePaddingRight) - actionGroupX;
-						
-						if (actionOverlap > 0)
-							titleCompWidth -= actionOverlap;
-					}
-				}
-				else
-				{
-					// implement padding by adjusting width and position
-					titleCompX += titlePaddingLeft;
-					titleCompWidth = titleCompWidth - titlePaddingLeft - titlePaddingRight;
-				}
-				
-				// check for negative width
-				titleCompWidth = (titleCompWidth < 0) ? 0 : titleCompWidth;
-				
-				setElementSize(titleDisplay, titleCompWidth, contentGroupsHeight);
-				setElementPosition(titleDisplay, titleCompX, paddingTop);
-				
-				titleDisplay.visible = true;
-			}
-		}
-		
-		/**
-		 *  @private
-		 */
-		override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			super.drawBackground(unscaledWidth, unscaledHeight);
-			
-			var chromeColor:uint = getStyle("chromeColor");
-			var backgroundAlphaValue:Number = getStyle("backgroundAlpha");
-			var colors:Array = [];
-			
-			// apply alpha to chromeColor fill only
-			var backgroundAlphas:Array = [backgroundAlphaValue, backgroundAlphaValue];
-			
-			// exclude top and bottom 1px borders
-			colorMatrix.createGradientBox(unscaledWidth, unscaledHeight - (borderSize * 2), Math.PI / 2, 0, 0);
-			
-			colors[0] = ColorUtil.adjustBrightness2(chromeColor, 20);
-			colors[1] = chromeColor;
-			
-			graphics.beginGradientFill(GradientType.LINEAR, colors, backgroundAlphas, ACTIONBAR_CHROME_COLOR_RATIOS, colorMatrix);
-			graphics.drawRect(0, borderSize, unscaledWidth, unscaledHeight - (borderSize * 2));
-			graphics.endFill();
-		}
-		
-	}
-}
-import flash.events.Event;
-
-import mx.core.UIComponent;
-import mx.core.mx_internal;
-import mx.events.FlexEvent;
-
-import spark.components.supportClasses.StyleableTextField;
-import spark.core.IDisplayText;
-
-use namespace mx_internal;
-
-/**
- *  @private
- *  Component that holds StyleableTextFields to produce a drop shadow effect.
- *  Combines label and shadow into a single component to allow transitions to
- *  target them both.
- */
-class TitleDisplayComponent extends UIComponent implements IDisplayText
-{
-	private var titleDisplay:StyleableTextField;
-	private var titleDisplayShadow:StyleableTextField;
-	private var title:String;
-	private var titleChanged:Boolean;
-	
-	public function TitleDisplayComponent()
-	{
-		super();
-		title = "";
-	}
-	
-	override public function get baselinePosition():Number
-	{
-		return titleDisplay.baselinePosition;
-	}
-	
-	/**
-	 *  @private
-	 */
-	override protected function createChildren():void
-	{
-		super.createChildren();
-		
-		titleDisplay = StyleableTextField(createInFontContext(StyleableTextField));
-		titleDisplay.styleName = this;
-		titleDisplay.editable = false;
-		titleDisplay.selectable = false;
-		titleDisplay.multiline = false;
-		titleDisplay.wordWrap = false;
-		titleDisplay.addEventListener(FlexEvent.VALUE_COMMIT,
-			titleDisplay_valueCommitHandler);
-		
-		titleDisplayShadow =
-			StyleableTextField(createInFontContext(StyleableTextField));
-		titleDisplayShadow.styleName = this;
-		titleDisplayShadow.colorName = "textShadowColor";
-		titleDisplayShadow.editable = false;
-		titleDisplayShadow.selectable = false;
-		titleDisplayShadow.multiline = false;
-		titleDisplayShadow.wordWrap = false;
-		
-		addChild(titleDisplayShadow);
-		addChild(titleDisplay);
-	}
-	
-	/**
-	 *  @private
-	 */
-	override protected function commitProperties():void
-	{
-		super.commitProperties();
-		
-		if (titleChanged)
-		{
-			titleDisplay.text = title;
-			
-			invalidateSize();
-			invalidateDisplayList();
-			
-			titleChanged = false;
-		}
-	}
-	
-	/**
-	 *  @private
-	 */
-	override protected function measure():void
-	{
-		// reset text if it was truncated before.
-		if (titleDisplay.isTruncated)
-			titleDisplay.text = title;
-		
-		measuredWidth = titleDisplay.getPreferredBoundsWidth();
-		
-		// tightTextHeight
-		measuredHeight = titleDisplay.getPreferredBoundsHeight();
-	}
-	
-	/**
-	 *  @private
-	 */
-	override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
-	{
-		super.updateDisplayList(unscaledWidth, unscaledHeight);
-		
-		// reset text if it was truncated before.
-		if (titleDisplay.isTruncated)
-			titleDisplay.text = title;
-		titleDisplay.commitStyles();
-		
-		// use preferred height, setLayoutBoundsSize will accommodate for tight
-		// text adjustment
-		var tightHeight:Number = titleDisplay.getPreferredBoundsHeight();
-		var tightY:Number = (unscaledHeight - tightHeight) / 2;
-		
-		titleDisplay.setLayoutBoundsSize(unscaledWidth, tightHeight);
-		titleDisplay.setLayoutBoundsPosition(0, (unscaledHeight - tightHeight) / 2);
-		
-		// now truncate the text
-		titleDisplay.truncateToFit();
-		
-		titleDisplayShadow.commitStyles();
-		titleDisplayShadow.setLayoutBoundsSize(unscaledWidth, tightHeight);
-		titleDisplayShadow.setLayoutBoundsPosition(0, tightY + 1);
-		
-		titleDisplayShadow.alpha = getStyle("textShadowAlpha");
-		
-		// if labelDisplay is truncated, then push it down here as well.
-		// otherwise, it would have gotten pushed in the labelDisplay_valueCommitHandler()
-		if (titleDisplay.isTruncated)
-			titleDisplayShadow.text = titleDisplay.text;
-	}
-	
-	/**
-	 *  @private 
-	 */ 
-	private function titleDisplay_valueCommitHandler(event:Event):void 
-	{
-		titleDisplayShadow.text = titleDisplay.text;
-	}
-	
-	public function get text():String
-	{
-		return title;
-	}
-	
-	public function set text(value:String):void
-	{
-		title = value;
-		titleChanged = true;
-		
-		invalidateProperties();
-	}
-	
-	public function get isTruncated():Boolean
-	{
-		return titleDisplay.isTruncated;
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/ButtonBarFirstButtonSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/ButtonBarFirstButtonSkin.as b/tourdeflexmobile/src/spark/skins/android4/ButtonBarFirstButtonSkin.as
deleted file mode 100644
index 4b8cbba..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/ButtonBarFirstButtonSkin.as
+++ /dev/null
@@ -1,93 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-	import spark.skins.android4.assets.ButtonBarFirstButton_selectedDown;
-	import spark.skins.android4.assets.ButtonBarFirstButton_selectedUp;
-	import spark.skins.mobile.supportClasses.ButtonBarButtonSkinBase;
-	
-	/**
-	 *  Android 4.x specific Button skin for the first Button in a ButtonBar.
-	 * 
-	 *  @see spark.components.ButtonBar#firstButton
-	 * 
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 2.5 
-	 *  @productversion Flex 4.5
-	 */
-	public class ButtonBarFirstButtonSkin extends ButtonBarButtonSkinBase
-	{
-		
-		/**
-		 *  Class to use for the border in the selected and down state.
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10
-		 *  @playerversion AIR 2.5 
-		 *  @productversion Flex 4.5
-		 */  
-		protected var selectedDownBorderSkin:Class;
-		
-		/**
-		 *  Constructor.
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10
-		 *  @playerversion AIR 2.5 
-		 *  @productversion Flex 4.5
-		 */
-		public function ButtonBarFirstButtonSkin()
-		{
-			super();
-			
-			upBorderSkin = spark.skins.android4.assets.ButtonBarFirstButton_up;
-			downBorderSkin = spark.skins.android4.assets.ButtonBarFirstButton_down;
-			selectedBorderSkin = spark.skins.android4.assets.ButtonBarFirstButton_selectedUp;
-			selectedDownBorderSkin = spark.skins.android4.assets.ButtonBarFirstButton_selectedDown;
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden methods
-		//
-		//--------------------------------------------------------------------------
-		
-		override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			//Dont draw background
-		}
-		
-		override protected function getBorderClassForCurrentState():Class
-		{
-			var isSelected:Boolean = currentState.indexOf("Selected") >= 0;
-			var isDown:Boolean = currentState.indexOf("down") >= 0;
-			
-			if (isSelected && !isDown )
-				return selectedBorderSkin;
-			else if (isSelected && isDown)
-				return selectedDownBorderSkin;
-			else if (!isSelected && !isDown)
-				return upBorderSkin;
-			else 
-				return downBorderSkin;
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/ButtonBarMiddleButtonSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/ButtonBarMiddleButtonSkin.as b/tourdeflexmobile/src/spark/skins/android4/ButtonBarMiddleButtonSkin.as
deleted file mode 100644
index c6206d0..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/ButtonBarMiddleButtonSkin.as
+++ /dev/null
@@ -1,95 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-	
-	import spark.skins.android4.assets.ButtonBarMiddleButton_selectedDown;
-	import spark.skins.android4.assets.ButtonBarMiddleButton_selectedUp;
-	import spark.skins.android4.assets.ButtonBarMiddleButton_up;
-	import spark.skins.mobile.supportClasses.ButtonBarButtonSkinBase;
-	
-	/**
-	 *  Android 4.x specific Button skin for middle Buttons in a ButtonBar.
-	 * 
-	 *  @see spark.components.ButtonBar#middleButton
-	 * 
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 2.5 
-	 *  @productversion Flex 4.5
-	 */
-	public class ButtonBarMiddleButtonSkin extends ButtonBarButtonSkinBase
-	{
-		
-		/**
-		 *  Class to use for the border in the selected and down state.
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10
-		 *  @playerversion AIR 2.5 
-		 *  @productversion Flex 4.5
-		 */  
-		protected var selectedDownBorderSkin:Class;
-		
-		/**
-		 *  Constructor.
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10
-		 *  @playerversion AIR 2.5 
-		 *  @productversion Flex 4.5
-		 */
-		public function ButtonBarMiddleButtonSkin()
-		{
-			super();
-			
-			upBorderSkin = spark.skins.android4.assets.ButtonBarMiddleButton_up;
-			downBorderSkin = spark.skins.android4.assets.ButtonBarMiddleButton_down;
-			selectedBorderSkin = spark.skins.android4.assets.ButtonBarMiddleButton_selectedUp;
-			selectedDownBorderSkin = spark.skins.android4.assets.ButtonBarMiddleButton_selectedDown;
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden methods
-		//
-		//--------------------------------------------------------------------------
-		
-		override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			//Dont draw background
-		}
-		
-		override protected function getBorderClassForCurrentState():Class
-		{
-			var isSelected:Boolean = currentState.indexOf("Selected") >= 0;
-			var isDown:Boolean = currentState.indexOf("down") >= 0;
-			
-			if (isSelected && !isDown )
-				return selectedBorderSkin;
-			else if (isSelected && isDown)
-				return selectedDownBorderSkin;
-			else if (!isSelected && !isDown)
-				return upBorderSkin;
-			else 
-				return downBorderSkin;
-		}
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/ButtonBarSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/ButtonBarSkin.as b/tourdeflexmobile/src/spark/skins/android4/ButtonBarSkin.as
deleted file mode 100644
index 4b194fd..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/ButtonBarSkin.as
+++ /dev/null
@@ -1,166 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-import spark.components.ButtonBar;
-import spark.components.ButtonBarButton;
-import spark.components.DataGroup;
-import spark.components.supportClasses.ButtonBarHorizontalLayout;
-import spark.skins.android4.ButtonBarFirstButtonSkin;
-import spark.skins.mobile.ButtonBarLastButtonSkin;
-import spark.skins.mobile.supportClasses.ButtonBarButtonClassFactory;
-import spark.skins.mobile.supportClasses.MobileSkin;
-
-/**
- *  The Android 4.x specific skin class for the Spark ButtonBar component.
- *
- *  @see spark.components.ButtonBar
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.5
- *  @productversion Flex 4.5
- */
-public class ButtonBarSkin extends MobileSkin
-{
-    //--------------------------------------------------------------------------
-    //
-    //  Constructor
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     * Constructor.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     *
-     */
-    public function ButtonBarSkin()
-    {
-        super();
-    }
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Skin parts
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-     */
-    public var hostComponent:ButtonBar;
-    
-    /**
-     *  @copy spark.components.ButtonBar#firstButton
-     */
-    public var firstButton:ButtonBarButtonClassFactory;
-    
-    /**
-     *  @copy spark.components.ButtonBar#lastButton
-     */
-    public var lastButton:ButtonBarButtonClassFactory;
-    
-    /**
-     *  @copy spark.components.ButtonBar#middleButton
-     */
-    public var middleButton:ButtonBarButtonClassFactory;
-    
-    /**
-     *  @copy spark.components.SkinnableDataContainer#dataGroup
-     */
-    public var dataGroup:DataGroup;
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden methods
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  @private
-     */
-    override protected function createChildren():void
-    {
-        // Set up the class factories for the buttons
-        if (!firstButton)
-        {
-            firstButton = new ButtonBarButtonClassFactory(ButtonBarButton);
-            firstButton.skinClass = spark.skins.android4.ButtonBarFirstButtonSkin;
-        }
-        
-        if (!lastButton)
-        {
-            lastButton = new ButtonBarButtonClassFactory(ButtonBarButton);
-            lastButton.skinClass = spark.skins.android4.ButtonBarFirstButtonSkin;
-        }
-        
-        if (!middleButton)
-        {
-            middleButton = new ButtonBarButtonClassFactory(ButtonBarButton);
-            middleButton.skinClass = spark.skins.android4.ButtonBarMiddleButtonSkin;
-        }
-        
-        // create the data group to house the buttons
-        if (!dataGroup)
-        {
-            dataGroup = new DataGroup();
-            var hLayout:ButtonBarHorizontalLayout = new ButtonBarHorizontalLayout();
-            hLayout.gap = 0;
-            dataGroup.layout = hLayout;
-            addChild(dataGroup);
-        }
-    }
-    
-    /**
-     *  @private
-     */
-    override protected function commitCurrentState():void
-    {
-        alpha = (currentState == "disabled") ? 0.5 : 1;
-    }
-    
-    /**
-     *  @private
-     */
-    override protected function measure():void
-    {
-        measuredWidth = dataGroup.measuredWidth;
-        measuredHeight = dataGroup.measuredHeight;
-        
-        measuredMinWidth = dataGroup.measuredMinWidth;
-        measuredMinHeight = dataGroup.measuredMinHeight;
-    }
-    
-    /**
-     *  @private
-     */
-    override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        super.layoutContents(unscaledWidth, unscaledHeight);
-        
-        setElementPosition(dataGroup, 0, 0);
-        setElementSize(dataGroup, unscaledWidth, unscaledHeight);
-    }
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/ButtonSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/ButtonSkin.as b/tourdeflexmobile/src/spark/skins/android4/ButtonSkin.as
deleted file mode 100644
index 43fb108..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/ButtonSkin.as
+++ /dev/null
@@ -1,397 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-
-import flash.display.DisplayObject;
-
-import mx.core.DPIClassification;
-import mx.core.mx_internal;
-import mx.events.FlexEvent;
-
-import spark.components.supportClasses.StyleableTextField;
-import spark.skins.android4.assets.Button_down;
-import spark.skins.android4.assets.Button_up;
-import spark.skins.mobile.supportClasses.ButtonSkinBase;
-
-
-use namespace mx_internal;
-
-/**
- *  ActionScript-based skin for Button controls in mobile applications. The skin supports 
- *  iconClass and labelPlacement. It uses FXG classes to 
- *  implement the vector drawing.  
- * 
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 2.5 
- *  @productversion Flex 4.5
- */
-public class ButtonSkin extends ButtonSkinBase
-{
-    //--------------------------------------------------------------------------
-    //
-    //  Class constants
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     * An array of color distribution ratios.
-     * This is used in the chrome color fill.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    mx_internal static const CHROME_COLOR_RATIOS:Array = [0, 127.5];
-    
-    /**
-     * An array of alpha values for the corresponding colors in the colors array. 
-     * This is used in the chrome color fill.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    mx_internal static const CHROME_COLOR_ALPHAS:Array = [1, 1];
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Constructor
-    //
-    //--------------------------------------------------------------------------
-    /**
-     *  Constructor.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    public function ButtonSkin()
-    {
-        super();
-		upBorderSkin = spark.skins.android4.assets.Button_up;
-		downBorderSkin = spark.skins.android4.assets.Button_down;
-		layoutCornerEllipseSize = 0;
-        
-        switch (applicationDPI)
-        {
-			case DPIClassification.DPI_640:
-			{
-				
-				layoutGap = 20;
-				layoutPaddingLeft = 40;
-				layoutPaddingRight = 40;
-				layoutPaddingTop = 40;
-				layoutPaddingBottom = 40;
-				layoutBorderSize = 2;
-				measuredDefaultWidth = 128;
-				measuredDefaultHeight = 172;
-				
-				break;
-			}
-			case DPIClassification.DPI_480:
-			{
-				
-				layoutGap = 14;
-				layoutPaddingLeft = 30;
-				layoutPaddingRight = 30;
-				layoutPaddingTop = 30;
-				layoutPaddingBottom = 30;
-				layoutBorderSize = 2;
-				measuredDefaultWidth = 96;
-				measuredDefaultHeight = 130;
-				
-				break;
-			}
-            case DPIClassification.DPI_320:
-            {
-                
-                layoutGap = 10;
-                layoutPaddingLeft = 20;
-                layoutPaddingRight = 20;
-                layoutPaddingTop = 20;
-                layoutPaddingBottom = 20;
-                layoutBorderSize = 2;
-                measuredDefaultWidth = 64;
-                measuredDefaultHeight = 86;
-                
-                break;
-            }
-			case DPIClassification.DPI_240:
-			{
-				
-				layoutGap = 7;
-				layoutPaddingLeft = 15;
-				layoutPaddingRight = 15;
-				layoutPaddingTop = 15;
-				layoutPaddingBottom = 15;
-				layoutBorderSize = 1;
-				measuredDefaultWidth = 48;
-				measuredDefaultHeight = 65;
-				
-				break;
-			}
-			case DPIClassification.DPI_120:
-			{
-				
-				layoutGap = 4;
-				layoutPaddingLeft = 8;
-				layoutPaddingRight = 8;
-				layoutPaddingTop = 8;
-				layoutPaddingBottom = 8;
-				layoutBorderSize = 1;
-				measuredDefaultWidth = 24;
-				measuredDefaultHeight = 33;
-				
-				break;
-			}
-            default:
-            {
-                
-                layoutGap = 5;
-                layoutPaddingLeft = 10;
-                layoutPaddingRight = 10;
-                layoutPaddingTop = 10;
-                layoutPaddingBottom = 10;
-                layoutBorderSize = 1;
-                measuredDefaultWidth = 32;
-                measuredDefaultHeight = 43;
-                
-                break;
-            }
-        }
-    }
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Layout variables
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  Defines the corner radius.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     */  
-    protected var layoutCornerEllipseSize:uint;
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Variables
-    //
-    //--------------------------------------------------------------------------
-    private var _border:DisplayObject;
-    
-    private var changeFXGSkin:Boolean = false;
-    
-    private var borderClass:Class;
-    
-    mx_internal var fillColorStyleName:String = "chromeColor";
-    
-    /**
-     *  Defines the shadow for the Button control's label.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     */  
-    public var labelDisplayShadow:StyleableTextField;
-    
-    /**
-     *  Read-only button border graphic. Use getBorderClassForCurrentState()
-     *  to specify a graphic per-state.
-     * 
-     *  @see #getBorderClassForCurrentState()
-     */
-    protected function get border():DisplayObject
-    {
-        return _border;
-    }
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Properties
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  Class to use for the border in the up state.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     * 
-     *  @default Button_up
-     */  
-    protected var upBorderSkin:Class;
-    
-    /**
-     *  Class to use for the border in the down state.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     *       
-     *  @default Button_down
-     */ 
-    protected var downBorderSkin:Class;
-    
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Overridden methods
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  @private
-     */
-    override protected function createChildren():void
-    {
-        super.createChildren();
-        
-        if (!labelDisplayShadow && labelDisplay)
-        {
-            labelDisplayShadow = StyleableTextField(createInFontContext(StyleableTextField));
-            labelDisplayShadow.styleName = this;
-            labelDisplayShadow.colorName = "textShadowColor";
-            labelDisplayShadow.useTightTextBounds = false;
-            
-            // add shadow before display
-            addChildAt(labelDisplayShadow, getChildIndex(labelDisplay));
-        }
-        
-        setStyle("textAlign", "center");
-    }
-    
-    /**
-     *  @private 
-     */
-    override protected function commitCurrentState():void
-    {   
-        super.commitCurrentState();
-        
-        borderClass = getBorderClassForCurrentState();
-        
-        if (!(_border is borderClass))
-            changeFXGSkin = true;
-        
-        // update borderClass and background
-        invalidateDisplayList();
-    }
-    
-    /**
-     *  @private
-     */
-    override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        super.layoutContents(unscaledWidth, unscaledHeight);
-        
-        // size the FXG background
-        if (changeFXGSkin)
-        {
-            changeFXGSkin = false;
-            
-            if (_border)
-            {
-                removeChild(_border);
-                _border = null;
-            }
-            
-            if (borderClass)
-            {
-                _border = new borderClass();
-                addChildAt(_border, 0);
-            }
-        }
-        
-        layoutBorder(unscaledWidth, unscaledHeight);
-        
-        // update label shadow
-        labelDisplayShadow.alpha = getStyle("textShadowAlpha");
-        labelDisplayShadow.commitStyles();
-        
-        // don't use tightText positioning on shadow
-        setElementPosition(labelDisplayShadow, labelDisplay.x, labelDisplay.y + 1);
-        setElementSize(labelDisplayShadow, labelDisplay.width, labelDisplay.height);
-        
-        // if labelDisplay is truncated, then push it down here as well.
-        // otherwise, it would have gotten pushed in the labelDisplay_valueCommitHandler()
-        if (labelDisplay.isTruncated)
-            labelDisplayShadow.text = labelDisplay.text;
-    }
-    
-    /**
-     *  Position the background of the skin. Override this function to re-position the background. 
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     */ 
-    mx_internal function layoutBorder(unscaledWidth:Number, unscaledHeight:Number):void
-    {
-        setElementSize(border, unscaledWidth, unscaledHeight);
-        setElementPosition(border, 0, 0);
-    }
-    
-    /**
-     *  Returns the borderClass to use based on the currentState.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     */
-    protected function getBorderClassForCurrentState():Class
-    {
-        if (currentState == "down") 
-            return downBorderSkin;
-        else
-            return upBorderSkin;
-    }
-    
-    //--------------------------------------------------------------------------
-    //
-    //  Event Handlers
-    //
-    //--------------------------------------------------------------------------
-    
-    /**
-     *  @private 
-     */
-    override protected function labelDisplay_valueCommitHandler(event:FlexEvent):void 
-    {
-        super.labelDisplay_valueCommitHandler(event);
-        labelDisplayShadow.text = labelDisplay.text;
-    }
-    
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/CalloutSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/CalloutSkin.as b/tourdeflexmobile/src/spark/skins/android4/CalloutSkin.as
deleted file mode 100644
index 22f04f5..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/CalloutSkin.as
+++ /dev/null
@@ -1,825 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-	import flash.display.BlendMode;
-	import flash.display.GradientType;
-	import flash.display.Graphics;
-	import flash.display.Sprite;
-	import flash.events.Event;
-	
-	import mx.core.DPIClassification;
-	import mx.core.UIComponent;
-	import mx.core.mx_internal;
-	import mx.events.EffectEvent;
-	import mx.events.FlexEvent;
-	import mx.utils.ColorUtil;
-	
-	import spark.components.ArrowDirection;
-	import spark.components.Callout;
-	import spark.components.ContentBackgroundAppearance;
-	import spark.components.Group;
-	import spark.core.SpriteVisualElement;
-	import spark.effects.Fade;
-	import spark.primitives.RectangularDropShadow;
-	import spark.skins.android4.assets.CalloutContentBackground;
-	import spark.skins.android4.supportClasses.CalloutArrow;
-	import spark.skins.mobile.supportClasses.MobileSkin;
-	
-	use namespace mx_internal;
-	
-	/**
-	 *  The default skin class for the Spark Callout component in mobile
-	 *  applications.
-	 * 
-	 *  <p>The <code>contentGroup</code> lies above a <code>backgroundColor</code> fill
-	 *  which frames the <code>contentGroup</code>. The position and size of the frame 
-	 *  adjust based on the host component <code>arrowDirection</code>, leaving
-	 *  space for the <code>arrow</code> to appear on the outside edge of the
-	 *  frame.</p>
-	 * 
-	 *  <p>The <code>arrow</code> skin part is not positioned by the skin. Instead,
-	 *  the Callout component positions the arrow relative to the owner in
-	 *  <code>updateSkinDisplayList()</code>. This method assumes that Callout skin
-	 *  and the <code>arrow</code> use the same coordinate space.</p>
-	 *  
-	 *  @see spark.components.Callout
-	 *  
-	 *  @langversion 3.0
-	 *  @playerversion AIR 3
-	 *  @productversion Flex 4.6
-	 */ 
-	public class CalloutSkin extends MobileSkin
-	{
-		mx_internal static const BACKGROUND_GRADIENT_BRIGHTNESS_TOP:int = 15;
-		
-		mx_internal static const BACKGROUND_GRADIENT_BRIGHTNESS_BOTTOM:int = -15;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Constructor
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  Constructor. 
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		public function CalloutSkin()
-		{
-			super();
-			
-			dropShadowAlpha = 0.7;
-			contentBackgroundInsetClass = spark.skins.android4.assets.CalloutContentBackground;
-			
-			switch (applicationDPI)
-			{
-				case DPIClassification.DPI_640:
-				{
-					
-					backgroundCornerRadius = 24;
-					backgroundGradientHeight = 440;
-					frameThickness = 12;
-					arrowWidth = 160;
-					arrowHeight = 80;
-					contentCornerRadius = 40;
-					dropShadowBlurX = 64;
-					dropShadowBlurY = 64;
-					dropShadowDistance = 12;
-					highlightWeight = 4;
-					
-					break;
-				}
-				case DPIClassification.DPI_480:
-				{
-					backgroundCornerRadius = 16;
-					backgroundGradientHeight = 330;
-					frameThickness = 8;
-					arrowWidth = 120;
-					arrowHeight = 60;
-					contentCornerRadius = 28;
-					dropShadowBlurX = 48;
-					dropShadowBlurY = 48;
-					dropShadowDistance = 8;
-					highlightWeight = 2;
-					
-					break;
-				}
-				case DPIClassification.DPI_320:
-				{
-					
-					backgroundCornerRadius = 12;
-					backgroundGradientHeight = 220;
-					frameThickness = 6;
-					arrowWidth = 80;
-					arrowHeight = 40;
-					contentCornerRadius = 20;
-					dropShadowBlurX = 32;
-					dropShadowBlurY = 32;
-					dropShadowDistance = 6;
-					highlightWeight = 2;
-					
-					break;
-				}
-				case DPIClassification.DPI_240:
-				{
-					backgroundCornerRadius = 8;
-					backgroundGradientHeight = 165;
-					frameThickness = 4;
-					arrowWidth = 60;
-					arrowHeight = 30;
-					contentCornerRadius = 14;
-					dropShadowBlurX = 24;
-					dropShadowBlurY = 24;
-					dropShadowDistance = 4;
-					highlightWeight = 1;
-					
-					break;
-				}
-				case DPIClassification.DPI_120:
-				{
-					backgroundCornerRadius = 4;
-					backgroundGradientHeight = 83;
-					frameThickness = 2;
-					arrowWidth = 30;
-					arrowHeight = 15;
-					contentCornerRadius = 7;
-					dropShadowBlurX = 12;
-					dropShadowBlurY = 12;
-					dropShadowDistance = 2;
-					highlightWeight = 0.5;
-					
-					break;
-				}
-				default:
-				{
-					// default DPI_160
-					backgroundCornerRadius = 6;
-					backgroundGradientHeight = 110;
-					frameThickness = 3;
-					arrowWidth = 40;
-					arrowHeight = 20;
-					contentCornerRadius = 10;
-					dropShadowBlurX = 16;
-					dropShadowBlurY = 16;
-					dropShadowDistance = 3;
-					highlightWeight = 1;
-					
-					break;
-				}
-			}
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Variables
-		//
-		//--------------------------------------------------------------------------
-		
-		/** 
-		 *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-		 */
-		public var hostComponent:Callout;
-		
-		/**
-		 *  Enables a RectangularDropShadow behind the <code>backgroundColor</code> frame.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var dropShadowVisible:Boolean = true;
-		
-		/**
-		 *  Enables a vertical linear gradient in the <code>backgroundColor</code> frame. This
-		 *  gradient fill is drawn across both the arrow and the frame. By default,
-		 *  the gradient brightens the background color by 15% and darkens it by 60%.
-		 * 
-		 *  @default true
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var useBackgroundGradient:Boolean = true;
-		
-		/**
-		 *  Corner radius used for the <code>contentBackgroundColor</code> fill.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var contentCornerRadius:uint;
-		
-		/**
-		 *  A class reference to an FXG class that is layered underneath the
-		 *  <code>contentGroup</code>. The instance of this class is sized to match the
-		 *  <code>contentGroup</code>.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var contentBackgroundInsetClass:Class;
-		
-		/**
-		 *  Corner radius of the <code>backgroundColor</code> "frame".
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var backgroundCornerRadius:Number;
-		
-		/**
-		 *  The thickness of the <code>backgroundColor</code> "frame" that surrounds the
-		 *  <code>contentGroup</code>.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var frameThickness:Number;
-		
-		/**
-		 *  Color of the border stroke around the <code>backgroundColor</code> "frame".
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var borderColor:Number = -1; // not set
-		
-		/**
-		 *  Thickness of the border stroke around the <code>backgroundColor</code>
-		 *  "frame".
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var borderThickness:Number = -1 ;      // marker that borderThickness was not set  directly
-		
-		/**
-		 *  Width of the arrow in vertical directions. This property also controls
-		 *  the height of the arrow in horizontal directions.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var arrowWidth:Number;
-		
-		/**
-		 *  Height of the arrow in vertical directions. This property also controls
-		 *  the width of the arrow in horizontal directions.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		protected var arrowHeight:Number;
-		
-		/**
-		 *  @private
-		 *  Instance of the contentBackgroundClass
-		 */
-		mx_internal var contentBackgroundGraphic:SpriteVisualElement;
-		
-		/**
-		 *  @private
-		 *  Tracks changes to the skin state to support the fade out tranisition 
-		 *  when closed;
-		 */
-		mx_internal var isOpen:Boolean;
-		
-		private var backgroundGradientHeight:Number;
-		
-		private var contentMask:Sprite;
-		
-		private var backgroundFill:SpriteVisualElement;
-		
-		private var dropShadow:RectangularDropShadow;
-		
-		private var dropShadowBlurX:Number;
-		
-		private var dropShadowBlurY:Number;
-		
-		private var dropShadowDistance:Number;
-		
-		private var dropShadowAlpha:Number;
-		
-		private var fade:Fade;
-		
-		private var highlightWeight:Number;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Skin parts
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @copy spark.components.SkinnableContainer#contentGroup
-		 */
-		public var contentGroup:Group;
-		
-		/**
-		 * @copy spark.components.Callout#arrow
-		 */
-		public var arrow:UIComponent;
-		
-		/* helper private accessors */
-		
-		/* returns borderThickness from style if member is -1, or borderThickness.  Returns 0 if NaN */
-		mx_internal function get actualBorderThickness():Number
-		{
-			var border: Number =  borderThickness != -1 ? borderThickness : getStyle('borderThickness');
-			return isNaN(border)? 0: border;
-		}
-		
-		mx_internal function get actualBorderColor():uint
-		{
-			return borderColor != -1 ? borderColor: getStyle('borderColor');
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden methods
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 * @private
-		 */
-		override protected function createChildren():void
-		{
-			super.createChildren();
-			
-			if (dropShadowVisible)
-			{
-				dropShadow = new RectangularDropShadow();
-				dropShadow.angle = 90;
-				dropShadow.distance = dropShadowDistance;
-				dropShadow.blurX = dropShadowBlurX;
-				dropShadow.blurY = dropShadowBlurY;
-				dropShadow.tlRadius = dropShadow.trRadius = dropShadow.blRadius = 
-					dropShadow.brRadius = backgroundCornerRadius ;
-				dropShadow.mouseEnabled = false;
-				dropShadow.alpha = dropShadowAlpha;
-				addChild(dropShadow);
-			}
-			
-			// background fill placed above the drop shadow
-			backgroundFill = new SpriteVisualElement();
-			addChild(backgroundFill);
-			
-			// arrow
-			if (!arrow)
-			{
-				arrow = new CalloutArrow();
-				arrow.id = "arrow";
-				arrow.styleName = this;
-				addChild(arrow);
-			}
-			
-			// contentGroup
-			if (!contentGroup)
-			{
-				contentGroup = new Group();
-				contentGroup.id = "contentGroup";
-				addChild(contentGroup);
-			}
-			
-			
-		}
-		
-		/**
-		 * @private
-		 */
-		override protected function commitProperties():void
-		{
-			super.commitProperties();
-			
-			// add or remove the contentBackgroundGraphic
-			var contentBackgroundAppearance:String = getStyle("contentBackgroundAppearance");
-			
-			if (contentBackgroundAppearance == ContentBackgroundAppearance.INSET)
-			{
-				// create the contentBackgroundGraphic
-				if (!contentBackgroundGraphic && contentBackgroundInsetClass)
-				{
-					contentBackgroundGraphic = new contentBackgroundInsetClass() as SpriteVisualElement;
-					
-					// with the current skin structure, contentBackgroundGraphic is
-					// always the last child
-					addChild(contentBackgroundGraphic);
-				}
-			}
-			else if (contentBackgroundGraphic)
-			{
-				// if already created, remove the graphic for "flat" and "none"
-				removeChild(contentBackgroundGraphic);
-				contentBackgroundGraphic = null;
-			}
-			
-			// always invalidate to accomodate arrow direction changes
-			invalidateSize();
-			invalidateDisplayList();
-		}
-		
-		
-		/**
-		 * @private
-		 */
-		override protected function measure():void
-		{
-			super.measure();
-			
-			var borderWeight:Number =actualBorderThickness;
-			var frameAdjustment:Number = (frameThickness + borderWeight) * 2;
-			
-			var arrowMeasuredWidth:Number;
-			var arrowMeasuredHeight:Number;
-			
-			// pad the arrow so that the edges are within the background corner radius
-			if (isArrowHorizontal)
-			{
-				arrowMeasuredWidth = arrowHeight;
-				arrowMeasuredHeight = arrowWidth + (backgroundCornerRadius * 2);
-			}
-			else if (isArrowVertical)
-			{
-				arrowMeasuredWidth = arrowWidth + (backgroundCornerRadius * 2);
-				arrowMeasuredHeight = arrowHeight;
-			}
-			
-			// count the contentGroup size and frame size
-			measuredMinWidth = contentGroup.measuredMinWidth + frameAdjustment;
-			measuredMinHeight = contentGroup.measuredMinHeight + frameAdjustment;
-			
-			measuredWidth = contentGroup.getPreferredBoundsWidth() + frameAdjustment;
-			measuredHeight = contentGroup.getPreferredBoundsHeight() + frameAdjustment;
-			
-			// add the arrow size based on the arrowDirection
-			if (isArrowHorizontal)
-			{
-				measuredMinWidth += arrowMeasuredWidth;
-				measuredMinHeight = Math.max(measuredMinHeight, arrowMeasuredHeight);
-				
-				measuredWidth += arrowMeasuredWidth;
-				measuredHeight = Math.max(measuredHeight, arrowMeasuredHeight);
-			}
-			else if (isArrowVertical)
-			{
-				measuredMinWidth += Math.max(measuredMinWidth, arrowMeasuredWidth);
-				measuredMinHeight += arrowMeasuredHeight;
-				
-				measuredWidth = Math.max(measuredWidth, arrowMeasuredWidth);
-				measuredHeight += arrowMeasuredHeight;
-			}
-		}
-		
-		/**
-		 *  @private
-		 *  SkinnaablePopUpContainer skins must dispatch a 
-		 *  FlexEvent.STATE_CHANGE_COMPLETE event for the component to properly
-		 *  update the skin state.
-		 */
-		override protected function commitCurrentState():void
-		{
-			super.commitCurrentState();
-			
-			var isNormal:Boolean = (currentState == "normal");
-			var isDisabled:Boolean = (currentState == "disabled")
-			
-			// play a fade out if the callout was previously open
-			if (!(isNormal || isDisabled) && isOpen)
-			{
-				if (!fade)
-				{
-					fade = new Fade();
-					fade.target = this;
-					fade.duration = 200;
-					fade.alphaTo = 0;
-				}
-				
-				// BlendMode.LAYER while fading out
-				blendMode = BlendMode.LAYER;
-				
-				// play a short fade effect
-				fade.addEventListener(EffectEvent.EFFECT_END, stateChangeComplete);
-				fade.play();
-				
-				isOpen = false;
-			}
-			else
-			{
-				isOpen = isNormal || isDisabled;
-				
-				// handle re-opening the Callout while fading out
-				if (fade && fade.isPlaying)
-				{
-					// Do not dispatch a state change complete.
-					// SkinnablePopUpContainer handles state interruptions.
-					fade.removeEventListener(EffectEvent.EFFECT_END, stateChangeComplete);
-					fade.stop();
-				}
-				
-				if (isDisabled)
-				{
-					// BlendMode.LAYER to allow CalloutArrow BlendMode.ERASE
-					blendMode = BlendMode.LAYER;
-					
-					alpha = 0.5;
-				}
-				else
-				{
-					// BlendMode.NORMAL for non-animated state transitions
-					blendMode = BlendMode.NORMAL;
-					
-					if (isNormal)
-						alpha = 1;
-					else
-						alpha = 0;
-				}
-				
-				stateChangeComplete();
-			}
-		}
-		
-		/**
-		 * @private
-		 */
-		override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			super.drawBackground(unscaledWidth, unscaledHeight);
-			
-			var frameEllipseSize:Number = backgroundCornerRadius * 2;
-			
-			// account for borderThickness center stroke alignment
-			var borderWeight:Number =actualBorderThickness;
-			var showBorder:Boolean = borderWeight > 0 ;
-			
-			
-			// contentBackgroundGraphic already accounts for the arrow position
-			// use it's positioning instead of recalculating based on unscaledWidth
-			// and unscaledHeight
-			var frameX:Number = Math.floor(contentGroup.getLayoutBoundsX() - frameThickness) - (borderWeight / 2);
-			var frameY:Number = Math.floor(contentGroup.getLayoutBoundsY() - frameThickness) - (borderWeight / 2);
-			var frameWidth:Number = contentGroup.getLayoutBoundsWidth() + (frameThickness * 2) + borderWeight;
-			var frameHeight:Number = contentGroup.getLayoutBoundsHeight() + (frameThickness * 2) + borderWeight;
-			
-			var backgroundColor:Number = getStyle("primaryAccentColor");
-			var backgroundAlpha:Number = getStyle("backgroundAlpha");
-			
-			var bgFill:Graphics = backgroundFill.graphics;
-			bgFill.clear();
-			
-			if (showBorder)
-				bgFill.lineStyle(borderWeight, actualBorderColor, 1, true);
-			
-			if (useBackgroundGradient)
-			{
-				// top color is brighter if arrowDirection == ArrowDirection.UP
-				var backgroundColorTop:Number = ColorUtil.adjustBrightness2(backgroundColor, 
-					BACKGROUND_GRADIENT_BRIGHTNESS_TOP);
-				var backgroundColorBottom:Number = ColorUtil.adjustBrightness2(backgroundColor, 
-					BACKGROUND_GRADIENT_BRIGHTNESS_BOTTOM);
-				
-				// max gradient height = backgroundGradientHeight
-				colorMatrix.createGradientBox(unscaledWidth, backgroundGradientHeight,
-					Math.PI / 2, 0, 0);
-				
-				bgFill.beginGradientFill(GradientType.LINEAR,
-					[backgroundColorTop, backgroundColorBottom],
-					[backgroundAlpha, backgroundAlpha],
-					[0, 255],
-					colorMatrix);
-			}
-			else
-			{
-				bgFill.beginFill(backgroundColor, backgroundAlpha);
-			}
-			
-			bgFill.drawRoundRect(frameX, frameY, frameWidth,
-				frameHeight, frameEllipseSize, frameEllipseSize);
-			bgFill.endFill();
-			
-			// draw content background styles
-			var contentBackgroundAppearance:String = getStyle("contentBackgroundAppearance");
-			
-			if (contentBackgroundAppearance != ContentBackgroundAppearance.NONE)
-			{
-				var contentEllipseSize:Number = contentCornerRadius * 2;
-				var contentBackgroundAlpha:Number = getStyle("contentBackgroundAlpha");
-				var contentWidth:Number = contentGroup.getLayoutBoundsWidth();
-				var contentHeight:Number = contentGroup.getLayoutBoundsHeight();
-				
-				// all appearance values except for "none" use a mask
-				if (!contentMask)
-					contentMask = new SpriteVisualElement();
-				
-				contentGroup.mask = contentMask;
-				
-				// draw contentMask in contentGroup coordinate space
-				var maskGraphics:Graphics = contentMask.graphics;
-				maskGraphics.clear();
-				maskGraphics.beginFill(0, 1);
-				maskGraphics.drawRoundRect(0, 0, contentWidth, contentHeight,
-					contentEllipseSize, contentEllipseSize);
-				maskGraphics.endFill();
-				
-				// reset line style to none
-				if (showBorder)
-					bgFill.lineStyle(NaN);
-				
-				// draw the contentBackgroundColor
-				bgFill.beginFill(getStyle("contentBackgroundColor"),
-					contentBackgroundAlpha);
-				bgFill.drawRoundRect(contentGroup.getLayoutBoundsX(),
-					contentGroup.getLayoutBoundsY(),
-					contentWidth, contentHeight, contentEllipseSize, contentEllipseSize);
-				bgFill.endFill();
-				
-				if (contentBackgroundGraphic)
-					contentBackgroundGraphic.alpha = contentBackgroundAlpha;
-			}
-			else // if (contentBackgroundAppearance == CalloutContentBackgroundAppearance.NONE))
-			{
-				// remove the mask
-				if (contentMask)
-				{
-					contentGroup.mask = null;
-					contentMask = null;
-				}
-			}
-			
-			// draw highlight in the callout when the arrow is hidden
-			if (useBackgroundGradient && !isArrowHorizontal && !isArrowVertical)
-			{
-				// highlight width spans the callout width minus the corner radius
-				var highlightWidth:Number = frameWidth - frameEllipseSize;
-				var highlightX:Number = frameX + backgroundCornerRadius;
-				var highlightOffset:Number = (highlightWeight * 1.5);
-				
-				// straight line across the top
-				bgFill.lineStyle(highlightWeight, 0xFFFFFF, 0.2 * backgroundAlpha);
-				bgFill.moveTo(highlightX, highlightOffset);
-				bgFill.lineTo(highlightX + highlightWidth, highlightOffset);
-			}
-		}
-		
-		/**
-		 * @private
-		 */
-		override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			super.layoutContents(unscaledWidth, unscaledHeight);
-			
-			// pad the arrow so that the edges are within the background corner radius
-			if (isArrowHorizontal)
-			{
-				arrow.width = arrowHeight;
-				arrow.height = arrowWidth + (backgroundCornerRadius * 2);
-			}
-			else if (isArrowVertical)
-			{
-				arrow.width = arrowWidth + (backgroundCornerRadius * 2);
-				arrow.height = arrowHeight;
-			}
-			
-			setElementSize(backgroundFill, unscaledWidth, unscaledHeight);
-			setElementPosition(backgroundFill, 0, 0);
-			
-			var frameX:Number = 0;
-			var frameY:Number = 0;
-			var frameWidth:Number = unscaledWidth;
-			var frameHeight:Number = unscaledHeight;
-			
-			switch (hostComponent.arrowDirection)
-			{
-				case ArrowDirection.UP:
-					frameY = arrow.height;
-					frameHeight -= arrow.height;
-					break;
-				case ArrowDirection.DOWN:
-					frameHeight -= arrow.height;
-					break;
-				case ArrowDirection.LEFT:
-					frameX = arrow.width;
-					frameWidth -= arrow.width;
-					break;
-				case ArrowDirection.RIGHT:
-					frameWidth -= arrow.width;
-					break;
-				default:
-					// no arrow, content takes all available space
-					break;
-			}
-			
-			if (dropShadow)
-			{
-				setElementSize(dropShadow, frameWidth, frameHeight);
-				setElementPosition(dropShadow, frameX, frameY);
-			}
-			
-			// Show frameThickness by inset of contentGroup
-			var borderWeight:Number = actualBorderThickness;
-			var contentBackgroundAdjustment:Number = frameThickness + borderWeight;
-			
-			var contentBackgroundX:Number = frameX + contentBackgroundAdjustment;
-			var contentBackgroundY:Number = frameY + contentBackgroundAdjustment;
-			
-			contentBackgroundAdjustment = contentBackgroundAdjustment * 2;
-			var contentBackgroundWidth:Number = frameWidth - contentBackgroundAdjustment;
-			var contentBackgroundHeight:Number = frameHeight - contentBackgroundAdjustment;
-			
-			if (contentBackgroundGraphic)
-			{
-				setElementSize(contentBackgroundGraphic, contentBackgroundWidth, contentBackgroundHeight);
-				setElementPosition(contentBackgroundGraphic, contentBackgroundX, contentBackgroundY);
-			}
-			
-			setElementSize(contentGroup, contentBackgroundWidth, contentBackgroundHeight);
-			setElementPosition(contentGroup, contentBackgroundX, contentBackgroundY);
-			
-			// mask position is in the contentGroup coordinate space
-			if (contentMask)
-				setElementSize(contentMask, contentBackgroundWidth, contentBackgroundHeight);
-		}
-		
-		override public function styleChanged(styleProp:String):void
-		{
-			super.styleChanged(styleProp);
-			
-			var allStyles:Boolean = !styleProp || styleProp == "styleName";
-			
-			if (allStyles || (styleProp == "contentBackgroundAppearance"))
-				invalidateProperties();
-			
-			if (allStyles || (styleProp == "backgroundAlpha"))
-			{
-				var backgroundAlpha:Number = getStyle("backgroundAlpha");
-				
-				// Use BlendMode.LAYER to allow CalloutArrow to erase the dropShadow
-				// when the Callout background is transparent
-				blendMode = (backgroundAlpha < 1) ? BlendMode.LAYER : BlendMode.NORMAL;
-			}
-		}
-		
-		/**
-		 * @private
-		 */
-		mx_internal function get isArrowHorizontal():Boolean
-		{
-			return (hostComponent.arrowDirection == ArrowDirection.LEFT
-				|| hostComponent.arrowDirection == ArrowDirection.RIGHT);
-		}
-		
-		/**
-		 * @private
-		 */
-		mx_internal function get isArrowVertical():Boolean
-		{
-			return (hostComponent.arrowDirection == ArrowDirection.UP
-				|| hostComponent.arrowDirection == ArrowDirection.DOWN);
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Event handlers
-		//
-		//--------------------------------------------------------------------------
-		
-		private function stateChangeComplete(event:Event=null):void
-		{
-			if (fade && event)
-				fade.removeEventListener(EffectEvent.EFFECT_END, stateChangeComplete);
-			
-			// SkinnablePopUpContainer relies on state changes for open and close
-			dispatchEvent(new FlexEvent(FlexEvent.STATE_CHANGE_COMPLETE));
-		}
-	}
-}

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/CheckBoxSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/CheckBoxSkin.as b/tourdeflexmobile/src/spark/skins/android4/CheckBoxSkin.as
deleted file mode 100644
index f091205..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/CheckBoxSkin.as
+++ /dev/null
@@ -1,268 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-	import flash.display.DisplayObject;
-	
-	import mx.core.DPIClassification;
-	
-	import spark.skins.android4.assets.CheckBox_up;
-	import spark.skins.mobile.supportClasses.SelectableButtonSkinBase;
-	
-	/**
-	 *  ActionScript-based skin for CheckBox components in mobile applications. 
-	 * 
-	 *  @see spark.components.CheckBox
-	 * 
-	 *  @langversion 3.0
-	 *  @playerversion Flash 10
-	 *  @playerversion AIR 2.5 
-	 *  @productversion Flex 4.5
-	 */
-	public class CheckBoxSkin extends SelectableButtonSkinBase
-	{
-		//--------------------------------------------------------------------------
-		//
-		//  Class constants
-		//
-		//--------------------------------------------------------------------------
-		
-		private static const exclusions:Array = ["labelDisplay", "labelDisplayShadow"];
-
-		//--------------------------------------------------------------------------
-		//
-		//  Member variables
-		//
-		//--------------------------------------------------------------------------
-
-		protected var symbolOffsetX:Number;
-		protected var symbolOffsetY:Number;
-		protected var iconWidth:Number;
-		protected var iconHeight:Number;
-		protected var symbolWidth:Number;
-		protected var symbolHeight:Number;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Constructor
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  Constructor.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10
-		 *  @playerversion AIR 2.5
-		 *  @productversion Flex 4.5
-		 */
-		public function CheckBoxSkin()
-		{
-			super();
-			
-			layoutPaddingLeft = 0;
-			layoutPaddingRight = 0;
-			layoutPaddingTop = 0;
-			layoutPaddingBottom = 0;
-			
-			upIconClass = spark.skins.android4.assets.CheckBox_up;
-			upSelectedIconClass = spark.skins.android4.assets.CheckBox_upSelected;
-			downIconClass = spark.skins.android4.assets.CheckBox_down;
-			downSelectedIconClass = spark.skins.android4.assets.CheckBox_downSelected;
-			upSymbolIconClass = null;
-			upSymbolIconSelectedClass = spark.skins.android4.assets.CheckBox_upSymbolSelected;
-			downSymbolIconSelectedClass = spark.skins.android4.assets.CheckBox_downSymbolSelected;
-			downSymbolIconClass = null;
-					
-			switch (applicationDPI)
-			{
-				case DPIClassification.DPI_640:
-				{
-					
-					layoutGap = 16;
-					minWidth = 128;
-					minHeight = 128;
-					layoutBorderSize = 6;
-					iconWidth = 128;
-					iconHeight = 128;
-					symbolWidth = 64;
-					symbolHeight = 64;
-					symbolOffsetX = 32;
-					symbolOffsetY = 32;
-					
-					break;
-				}
-				case DPIClassification.DPI_480:
-				{
-					
-					layoutGap = 12;
-					minWidth = 96;
-					minHeight = 96;
-					layoutBorderSize = 4;
-					iconWidth = 96;
-					iconHeight = 96;
-					symbolWidth = 48;
-					symbolHeight = 48;
-					symbolOffsetX = 24;
-					symbolOffsetY = 24;
-					
-					break;
-				}
-				case DPIClassification.DPI_320:
-				{
-					
-					layoutGap = 8;
-					minWidth = 64;
-					minHeight = 64;
-					layoutBorderSize = 3;
-					iconWidth = 64;
-					iconHeight = 64;
-					symbolWidth = 32;
-					symbolHeight = 32;
-					symbolOffsetX = 16;
-					symbolOffsetY = 16;
-					
-					break;
-				}
-				case DPIClassification.DPI_240:
-				{
-					
-					layoutGap = 6;
-					minWidth = 48;
-					minHeight = 48;
-					layoutBorderSize = 2;
-					iconWidth = 48;
-					iconHeight = 48;
-					symbolWidth = 24;
-					symbolHeight = 24;
-					symbolOffsetX = 12;
-					symbolOffsetY = 12;
-					
-					break;
-				}
-				case DPIClassification.DPI_120:
-				{
-					
-					layoutGap = 3;
-					minWidth = 24;
-					minHeight = 24;
-					layoutBorderSize = 1;
-					iconWidth = 24;
-					iconHeight = 24;
-					symbolWidth = 12;
-					symbolHeight = 12;
-					symbolOffsetX = 6;
-					symbolOffsetY = 6;
-					
-					break;
-				}
-				default:
-				{
-					// default DPI_160
-					
-					layoutGap = 4;
-					minWidth = 32;
-					minHeight = 32;
-					layoutBorderSize = 2;
-					iconWidth = 32;
-					iconHeight = 32;
-					symbolWidth = 16;
-					symbolHeight = 16;
-					symbolOffsetX = 8;
-					symbolOffsetY = 8;
-					
-					
-					break;
-				}
-			}
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden methods
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @private
-		 *  CheckBox <code>chromeColor</code> is drawn to match the FXG rectangle
-		 *  shape and position.
-		 */
-		override protected function drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			// super draws a transparent hit zone
-			super.drawBackground(unscaledWidth, unscaledHeight);
-			
-			// get the size and position of iconDisplay
-			var currentIcon:DisplayObject = getIconDisplay();
-			var widthAdjustment:Number = layoutBorderSize * 2;
-			
-			graphics.beginFill(getStyle("chromeColor"));
-			graphics.drawRoundRect(currentIcon.x + layoutBorderSize,
-				currentIcon.y + layoutBorderSize,
-				currentIcon.width - widthAdjustment,
-				currentIcon.height - widthAdjustment, layoutBorderSize, layoutBorderSize);
-			graphics.endFill();
-		}
-		
-		/**
-		 *  List of IDs of items that should be excluded when rendering the focus ring.
-		 *  Only items of type DisplayObject or GraphicElement should be excluded. Items
-		 *  of other types are ignored.
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion Flash 10
-		 *  @playerversion AIR 2.5
-		 *  @productversion Flex 4.5
-		 */
-		override protected function get focusSkinExclusions():Array 
-		{
-			return exclusions;
-		}
-		
-		override protected function commitCurrentState():void
-		{
-			super.commitCurrentState();
-			if(symbolIcon != null)
-			{
-				symbolIcon.width = symbolWidth;
-				symbolIcon.height = symbolHeight;
-			}
-			var iconDisplay:DisplayObject = getIconDisplay(); 
-			if(iconDisplay != null)
-			{
-				iconDisplay.width = iconWidth;
-				iconDisplay.height = iconHeight;
-			}
-		}
-		
-		override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			super.layoutContents(unscaledWidth, unscaledHeight);
-			// position the symbols to align with the background "icon"
-			if (symbolIcon)
-			{
-				var currentIcon:DisplayObject = getIconDisplay();
-				setElementPosition(symbolIcon, symbolOffsetX, symbolOffsetY);
-			}
-		}
-		
-	}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/DateSpinnerSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/DateSpinnerSkin.as b/tourdeflexmobile/src/spark/skins/android4/DateSpinnerSkin.as
deleted file mode 100644
index d45e039..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/DateSpinnerSkin.as
+++ /dev/null
@@ -1,153 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  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 spark.skins.android4
-{
-	import mx.core.ClassFactory;
-	import mx.core.IFactory;
-	import mx.core.IVisualElementContainer;
-	
-	import spark.components.DateSpinner;
-	import spark.components.SpinnerList;
-	import spark.components.SpinnerListContainer;
-	import spark.components.calendarClasses.DateSpinnerItemRenderer;
-	import spark.skins.mobile.supportClasses.MobileSkin;
-	
-	/**
-	 *  ActionScript-based skin for the DateSpinner in mobile applications.
-	 *  
-	 * @see spark.components.DateSpinner
-	 * 
-	 *  @langversion 3.0
-	 *  @playerversion AIR 3
-	 *  @productversion Flex 4.6
-	 *  
-	 */
-	public class DateSpinnerSkin extends MobileSkin
-	{
-		//--------------------------------------------------------------------------
-		//
-		//  Constructor
-		//
-		//--------------------------------------------------------------------------
-		/**
-		 *  Constructor.
-		 * 
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		public function DateSpinnerSkin()
-		{
-			super();
-		}
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Skin parts
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  Factory for creating dateItem list parts.
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		public var dateItemList:IFactory;
-		
-		/**
-		 *  Skin part; container of dateItem list(s).
-		 *
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		public var listContainer:IVisualElementContainer;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Properties 
-		//
-		//--------------------------------------------------------------------------
-		/** 
-		 *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-		 */
-		public var hostComponent:DateSpinner;
-		
-		//--------------------------------------------------------------------------
-		//
-		//  Overridden Methods
-		//
-		//--------------------------------------------------------------------------
-		
-		/**
-		 *  @inheritDoc
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		override protected function createChildren():void
-		{
-			listContainer = new SpinnerListContainer();
-			
-			addChild(SpinnerListContainer(listContainer));		
-			
-			dateItemList = new ClassFactory(SpinnerList);		
-			(dateItemList as ClassFactory).properties = { itemRenderer: new ClassFactory(spark.components.calendarClasses.DateSpinnerItemRenderer), percentHeight : 100 };
-		}
-		
-		/**
-		 *  @inheritDoc
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		override protected function measure():void
-		{
-			measuredWidth = SpinnerListContainer(listContainer).getPreferredBoundsWidth();
-			measuredHeight = SpinnerListContainer(listContainer).getPreferredBoundsHeight();
-			measuredMinWidth = SpinnerListContainer(listContainer).getMinBoundsWidth();
-			measuredMinHeight = SpinnerListContainer(listContainer).getMinBoundsHeight();
-		}
-		
-		/**
-		 *  @inheritDoc
-		 *  
-		 *  @langversion 3.0
-		 *  @playerversion AIR 3
-		 *  @productversion Flex 4.6
-		 */
-		override protected function layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-		{
-			super.layoutContents(unscaledWidth, unscaledHeight);
-			
-			// Always set the SpinnerListContainer to its measured width, regardless of our size
-			var containerWidth:Number = SpinnerListContainer(listContainer).getPreferredBoundsWidth();
-			var containerHeight:Number = unscaledHeight;
-			
-			setElementSize(listContainer, containerWidth, containerHeight);
-			// if width is greater than necessary, center the component
-			setElementPosition(listContainer, Math.max((unscaledWidth - containerWidth)/2, 0), 0);
-		}
-		
-	}
-}