http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/TextAreaHScrollBarThumbSkin.as
----------------------------------------------------------------------
diff --git 
a/tourdeflexmobile/src/spark/skins/android4/TextAreaHScrollBarThumbSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/TextAreaHScrollBarThumbSkin.as
deleted file mode 100644
index 5d3fec8..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/TextAreaHScrollBarThumbSkin.as
+++ /dev/null
@@ -1,116 +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.DPIClassification;
-import mx.core.mx_internal;
-
-use namespace mx_internal;
-
-/**
- *  The ActionScript-based skin used for TextAreaHScrollBarThumb components
- *  in mobile applications.
- * 
- *  @langversion 3.0
- *  @playerversion AIR 2.5 
- *  @productversion Flex 4.5
- * 
- */
-public class TextAreaHScrollBarThumbSkin extends HScrollBarThumbSkin
-{
-    
//--------------------------------------------------------------------------
-    //
-    //  Class constants
-    //
-    
//--------------------------------------------------------------------------
-    
-    // These constants are also accessed from HScrollBarSkin
-       mx_internal static const PADDING_BOTTOM_640DPI:int = 16;
-       mx_internal static const PADDING_HORIZONTAL_640DPI:int = 16;
-       mx_internal static const PADDING_BOTTOM_480DPI:int = 12;
-       mx_internal static const PADDING_HORIZONTAL_480DPI:int = 12;
-    mx_internal static const PADDING_BOTTOM_320DPI:int = 8;
-    mx_internal static const PADDING_HORIZONTAL_320DPI:int = 12;
-       mx_internal static const PADDING_BOTTOM_240DPI:int = 6;
-       mx_internal static const PADDING_HORIZONTAL_240DPI:int = 6;
-       mx_internal static const PADDING_BOTTOM_120DPI:int = 3;
-       mx_internal static const PADDING_HORIZONTAL_120DPI:int = 3;
-    mx_internal static const PADDING_BOTTOM_DEFAULTDPI:int = 4;
-    mx_internal static const PADDING_HORIZONTAL_DEFAULTDPI:int = 6;
-    
-    
//--------------------------------------------------------------------------
-    //
-    //  Constructor
-    //
-    
//--------------------------------------------------------------------------
-    /**
-     *  Constructor.
-     *  
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    public function TextAreaHScrollBarThumbSkin()
-    {
-        super();
-        
-        // Depending on density set padding
-        switch (applicationDPI)
-        {
-                       case DPIClassification.DPI_640:
-                       {
-                               paddingBottom = PADDING_BOTTOM_640DPI;
-                               paddingHorizontal = PADDING_HORIZONTAL_640DPI;
-                               break;
-                       }
-                       case DPIClassification.DPI_480:
-                       {
-                               paddingBottom = 
TextAreaHScrollBarThumbSkin.PADDING_BOTTOM_480DPI;
-                               paddingHorizontal = 
TextAreaHScrollBarThumbSkin.PADDING_HORIZONTAL_480DPI;
-                               break;
-                       }
-            case DPIClassification.DPI_320:
-            {
-                paddingBottom = PADDING_BOTTOM_320DPI;
-                paddingHorizontal = PADDING_HORIZONTAL_320DPI;
-                break;
-            }
-                       case DPIClassification.DPI_240:
-                       {
-                               paddingBottom = PADDING_BOTTOM_240DPI;
-                               paddingHorizontal = PADDING_HORIZONTAL_240DPI;
-                               break;
-                       }
-                       case DPIClassification.DPI_120:
-                       {
-                               paddingBottom = PADDING_BOTTOM_120DPI;
-                               paddingHorizontal = PADDING_HORIZONTAL_120DPI;
-                               break;
-                       }
-            default:
-            {
-                paddingBottom = PADDING_BOTTOM_DEFAULTDPI;
-                paddingHorizontal = PADDING_HORIZONTAL_DEFAULTDPI;
-                break;
-            }
-        }
-    }
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/TextAreaSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/TextAreaSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/TextAreaSkin.as
deleted file mode 100644
index 6d1fa52..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/TextAreaSkin.as
+++ /dev/null
@@ -1,892 +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.events.Event;
-       import flash.events.FocusEvent;
-       import flash.events.KeyboardEvent;
-       import flash.events.MouseEvent;
-       import flash.events.SoftKeyboardEvent;
-       import flash.geom.Point;
-       import flash.geom.Rectangle;
-       import flash.system.Capabilities;
-       import flash.text.TextLineMetrics;
-       import flash.ui.Keyboard;
-       
-       import mx.core.DPIClassification;
-       import mx.core.EventPriority;
-       import mx.core.FlexGlobals;
-       import mx.core.mx_internal;
-       import mx.events.FlexEvent;
-       import mx.utils.Platform;
-       
-       import spark.components.Group;
-       import spark.components.Scroller;
-       import spark.components.TextArea;
-       import spark.components.supportClasses.StyleableTextField;
-       import spark.events.CaretBoundsChangeEvent;
-       import spark.skins.android4.supportClasses.TextSkinBase;
-       
-       use namespace mx_internal;
-       
-       /**
-        *  ActionScript-based skin for TextArea components in mobile 
applications.
-        * 
-        * @see spark.components.TextArea
-        * 
-        *  @langversion 3.0
-        *  @playerversion Flash 10
-        *  @playerversion AIR 2.5 
-        *  @productversion Flex 4.5
-        */
-       public class TextAreaSkin extends TextSkinBase 
-       {
-               /**
-                *  @private
-                *  Right-margin of iOS native text control when editing on a 
retina display
-                *  based on fontSize 32.
-                */
-               mx_internal static var IOS_RIGHT_MARGIN_320:Number = 19;
-               
-               /**
-                *  @private
-                *  Right-margin of iOS native text control when editing on a 
retina display
-                *  based on fontSize 16 scaling from applicationDPI 160.
-                */
-               mx_internal static var 
IOS_RIGHT_MARGIN_160_SCALED_TO_320:Number = 9.4;
-               
-               /**
-                *  @private
-                *  Right-margin of iOS native text control when editing on a 
standard display
-                *  based on fontSize 16 and runtimeDPI 160.
-                */
-               mx_internal static var IOS_RIGHT_MARGIN_160:Number = 20.6;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Constructor
-               //
-               
//--------------------------------------------------------------------------
-               
-               /**
-                *  Constructor.
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5
-                *  @productversion Flex 4.5
-                */
-               public function TextAreaSkin()
-               {
-                       super();
-                       
-                       addEventListener(Event.RESIZE, resizeHandler);
-                       
-                       switch (applicationDPI)
-                       {
-                               case DPIClassification.DPI_640:
-                               {
-                                       measuredDefaultWidth = 1024;
-                                       measuredDefaultHeight = 212;
-                                       layoutBorderSize = 4;
-                                       flatheight = 9;
-                                       break;
-                               }
-                               case DPIClassification.DPI_480:
-                               {
-                                       measuredDefaultWidth = 880;
-                                       measuredDefaultHeight = 140;
-                                       layoutBorderSize = 3;
-                                       flatheight = 7; 
-                                       break;
-                               }
-                               case DPIClassification.DPI_320:
-                               {
-                                       measuredDefaultWidth = 612;
-                                       measuredDefaultHeight = 106;
-                                       layoutBorderSize = 2;
-                                       flatheight = 6;         
-                                       break;
-                               }
-                               case DPIClassification.DPI_240:
-                               {
-                                       measuredDefaultWidth = 440;
-                                       measuredDefaultHeight = 70;
-                                       layoutBorderSize = 2;
-                                       flatheight = 5;
-                                       break;
-                               }
-                               case DPIClassification.DPI_120:
-                               {
-                                       measuredDefaultWidth = 220;
-                                       measuredDefaultHeight = 35;
-                                       layoutBorderSize = 1;
-                                       flatheight = 2;
-                                       break;
-                               }
-                               default:
-                               {
-                                       measuredDefaultWidth = 306;
-                                       measuredDefaultHeight = 53;
-                                       layoutBorderSize = 1;
-                                       flatheight = 3; 
-                                       break;
-                               }
-                       }
-                       addEventListener(FocusEvent.FOCUS_IN, 
focusChangeHandler);
-                       addEventListener(FocusEvent.FOCUS_OUT, 
focusChangeHandler);
-               }
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Skin parts
-               //
-               
//--------------------------------------------------------------------------
-               
-               /**
-                *  Scroller skin part.
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5 
-                *  @productversion Flex 4.5
-                */ 
-               public var scroller:Scroller;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Properties
-               //
-               
//--------------------------------------------------------------------------
-               
-               /** 
-                *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-                */
-               public var hostComponent:TextArea;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Variables
-               //
-               
//--------------------------------------------------------------------------
-               
-               protected var isFocused:Boolean = false;
-               
-               protected var flatheight:uint;
-               
-               /**
-                *  @private
-                *  The width of the component on the previous layout manager 
-                *  pass.  This gets set in updateDisplayList() and used in 
measure() on 
-                *  the next layout pass.  This is so our "guessed width" in 
measure() 
-                *  will be as accurate as possible since textDisplay is 
multiline and 
-                *  the textDisplay height is dependent on the width.
-                * 
-                *  In the constructor this is actually set based on the DPI.
-                */
-               mx_internal var oldUnscaledWidth:Number;
-               
-               private var textDisplayGroup:Group;
-               private var _isIOS:Boolean;
-               private var invalidateCaretPosition:Boolean = true;
-               private var oldCaretBounds:Rectangle = new Rectangle(-1, -1, 
-1, -1);
-               private var lastTextHeight:Number;
-               private var lastTextWidth:Number;
-               
-               private var isTextDisplayTall:Boolean = true;
-               private var growTextDisplay:Boolean = false;
-               private var shrinkTextDisplay:Boolean = false;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Overridden methods
-               //
-               
//--------------------------------------------------------------------------
-               
-               /**
-                *  @private
-                */
-               override protected function createChildren():void
-               {
-                       if (!textDisplay)
-                       {
-                               // wrap StyleableTextField in UIComponent
-                               textDisplay = 
StyleableTextField(createInFontContext(StyleableTextField));
-                               textDisplay.styleName = this;
-                               textDisplay.multiline = true;
-                               textDisplay.editable = true;
-                               textDisplay.lineBreak = getStyle("lineBreak");
-                               textDisplay.useTightTextBounds = false;
-                               textDisplay.scrollToRangeDelegate = 
scrollToRange;
-                               
-                               // on iOS, resize the TextField and let the 
native control handle scrolling
-                               _isIOS = Platform.isIOS;
-                               
-                               if (_isIOS)
-                               {
-                                       // hard-coded rightMargin for iOS 
native text control
-                                       // this value is independent of the 
paddingRight style
-                                       var rightMargin:Number = 0;
-                                       var isRetina:Boolean = false;
-                                       var isScaling160to320:Boolean = false;
-                                       
-                                       // check for scaling
-                                       if ("runtimeDPI" in 
FlexGlobals.topLevelApplication)
-                                       {
-                                               var runtimeDPI:Number = 
FlexGlobals.topLevelApplication.runtimeDPI as Number;
-                                               isRetina = (runtimeDPI == 
DPIClassification.DPI_320);
-                                               isScaling160to320 = isRetina
-                                                       && (applicationDPI == 
DPIClassification.DPI_160);
-                                       }
-                                       
-                                       if (isRetina && !isScaling160to320)
-                                               rightMargin = 
IOS_RIGHT_MARGIN_320;
-                                       else if (isRetina && isScaling160to320)
-                                               rightMargin = 
IOS_RIGHT_MARGIN_160_SCALED_TO_320;
-                                       else
-                                               rightMargin = 
IOS_RIGHT_MARGIN_160;
-                                       
-                                       textDisplay.rightMargin = rightMargin;
-                               }
-                               else
-                               {
-                                       
textDisplay.addEventListener(KeyboardEvent.KEY_DOWN, textDisplay_keyHandler);
-                               }
-                               
-                               textDisplay.addEventListener(Event.CHANGE, 
textDisplay_changeHandler);
-                               
textDisplay.addEventListener(FlexEvent.VALUE_COMMIT, textDisplay_changeHandler);
-                               textDisplay.addEventListener(Event.SCROLL, 
textDisplay_scrollHandler);
-                               // Use a lower priority so that the 
StyleableTextField event handler is called first. 
-                               // That handler cancels the event and we need 
to check for that case
-                               
textDisplay.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, 
textDisplay_softKeyboardActivatingHandler, false, 
EventPriority.DEFAULT_HANDLER);
-                               
textDisplay.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATE, 
textDisplay_softKeyboardActivateHandler);
-                               
textDisplay.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, 
textDisplay_softKeyboardDeactivateHandler);
-                               
-                               textDisplay.left = getStyle("paddingLeft");
-                               textDisplay.top = getStyle("paddingTop");
-                               textDisplay.right = getStyle("paddingRight");
-                               textDisplay.bottom = getStyle("paddingBottom");
-                               
-                               // wrap StyleableTextComponent in Group for 
viewport
-                               textDisplayGroup = new Group();
-                               textDisplayGroup.clipAndEnableScrolling = true;
-                               textDisplayGroup.addElement(textDisplay);
-                       }
-                       
-                       if (!scroller)
-                       {
-                               scroller = new Scroller();
-                               scroller.minViewportInset = 0;
-                               scroller.measuredSizeIncludesScrollBars = false;
-                               scroller.ensureElementIsVisibleForSoftKeyboard 
= false;
-                               
-                               addChild(scroller);
-                       }
-                       
-                       if (!scroller.viewport)
-                               scroller.viewport = textDisplayGroup;
-                       
-                       super.createChildren();
-               }
-               
-               /**
-                *  @private
-                *  TextArea prompt supports wrapping and multiline
-                */
-               override protected function 
createPromptDisplay():StyleableTextField
-               {
-                       var prompt:StyleableTextField = 
super.createPromptDisplay();
-                       prompt.editable = true;
-                       prompt.wordWrap = true;
-                       
-                       return prompt;
-               }
-               
-               /**
-                *  @private
-                */
-               override protected function measure():void
-               {
-                       super.measure();
-                       
-                       var paddingTop:Number = getStyle("paddingTop");
-                       var paddingBottom:Number = getStyle("paddingBottom");
-                       var paddingLeft:Number = getStyle("paddingLeft");
-                       var paddingRight:Number = getStyle("paddingRight");
-                       
-                       // TextDisplay always defaults to 440 pixels wide (the 
value is DPI dependent), 
-                       // and tall enough to show all text.
-                       // 
-                       // You can set an explicit width and the height will 
adjust accordingly. The opposite
-                       // is not true: setting an explicit height will not 
adjust the width accordingly.
-                       
-                       measuredWidth = measuredDefaultWidth;
-                       
-                       // now we need to measure textDisplay's height.  
Unfortunately, this is tricky and 
-                       // is dependent on textDisplay's width.  Let's use the 
heuristic that our width 
-                       // is the same as our last width.
-                       // We don't use layoutMeasuredWidth, because that value 
is just a constant and doesn't
-                       // take into account the fact that the TextArea could 
have an explicitWidth or could 
-                       // be constrained by some value.  However, we still 
default oldTextDisplayWidth to 
-                       // be layoutMeasuredWidth the first time through.
-                       var textDisplayEstimatedWidth:Number = oldUnscaledWidth 
- paddingLeft - paddingRight;
-                       
-                       // now we need to measure textDisplay's height.  
Unfortunately, this is tricky and 
-                       // is dependent on textDisplay's width.  
-                       // Use the old textDisplay width as an estimte for the 
new one.  
-                       // If we are wrong, we'll find out in 
updateDisplayList()
-                       textDisplay.commitStyles();
-                       
-                       // Clear min sizes first.
-                       textDisplay.minWidth = textDisplay.minHeight = NaN;
-                       
-                       // If lineBreak == explicit, always use NaN for 
estimated width
-                       if (getStyle("lineBreak") == "explicit")
-                               textDisplayEstimatedWidth = NaN;
-                       
-                       setElementSize(textDisplay, textDisplayEstimatedWidth, 
NaN);
-                       
-                       measuredHeight = getElementPreferredHeight(textDisplay) 
+ paddingTop + paddingBottom;
-               }
-               
-               /**
-                *  @private
-                */
-               override protected function 
layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-               {
-                       super.layoutContents(unscaledWidth, unscaledHeight);
-                       
-                       // position & size border
-                       if (border)
-                       {
-                               setElementSize(border, unscaledWidth, 
unscaledHeight);
-                               setElementPosition(border, 0, 0);
-                       }
-                       
-                       setElementSize(scroller, unscaledWidth, unscaledHeight);
-                       setElementPosition(scroller, 0, 0);
-                       
-                       // position & size the text
-                       var explicitLineBreak:Boolean = getStyle("lineBreak") 
== "explicit";
-                       var paddingLeft:Number = getStyle("paddingLeft");
-                       var paddingRight:Number = getStyle("paddingRight");
-                       var paddingTop:Number = getStyle("paddingTop");
-                       var paddingBottom:Number = getStyle("paddingBottom");
-                       
-                       var unscaledTextWidth:Number = unscaledWidth - 
paddingLeft - paddingRight;
-                       var unscaledTextHeight:Number = unscaledHeight - 
paddingTop - paddingBottom;
-                       var textHeight:Number;
-                       var textWidth:Number = explicitLineBreak ? 
textDisplay.measuredTextSize.x : unscaledTextWidth;
-                       
-                       var lineIndex:int;
-                       var topCharIndex:int;
-                       var charBounds:Rectangle;
-                       
-                       // grab old measured textDisplay height before resizing 
it
-                       var oldPreferredTextHeight:Number = 
getElementPreferredHeight(textDisplay);
-                       
-                       // set width first to measure height correctly
-                       textDisplay.commitStyles();
-                       textDisplay.setLayoutBoundsSize(textWidth, NaN);
-                       
-                       // In iOS, when we go into editing mode, the runtime 
overlays a native 
-                       // text control over the textDisplay. In order to 
prevent the text 
-                       // from overflowing the component and to get scrolling 
support, the 
-                       // native text control must be the same size as the 
TextArea
-                       if (_isIOS)
-                       {
-                               if (shrinkTextDisplay)
-                               {
-                                       // Switching to edit mode. Convert from 
viewport scrolling to 
-                                       // TextField scrolling
-                                       var vsp:Number = 
textDisplayGroup.verticalScrollPosition;
-                                       
-                                       var lineMetrics:TextLineMetrics = 
textDisplay.getLineMetrics(0);
-                                       var lineHeight:Number = 
lineMetrics.ascent + lineMetrics.descent;
-                                       
-                                       // TODO Figure out how to get the x 
offset. Right now is hard coded to 2
-                                       // At least half the line should be 
showing before we scroll to that line
-                                       // This makes the conversion from pixel 
to line based scrolling a little less jumpy
-                                       lineIndex = 
textDisplay.getLineIndexAtPoint(2, vsp + lineHeight / 2) + 1;
-                                       textDisplayGroup.verticalScrollPosition 
= 0;
-                                       isTextDisplayTall = false;
-                                       //trace("TAS.layoutContents shrinkText 
vsp",vsp,"lineIndex",lineIndex);
-                               }
-                                       
-                               else if (growTextDisplay)
-                               {
-                                       // Leaving edit mode. Convert from 
TextField scrolling to 
-                                       // viewport scrolling
-                                       var scrollV:Number = 
textDisplay.scrollV;
-                                       
-                                       // TODO (jszeto) investigate using 
lineMetrics.lineHeight * scrollV instead of getCharBoundaries
-                                       topCharIndex = 
textDisplay.getLineOffset(scrollV - 1);
-                                       charBounds = 
textDisplay.getCharBoundaries(topCharIndex);
-                                       // If the charBounds is null, just set 
vsp to 0
-                                       if (charBounds == null)
-                                               charBounds = new Rectangle(0, 
0, 0, 0);
-                                       textDisplay.scrollV = 1;
-                                       isTextDisplayTall = true;
-                                       //trace("TAS.layoutContents growText 
scrollV",scrollV,"topCharIndex",topCharIndex,"charBounds",charBounds);
-                               }
-                       }
-                       
-                       // TextField height should match its content or the 
TextArea bounds at minimum
-                       // iOS special case to prevent Flex Scroller scrolling 
when editable
-                       if (isTextDisplayTall)
-                               textHeight = 
Math.max(textDisplay.measuredTextSize.y, unscaledTextHeight);
-                       else
-                               textHeight = unscaledTextHeight;
-                       
-                       // FIXME (jasonsj): iOS native scroll bar appears even 
when explictHeight
-                       //                  is not specified. Focus-in is jumpy.
-                       
-                       if (promptDisplay)
-                       {
-                               promptDisplay.commitStyles();
-                               setElementSize(promptDisplay, 
unscaledTextWidth, textHeight);
-                               setElementPosition(promptDisplay, paddingLeft, 
paddingTop);
-                               
-                               // no need to update textDisplay if 
promptDisplay is present
-                               return;
-                       }
-                       
-                       // keep track of oldUnscaledWidth so we have a good 
guess as to the width 
-                       // of the textDisplay on the next measure() pass
-                       oldUnscaledWidth = unscaledWidth;
-                       
-                       // set the width of textDisplay to textWidth.
-                       // set the height to oldTextHeight.  If the height's 
actually wrong, 
-                       // we'll invalidateSize() and go through this layout 
pass again anyways
-                       setElementSize(textDisplay, textWidth, textHeight);
-                       
-                       // Set minWidth/Height on the text so the 
textDisplayGroup sizes accordingly
-                       textDisplay.minWidth = textWidth;
-                       textDisplay.minHeight = textHeight;
-                       textDisplayGroup.invalidateDisplayList();
-                       
-                       // grab new measured textDisplay height after the 
textDisplay has taken its final width
-                       var newPreferredTextHeight:Number = 
getElementPreferredHeight(textDisplay);
-                       
-                       // if the resize caused the textDisplay's height to 
change (because of 
-                       // text reflow), then we need to remeasure ourselves 
with our new width
-                       if (oldPreferredTextHeight != newPreferredTextHeight)
-                               invalidateSize();
-                       
-                       if (_isIOS)
-                       {
-                               if (shrinkTextDisplay)
-                               {
-                                       scroller.validateNow();
-                                       textDisplay.scrollV = lineIndex;
-                               }
-                               else if (growTextDisplay)
-                               {
-                                       scroller.validateNow();
-                                       textDisplayGroup.verticalScrollPosition 
= charBounds.y;
-                               }               
-                               
-                               shrinkTextDisplay = false;
-                               growTextDisplay = false;
-                       }
-                       
-                       //trace("TAS.layoutContents 
tH",textHeight,"tW",textWidth,"invalidateCaret",invalidateCaretPosition);
-                       
-                       // checking if text fits in TextArea
-                       // does not apply to iOS due to native text editing and 
scrolling
-                       // invalidateCaretPosition will never be true for iOS
-                       if (invalidateCaretPosition && isTextDisplayTall)
-                       {
-                               // if the caret is outside the viewport, update 
the Group verticalScrollPosition
-                               var charIndex:int = 
textDisplay.selectionBeginIndex;
-                               var caretBounds:Rectangle = 
textDisplay.getCharBoundaries(charIndex);
-                               lineIndex = 
textDisplay.getLineIndexOfChar(charIndex);
-                               
-                               // getCharBoundaries() returns null for new 
lines
-                               if (!caretBounds)
-                               {
-                                       // temporarily insert a character at 
the caretIndex
-                                       textDisplay.replaceText(charIndex, 
charIndex, "W");
-                                       caretBounds = 
textDisplay.getCharBoundaries(charIndex);
-                                       lineIndex = 
textDisplay.getLineIndexOfChar(charIndex);
-                                       textDisplay.replaceText(charIndex, 
charIndex + 1, "");   
-                               }
-                               
-                               if (caretBounds)
-                               {
-                                       // Scroll the internal Scroller to 
ensure the caret is visible
-                                       if (textHeight > unscaledTextHeight)
-                                       {
-                                               
-                                               if (charIndex == 
textDisplay.text.length)
-                                               {
-                                                       // Make sure 
textDisplayGroup is validated, otherwise the 
-                                                       // 
verticalScrollPosition may be out of bounds, which will
-                                                       // cause a bounce 
effect.
-                                                       
textDisplayGroup.validateNow();
-                                                       
textDisplayGroup.verticalScrollPosition = textHeight;
-                                               }
-                                               else
-                                               {
-                                                       // caretTopPositon and 
caretBottomPosition are TextField-relative positions
-                                                       // the TextField is 
inset by padding styles of the TextArea (via the VGroup)
-                                                       
-                                                       // adjust top position 
to 0 when on the first line
-                                                       // caretTopPosition 
will be negative when off stage
-                                                       var 
caretTopPosition:Number = ((caretBounds.y) < 0 || (lineIndex == 0))
-                                                               ? 0 : 
caretBounds.y;
-                                                       
-                                                       // caretBottomPosition 
is the y coordinate of the bottom bounds of the caret
-                                                       var 
caretBottomPosition:Number = caretBounds.y + caretBounds.height;
-                                                       
-                                                       // note that 
verticalScrollPosition min/max do not account for padding
-                                                       var vspTop:Number = 
textDisplayGroup.verticalScrollPosition;
-                                                       
-                                                       // vspBottom should be 
the max visible Y in the TextField
-                                                       // coordinate space.
-                                                       // remove paddingBottom 
for some clearance between caret and border
-                                                       var vspBottom:Number = 
vspTop + unscaledHeight - paddingTop - paddingBottom;
-                                                       
-                                                       // is the caret in or 
below the padding and viewport?
-                                                       if (caretBottomPosition 
> vspBottom)
-                                                       {
-                                                               // adjust 
caretBottomPosition to max scroll position when on the last line
-                                                               if (lineIndex + 
1 == textDisplay.numLines)
-                                                               {
-                                                                       // use 
textHeight+paddings instead of textDisplayGroup.contentHeight
-                                                                       // 
Group has not been resized by this point
-                                                                       
textDisplayGroup.verticalScrollPosition = (textHeight + paddingTop + 
paddingBottom) - textDisplayGroup.height;
-                                                               }
-                                                               else
-                                                               {
-                                                                       // 
bottom edge of the caret moves just inside the bottom edge of the scroller
-                                                                       // add 
delta between caret and vspBottom
-                                                                       
textDisplayGroup.verticalScrollPosition = vspTop + (caretBottomPosition - 
vspBottom);
-                                                               }
-                                                       }
-                                                               // is the caret 
above the viewport?
-                                                       else if 
(caretTopPosition < vspTop)
-                                                       {
-                                                               // top edge of 
the caret moves inside the top edge of the scroller
-                                                               
textDisplayGroup.verticalScrollPosition = caretTopPosition;
-                                                       }
-                                               }
-                                               
-                                               scroller.validateNow();
-                                       }
-                                       
-                                       // Convert to local coordinates
-                                       // Dispatch an event for an ancestor 
Scroller
-                                       // It will scroll the TextArea so the 
caret is in view
-                                       convertBoundsToLocal(caretBounds);
-                                       if (oldCaretBounds == null || 
caretBounds.bottom != oldCaretBounds.bottom || caretBounds.top != 
oldCaretBounds.top)
-                                       {
-                                               //trace("TAS.layoutContents 
send caret CHANGE");
-                                               dispatchEvent(new 
CaretBoundsChangeEvent(CaretBoundsChangeEvent.CARET_BOUNDS_CHANGE,true,true,oldCaretBounds,caretBounds));
-                                       }
-                                       
-                                       oldCaretBounds = caretBounds;   
-                               }
-                               
-                               invalidateCaretPosition = false;
-                       }
-                       
-                       // Make sure final scroll position is valid
-                       if (isTextDisplayTall)
-                               snapTextScrollPosition();
-               }
-               
-               override protected function 
drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-               {
-                       super.drawBackground(unscaledWidth, unscaledHeight);
-                       
-                       var contentBackgroundColor:uint = 
getStyle("contentBackgroundColor");
-                       var contentBackgroundAlpha:Number = 
getStyle("contentBackgroundAlpha"); 
-                       //change border color and thickness when in focus
-                       var borderColor:uint = isFocused ? 
getStyle("focusColor") : getStyle("borderColor");
-                       var selectWidth:uint = isFocused ? layoutBorderSize + 1 
: layoutBorderSize;
-                       if (isNaN(contentBackgroundAlpha))
-                       {
-                               contentBackgroundAlpha = 1;
-                       }        
-                       if (getStyle("contentBackgroundBorder") == "flat")
-                       {               
-                               var halfGap:int = flatheight * 2;
-                               //background
-                               graphics.beginFill(contentBackgroundColor, 
contentBackgroundAlpha);
-                               graphics.drawRect(0, 0, unscaledWidth, 
unscaledHeight - flatheight);
-                               graphics.endFill();
-                               //begin flat border
-                               graphics.beginFill(borderColor, 1);
-                               //left half border
-                               graphics.drawRect(0, unscaledHeight - halfGap, 
selectWidth, flatheight );
-                               //bottom border
-                               graphics.drawRect(0, unscaledHeight - 
flatheight, unscaledWidth, selectWidth);
-                               //right border
-                               graphics.drawRect(unscaledWidth - selectWidth, 
unscaledHeight - halfGap, selectWidth, flatheight);
-                               graphics.endFill();
-                       }
-                       else if (getStyle("contentBackgroundBorder") == 
"rectangle")
-                       {
-                               var borderWidth:uint = layoutBorderSize * 2;
-                               //rectangle border and background
-                               graphics.lineStyle(selectWidth, borderColor, 1);
-                               graphics.beginFill(contentBackgroundColor, 
contentBackgroundAlpha);
-                               graphics.drawRect(layoutBorderSize, 
layoutBorderSize, unscaledWidth - borderWidth, unscaledHeight - borderWidth);
-                               graphics.endFill();
-                       }
-               }
-               
-               /**
-                *  @private
-                *  Make sure the scroll positions are valid, and adjust if 
needed.
-                */
-               private function snapTextScrollPosition():void
-               {
-                       var maxHsp:Number = textDisplayGroup.contentWidth > 
textDisplayGroup.width ? 
-                               
textDisplayGroup.contentWidth-textDisplayGroup.width : 0; 
-                       textDisplayGroup.horizontalScrollPosition = 
-                               
Math.min(Math.max(0,textDisplayGroup.horizontalScrollPosition),maxHsp);
-                       
-                       var maxVsp:Number = textDisplayGroup.contentHeight > 
textDisplayGroup.height ? 
-                               
textDisplayGroup.contentHeight-textDisplayGroup.height : 0; 
-                       
-                       textDisplayGroup.verticalScrollPosition = 
-                               
Math.min(Math.max(0,textDisplayGroup.verticalScrollPosition),maxVsp);
-               }
-               
-               /**
-                *  @private
-                *  Get the bounds of the caret
-                */    
-               private function getCaretBounds():Rectangle
-               {
-                       var charIndex:int = textDisplay.selectionBeginIndex;
-                       var caretBounds:Rectangle = 
textDisplay.getCharBoundaries(charIndex);
-                       
-                       if (!caretBounds)
-                       {
-                               textDisplay.replaceText(charIndex, charIndex, 
"W");
-                               caretBounds = 
textDisplay.getCharBoundaries(charIndex);
-                               textDisplay.replaceText(charIndex, charIndex + 
1, "");
-                       }
-                       
-                       return caretBounds;
-               }
-               
-               /**
-                *  @private
-                *  Convert bounds from textDisplay to local coordinates
-                */
-               private function convertBoundsToLocal(bounds:Rectangle):void
-               {
-                       if (bounds)
-                       {
-                               var position:Point = new Point(bounds.x, 
bounds.y);
-                               position = textDisplay.localToGlobal(position);
-                               position = globalToLocal(position);
-                               bounds.x = position.x;
-                               bounds.y = position.y;
-                       }
-               }
-               
-               /**
-                *  @private
-                */
-               private function scrollToRange(anchorPosition:int, 
activePosition:int):void
-               {
-                       var pos:int = Math.min(anchorPosition, activePosition);
-                       var bounds:Rectangle = 
textDisplay.getCharBoundaries(pos);
-                       var vsp:int = textDisplayGroup.verticalScrollPosition;
-                       var paddingTop:Number = getStyle("paddingTop");
-                       var paddingBottom:Number = getStyle("paddingBottom");
-                       
-                       if (bounds && (bounds.top < vsp - paddingTop || 
-                               bounds.bottom > vsp + unscaledHeight - 
paddingTop - paddingBottom))
-                       {
-                               textDisplayGroup.verticalScrollPosition = 
bounds.top + paddingTop;
-                               snapTextScrollPosition();
-                       }
-               }
-               
-               /**
-                *  @private
-                *  Handle size and caret position changes that occur when text 
content
-                *  changes.
-                */
-               private function textDisplay_changeHandler(event:Event):void
-               {
-                       var tH:Number = textDisplay.textHeight;
-                       var tW:Number = textDisplay.textWidth;
-                       var explicitLineBreak:Boolean = getStyle("lineBreak") 
== "explicit";
-                       
-                       // Size and caret position have changed if the text 
height is different or
-                       // the text width is different and we aren't word 
wrapping
-                       if (tH != lastTextHeight || ( explicitLineBreak && tW 
!= lastTextWidth))
-                       {
-                               invalidateSize();
-                               invalidateDisplayList();
-                               invalidateCaretPosition = true;   
-                       }
-                       
-                       lastTextHeight = tH;
-                       lastTextWidth = tW;
-               }
-               
-               /**
-                *  @private
-                *  Cancels any native scroll that the Flash Player attempts to 
do
-                */
-               private function textDisplay_scrollHandler(event:Event):void
-               {
-                       // if iOS, let the OS handle scrolling
-                       if (_isIOS)
-                               return;
-                       
-                       // If not IOS, we will handle scrolling, so don't let 
the native
-                       // flash textfield scroll at all.
-                       if (textDisplay.scrollV > 1)
-                               textDisplay.scrollV = 1;
-                       if (textDisplay.scrollH > 0)
-                               textDisplay.scrollH = 0;
-               }
-               
-               /**
-                *  @private
-                *  Adjust viewport when using key navigation
-                */
-               private function 
textDisplay_keyHandler(event:KeyboardEvent):void
-               {
-                       // update scroll position when caret changes
-                       if ((event.keyCode == Keyboard.UP
-                               || event.keyCode == Keyboard.DOWN
-                               || event.keyCode == Keyboard.LEFT
-                               || event.keyCode == Keyboard.RIGHT))
-                       {
-                               invalidateDisplayList();
-                               invalidateCaretPosition = true;
-                       }
-                       
-                       // Change event is not always sent when delete key is 
pressed, so
-                       // invalidate the size here
-                       if (event.keyCode == Keyboard.BACKSPACE)
-                       {
-                               invalidateSize();
-                       }
-               }
-               
-               /**
-                *  @private
-                *  When entering edit mode on iOS, we need to shrink the 
textDisplay to 
-                *  the size of the TextArea  
-                */ 
-               private function 
textDisplay_softKeyboardActivatingHandler(event:SoftKeyboardEvent):void
-               {
-                       if (event.isDefaultPrevented())
-                               return;
-                       
-                       if (_isIOS && isTextDisplayTall)
-                       {
-                               //trace("TAS.SK ACTIVATING targ",event.target);
-                               shrinkTextDisplay = true;
-                               invalidateDisplayList();
-                               validateNow();
-                       }
-               }  
-               
-               /**
-                *  @private
-                *  Send a caret change event to an ancestor Scroller
-                */
-               private function 
textDisplay_softKeyboardActivateHandler(event:SoftKeyboardEvent):void
-               {
-                       var keyboardRect:Rectangle = stage.softKeyboardRect;
-                       
-                       if (keyboardRect.width > 0 && keyboardRect.height > 0)
-                       {
-                               var newCaretBounds:Rectangle = getCaretBounds();
-                               convertBoundsToLocal(newCaretBounds);
-                               
-                               if (oldCaretBounds != newCaretBounds)
-                               {
-                                       //trace("TAS.SK 
ACTIVATE",keyboardRect,"dispatch caret CHANGE","newCaretBounds",newCaretBounds);
-                                       dispatchEvent(new 
CaretBoundsChangeEvent(CaretBoundsChangeEvent.CARET_BOUNDS_CHANGE,true,true,oldCaretBounds,newCaretBounds));
-                                       oldCaretBounds = newCaretBounds;
-                               }
-                       }
-               }
-               
-               /**
-                *  @private
-                *  On iOS, when leaving edit mode, we need to restore the 
textDisplay to the
-                *  height of the text.
-                */  
-               private function 
textDisplay_softKeyboardDeactivateHandler(event:SoftKeyboardEvent):void
-               {
-                       if (_isIOS && !isTextDisplayTall)
-                       {
-                               growTextDisplay = true;
-                               invalidateDisplayList();
-                       }
-               }
-               
-               /**
-                *  @private
-                */
-               private function resizeHandler(event:Event):void
-               {
-                       // Resizing needs to tickle the TextArea's internal 
auto-scroll logic
-                       invalidateCaretPosition = true;
-                       invalidateDisplayList();
-               }
-               
-               /**
-                *  @private
-                */
-               override public function styleChanged(styleProp:String):void
-               {
-                       super.styleChanged(styleProp);
-                       
-                       // propogate styleChanged explicitly to textDisplay
-                       if (textDisplay)
-                               textDisplay.styleChanged(styleProp);
-                       
-                       // Check for padding style changes
-                       if (!styleProp || styleProp == "styleName" || 
styleProp.indexOf("padding") >= 0)
-                       {
-                               if (textDisplay)
-                               {
-                                       textDisplay.left = 
getStyle("paddingLeft");
-                                       textDisplay.top = 
getStyle("paddingTop");
-                                       textDisplay.right = 
getStyle("paddingRight");
-                                       textDisplay.bottom = 
getStyle("paddingBottom");
-                               }
-                       }
-               }
-               
-               private function focusChangeHandler(event:FocusEvent):void
-               {
-                       isFocused = event.type == FocusEvent.FOCUS_IN;
-                       invalidateDisplayList();                
-               }
-               
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarSkin.as
----------------------------------------------------------------------
diff --git 
a/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarSkin.as
deleted file mode 100644
index f65b679..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarSkin.as
+++ /dev/null
@@ -1,105 +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.DPIClassification;
-import mx.core.mx_internal;
-
-use namespace mx_internal;
-
-/**
- *  ActionScript-based skin for TextAreaVScrollBar components in mobile 
applications.
- * 
- *  @langversion 3.0
- *  @playerversion Flash 10.1
- *  @playerversion AIR 2.5 
- *  @productversion Flex 4.5
- */
-public class TextAreaVScrollBarSkin extends VScrollBarSkin
-{
-    /**
-     *  Constructor. 
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     * 
-     */ 
-    public function TextAreaVScrollBarSkin()
-    {
-        super();
-
-        thumbSkinClass = TextAreaVScrollBarThumbSkin;
-        var paddingRight:int;
-        var paddingVertical:int;
-
-        switch (applicationDPI)
-        {
-                       case DPIClassification.DPI_640:
-                       {
-                               minWidth = 30;
-                               paddingRight = 
TextAreaVScrollBarThumbSkin.PADDING_RIGHT_640DPI;
-                               paddingVertical = 
TextAreaVScrollBarThumbSkin.PADDING_VERTICAL_640DPI;
-                               break;
-                       }
-                       case DPIClassification.DPI_480:
-                       {
-                               minWidth = 22;
-                               paddingRight = 
TextAreaVScrollBarThumbSkin.PADDING_RIGHT_480DPI;
-                               paddingVertical = 
TextAreaVScrollBarThumbSkin.PADDING_VERTICAL_480DPI;
-                               break;
-                       }
-            case DPIClassification.DPI_320:
-            {
-                minWidth = 15;
-                paddingRight = 
TextAreaVScrollBarThumbSkin.PADDING_RIGHT_320DPI;
-                paddingVertical = 
TextAreaVScrollBarThumbSkin.PADDING_VERTICAL_320DPI;
-                break;
-            }
-                       case DPIClassification.DPI_240:
-                       {
-                               minWidth = 11;
-                               paddingRight = 
TextAreaVScrollBarThumbSkin.PADDING_RIGHT_240DPI;
-                               paddingVertical = 
TextAreaVScrollBarThumbSkin.PADDING_VERTICAL_240DPI;
-                               break;
-                       }
-                       case DPIClassification.DPI_120:
-                       {
-                               minWidth = 6;
-                               paddingRight = 
TextAreaVScrollBarThumbSkin.PADDING_RIGHT_120DPI;
-                               paddingVertical = 
TextAreaVScrollBarThumbSkin.PADDING_VERTICAL_120DPI;
-                               break;
-                       }
-            default:
-            {
-                // default DPI_160
-                minWidth = 9;
-                paddingRight = 
TextAreaVScrollBarThumbSkin.PADDING_RIGHT_DEFAULTDPI;
-                paddingVertical = 
TextAreaVScrollBarThumbSkin.PADDING_VERTICAL_DEFAULTDPI;
-                break;
-            }
-        }
-        
-        // The minimum height is set such that, at it's smallest size, the 
thumb appears
-        // as high as it is wide.
-        minThumbHeight = (minWidth - paddingRight) + (paddingVertical * 2);  
-    }
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarThumbSkin.as
----------------------------------------------------------------------
diff --git 
a/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarThumbSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarThumbSkin.as
deleted file mode 100644
index 5cc1ea0..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/TextAreaVScrollBarThumbSkin.as
+++ /dev/null
@@ -1,117 +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.DPIClassification;
-import mx.core.mx_internal;
-
-use namespace mx_internal;
-
-/**
- *  The ActionScript-based skin used for TextAreaHScrollBarThumb components
- *  in mobile applications.
- * 
- *  @langversion 3.0
- *  @playerversion AIR 2.5 
- *  @productversion Flex 4.5
- * 
- */
-public class TextAreaVScrollBarThumbSkin extends VScrollBarThumbSkin
-{
-    
//--------------------------------------------------------------------------
-    //
-    //  Class constants
-    //
-    
//--------------------------------------------------------------------------
-    
-    // These constants are also accessed from TextAreaVScrollBarSkin
-       mx_internal static const PADDING_RIGHT_640DPI:int = 16;
-       mx_internal static const PADDING_VERTICAL_640DPI:int = 24;
-       mx_internal static const PADDING_RIGHT_480DPI:int = 12;
-       mx_internal static const PADDING_VERTICAL_480DPI:int = 18;
-       mx_internal static const PADDING_RIGHT_320DPI:int = 8;
-    mx_internal static const PADDING_VERTICAL_320DPI:int = 12;
-       mx_internal static const PADDING_RIGHT_240DPI:int = 4;
-       mx_internal static const PADDING_VERTICAL_240DPI:int = 6;
-       mx_internal static const PADDING_RIGHT_120DPI:int = 2;
-       mx_internal static const PADDING_VERTICAL_120DPI:int = 3;
-    mx_internal static const PADDING_RIGHT_DEFAULTDPI:int = 4;
-    mx_internal static const PADDING_VERTICAL_DEFAULTDPI:int = 6;
-    
-    
//--------------------------------------------------------------------------
-    //
-    //  Constructor
-    //
-    
//-------------------------------------------------------------------------- 
-    /**
-     *  Constructor.
-     * 
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     * 
-     */
-    public function TextAreaVScrollBarThumbSkin()
-    {
-        super();
-        
-        // Depending on density set padding
-        switch (applicationDPI)
-        {
-                       case DPIClassification.DPI_640:
-                       {
-                               paddingRight = PADDING_RIGHT_640DPI;
-                               paddingVertical = PADDING_VERTICAL_640DPI;
-                               break;
-                       }
-                       case DPIClassification.DPI_480:
-                       {
-                               paddingRight = PADDING_RIGHT_480DPI;
-                               paddingVertical = PADDING_VERTICAL_480DPI;
-                               break;
-                       }               
-            case DPIClassification.DPI_320:
-            {
-                paddingRight = PADDING_RIGHT_320DPI;
-                paddingVertical = PADDING_VERTICAL_320DPI;
-                break;
-            }
-                       case DPIClassification.DPI_240:
-                       {
-                               paddingRight = PADDING_RIGHT_240DPI;
-                               paddingVertical = PADDING_VERTICAL_240DPI;
-                               break;
-                       }
-                       case DPIClassification.DPI_120:
-                       {
-                               paddingRight = PADDING_RIGHT_120DPI;
-                               paddingVertical = PADDING_VERTICAL_120DPI;
-                               break;
-                       }
-            default:
-            {
-                paddingRight = PADDING_RIGHT_DEFAULTDPI;
-                paddingVertical = PADDING_VERTICAL_DEFAULTDPI;
-                break;
-            }
-        }
-    }
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/TextInputSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/TextInputSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/TextInputSkin.as
deleted file mode 100644
index 1ec2c11..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/TextInputSkin.as
+++ /dev/null
@@ -1,375 +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.events.Event;
-       import flash.events.FocusEvent;
-       import flash.events.SoftKeyboardEvent;
-       
-       import mx.core.DPIClassification;
-       import mx.core.EventPriority;
-       import mx.core.mx_internal;
-       import mx.events.FlexEvent;
-       import mx.utils.Platform;
-       
-       import spark.components.TextInput;
-       import spark.components.supportClasses.StyleableTextField;
-       import spark.skins.android4.supportClasses.TextSkinBase;
-       
-       use namespace mx_internal;
-       
-       /**
-        *  ActionScript-based skin for TextInput controls in mobile 
applications. 
-        * 
-        * @see spark.components.TextInput
-        * 
-        *  @langversion 3.0
-        *  @playerversion Flash 10
-        *  @playerversion AIR 2.5 
-        *  @productversion Flex 4.5
-        */
-       public class TextInputSkin extends TextSkinBase
-       {
-               
//--------------------------------------------------------------------------
-               //
-               //  Constructor
-               //
-               
//--------------------------------------------------------------------------
-               
-               /**
-                *  Constructor.
-                *  
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5
-                *  @productversion Flex 4.5
-                */
-               public function TextInputSkin()
-               {
-                       super();
-                       
-                       // on iOS, make adjustments for native text rendering
-                       _isIOS = Platform.isIOS;
-                       
-                       switch (applicationDPI)
-                       {
-                               case DPIClassification.DPI_640:
-                               {
-                                       measuredDefaultWidth = 1200;
-                                       measuredDefaultHeight = 132;
-                                       layoutBorderSize = 4;
-                                       flatheight = 9;
-                                       break;
-                               }
-                               case DPIClassification.DPI_480:
-                               {
-                                       
-                                       measuredDefaultWidth = 880;
-                                       measuredDefaultHeight = 100;
-                                       layoutBorderSize = 3;
-                                       flatheight = 7;                         
-                                       break;
-                               }
-                               case DPIClassification.DPI_320:
-                               {
-                                       measuredDefaultWidth = 600;
-                                       measuredDefaultHeight = 66;
-                                       layoutBorderSize = 2;
-                                       flatheight = 6;                         
-                                       break;
-                               }
-                               case DPIClassification.DPI_240:
-                               {
-                                       measuredDefaultWidth = 440;
-                                       measuredDefaultHeight = 50;
-                                       layoutBorderSize = 2;
-                                       flatheight = 5;
-                                       break;
-                               }
-                               case DPIClassification.DPI_120:
-                               {
-                                       measuredDefaultWidth = 220;
-                                       measuredDefaultHeight = 25;
-                                       layoutBorderSize = 1;
-                                       flatheight = 2;                         
        
-                                       break;
-                               }
-                               default:
-                               {
-                                       measuredDefaultWidth = 300;
-                                       measuredDefaultHeight = 33;
-                                       layoutBorderSize = 1;
-                                       flatheight = 3; 
-                                       break;
-                               }
-                       }
-                       addEventListener(FocusEvent.FOCUS_IN, 
focusChangeHandler);
-                       addEventListener(FocusEvent.FOCUS_OUT, 
focusChangeHandler);
-               }
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Variables
-               //
-               
//--------------------------------------------------------------------------
-               
-               protected var isFocused:Boolean = false;
-               
-               protected var flatheight:uint;
-               
-               /** 
-                *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-                */
-               public var hostComponent:TextInput;  // SkinnableComponent will 
populate
-               
-               /**
-                *  @private
-                */
-               private var _isIOS:Boolean;
-               
-               /**
-                *  @private
-                */
-               private var _isEditing:Boolean;
-               
-               /**
-                *  @private
-                */
-               override protected function createChildren():void
-               {
-                       super.createChildren();
-                       
-                       textDisplay.addEventListener("editableChanged", 
editableChangedHandler);
-                       textDisplay.addEventListener(FlexEvent.VALUE_COMMIT, 
valueCommitHandler);
-                       
-                       // remove hit area improvements on iOS when editing
-                       if (_isIOS)
-                       {
-                               
textDisplay.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_ACTIVATING, 
textDisplay_softKeyboardActivatingHandler, false, 
EventPriority.DEFAULT_HANDLER);
-                               
textDisplay.addEventListener(SoftKeyboardEvent.SOFT_KEYBOARD_DEACTIVATE, 
textDisplay_softKeyboardDeactivateHandler);
-                       }
-               }
-               
-               /**
-                *  @private
-                */
-               override protected function measure():void
-               {
-                       super.measure();
-                       
-                       var paddingLeft:Number = getStyle("paddingLeft");
-                       var paddingRight:Number = getStyle("paddingRight");
-                       var paddingTop:Number = getStyle("paddingTop");
-                       var paddingBottom:Number = getStyle("paddingBottom");
-                       var textHeight:Number = getStyle("fontSize") as Number;
-                       
-                       if (textDisplay)
-                       {
-                               // temporarily change text for measurement
-                               var oldText:String = textDisplay.text;
-                               
-                               // commit styles so we can get a valid 
textHeight
-                               textDisplay.text = "Wj";
-                               textDisplay.commitStyles();
-                               
-                               textHeight = textDisplay.measuredTextSize.y;
-                               textDisplay.text = oldText;
-                       }
-                       
-                       // width is based on maxChars (if set)
-                       if (hostComponent && hostComponent.maxChars)
-                       {
-                               // Grab the fontSize and subtract 2 as the 
pixel value for each character.
-                               // This is just an approximation, but it 
appears to be a reasonable one
-                               // for most input and most font.
-                               var characterWidth:int = Math.max(1, 
(getStyle("fontSize") - 2));
-                               measuredWidth =  (characterWidth * 
hostComponent.maxChars) + 
-                                       paddingLeft + paddingRight + 
StyleableTextField.TEXT_WIDTH_PADDING;
-                       }
-                       
-                       measuredHeight = paddingTop + textHeight + 
paddingBottom;
-               }
-               
-               /**
-                *  @private
-                */
-               override protected function 
layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-               {
-                       super.layoutContents(unscaledWidth, unscaledHeight);
-                       
-                       // position & size border
-                       if (border)
-                       {
-                               setElementSize(border, unscaledWidth, 
unscaledHeight);
-                               setElementPosition(border, 0, 0);
-                       }
-                       
-                       // position & size the text
-                       var paddingLeft:Number = getStyle("paddingLeft");
-                       var paddingRight:Number = getStyle("paddingRight");
-                       var paddingTop:Number = getStyle("paddingTop");
-                       var paddingBottom:Number = getStyle("paddingBottom");
-                       
-                       var unscaledTextWidth:Number = unscaledWidth - 
paddingLeft - paddingRight;
-                       var unscaledTextHeight:Number = unscaledHeight - 
paddingTop - paddingBottom;
-                       
-                       // default vertical positioning is centered
-                       var textHeight:Number = 
getElementPreferredHeight(textDisplay);
-                       var textY:Number = Math.round(0.5 * (unscaledTextHeight 
- textHeight)) + paddingTop;
-                       
-                       // On iOS the TextField top and bottom edges are 
bounded by the padding.
-                       // On all other platforms, the height of the 
textDisplay is
-                       // textHeight + paddingBottom to increase hitArea on 
bottom.
-                       // Note: We don't move the Y position upwards because 
TextField
-                       // has way to set vertical positioning.
-                       // Note: iOS is a special case due to the clear button 
provided by the
-                       // native text control used while editing.
-                       var adjustedTextHeight:Number = (_isIOS && _isEditing) 
? textHeight : textHeight + paddingBottom;
-                       
-                       if (textDisplay)
-                       {
-                               // We're going to do a few tricks to try to 
increase the size of our hitArea to make it 
-                               // easier for users to select text or put the 
caret in a certain spot.  To do that, 
-                               // rather than set textDisplay.x=paddingLeft,  
we are going to set 
-                               // textDisplay.leftMargin = paddingLeft.  In 
addition, we're going to size the height 
-                               // of the textDisplay larger than just the size 
of the text inside to increase the hitArea
-                               // on the bottom.  We'll also assign 
textDisplay.rightMargin = paddingRight to increase the 
-                               // the hitArea on the right.  Unfortunately, 
there's no way to increase the hitArea on the top
-                               // just yet, but these three tricks definitely 
help out with regards to user experience.  
-                               // See 
http://bugs.adobe.com/jira/browse/SDK-29406 and 
http://bugs.adobe.com/jira/browse/SDK-29405
-                               
-                               // set leftMargin, rightMargin to increase the 
hitArea.  Need to set it before calling commitStyles().
-                               var marginChanged:Boolean = 
((textDisplay.leftMargin != paddingLeft) || 
-                                       (textDisplay.rightMargin != 
paddingRight));
-                               
-                               textDisplay.leftMargin = paddingLeft;
-                               textDisplay.rightMargin = paddingRight;
-                               
-                               // need to force a styleChanged() after setting 
leftMargin, rightMargin if they 
-                               // changed values.  Then we can validate the 
styles through commitStyles()
-                               if (marginChanged)
-                                       textDisplay.styleChanged(null);
-                               textDisplay.commitStyles();
-                               
-                               setElementSize(textDisplay, unscaledWidth, 
adjustedTextHeight);
-                               
-                               // set x=0 since we're using 
textDisplay.leftMargin = paddingLeft
-                               setElementPosition(textDisplay, 0, textY);
-                       }
-                       
-                       if (promptDisplay)
-                       {
-                               promptDisplay.commitStyles();
-                               setElementSize(promptDisplay, 
unscaledTextWidth, adjustedTextHeight);
-                               setElementPosition(promptDisplay, paddingLeft, 
textY);
-                       }
-               }
-               
-               override protected function 
drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-               {
-                       super.drawBackground(unscaledWidth, unscaledHeight);
-                       
-                       var contentBackgroundColor:uint = 
getStyle("contentBackgroundColor");
-                       var contentBackgroundAlpha:Number = 
getStyle("contentBackgroundAlpha"); 
-                       //change border color and thickness when in focus
-                       var borderColor:uint = isFocused ? 
getStyle("focusColor") : getStyle("borderColor");
-                       var selectWidth:uint = isFocused ? layoutBorderSize + 1 
: layoutBorderSize;
-                       if (isNaN(contentBackgroundAlpha))
-                       {
-                               contentBackgroundAlpha = 1;
-                       }        
-                       if (getStyle("contentBackgroundBorder") == "flat")
-                       {               
-                               var halfGap:int = flatheight * 2;
-                               //background
-                               graphics.beginFill(contentBackgroundColor, 
contentBackgroundAlpha);
-                               graphics.drawRect(0, 0, unscaledWidth, 
unscaledHeight - flatheight);
-                               graphics.endFill();
-                               //begin flat border
-                               graphics.beginFill(borderColor, 1);
-                               //left half border
-                               graphics.drawRect(0, unscaledHeight - halfGap, 
selectWidth, flatheight );
-                               //bottom border
-                               graphics.drawRect(0, unscaledHeight - 
flatheight, unscaledWidth, selectWidth);
-                               //right border
-                               graphics.drawRect(unscaledWidth - selectWidth, 
unscaledHeight - halfGap, selectWidth, flatheight);
-                               graphics.endFill();
-                       }
-                       else if (getStyle("contentBackgroundBorder") == 
"rectangle")
-                       {
-                               var borderWidth:uint = layoutBorderSize * 2;
-                               //rectangle border and background
-                               graphics.lineStyle(selectWidth, borderColor, 1);
-                               graphics.beginFill(contentBackgroundColor, 
contentBackgroundAlpha);
-                               graphics.drawRect(layoutBorderSize, 
layoutBorderSize, unscaledWidth - borderWidth, unscaledHeight - borderWidth);
-                               graphics.endFill();
-                       }
-               }
-               
-               /**
-                *  @private
-                */
-               private function editableChangedHandler(event:Event):void
-               {
-                       invalidateDisplayList();
-               }
-               
-               /**
-                *  @private
-                *  The text changed in some way.
-                * 
-                *  Dynamic fields (ie !editable) with no text measure with 
width=0 and height=0.
-                *  If the text changed, need to remeasure the text to get the 
correct height so it
-                *  will be laid out correctly.
-                */
-               private function valueCommitHandler(event:Event):void
-               {
-                       if (textDisplay && !textDisplay.editable)
-                               invalidateDisplayList();
-               }
-               
-               /**
-                *  @private
-                */
-               private function 
textDisplay_softKeyboardActivatingHandler(event:SoftKeyboardEvent):void
-               {
-                       if (event.isDefaultPrevented())
-                               return;
-                       
-                       _isEditing = true;
-                       invalidateDisplayList();
-               }
-               
-               /**
-                *  @private
-                */
-               private function 
textDisplay_softKeyboardDeactivateHandler(event:SoftKeyboardEvent):void
-               {
-                       _isEditing = false;
-                       invalidateDisplayList();
-               }
-               
-               private function focusChangeHandler(event:FocusEvent):void
-               {
-                       isFocused = event.type == FocusEvent.FOCUS_IN;
-                       invalidateDisplayList();                
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/ToggleSwitchSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/ToggleSwitchSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/ToggleSwitchSkin.as
deleted file mode 100644
index 7f50554..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/ToggleSwitchSkin.as
+++ /dev/null
@@ -1,506 +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.events.Event;
-       
-       import mx.core.DPIClassification;
-       import mx.core.IVisualElement;
-       import mx.core.UIComponent;
-       
-       import spark.components.ToggleSwitch;
-       import spark.components.supportClasses.StyleableTextField;
-       import spark.core.SpriteVisualElement;
-       import spark.skins.android4.assets.ToggleSwitchBackground;
-       import spark.skins.android4.assets.ToggleSwitchThumb_off;
-       import spark.skins.mobile.supportClasses.MobileSkin;
-       
-       
-       /**
-        *  ActionScript-based Android 4.x specific skin for the ToggleSwitch 
control. 
-        *  This class is responsible for most of the 
-        *  graphics drawing, with additional fxg assets.
-        *  
-        *  
-        *  @langversion 3.0
-        *  @playerversion AIR 3
-        *  @productversion Flex 4.6
-        *
-        *  @see spark.components.ToggleSwitch 
-        */
-       public class ToggleSwitchSkin extends MobileSkin
-       {
-               
//----------------------------------------------------------------------------------------------
-               //
-               //  Skin parts
-               //
-               
//----------------------------------------------------------------------------------------------
-               
-               /**
-                *  The thumb skin part.
-                *  
-                *  @langversion 3.0
-                *  @playerversion AIR 3
-                *  @productversion Flex 4.6
-                */             
-               public var thumb:IVisualElement;
-               /**
-                *  The track skin part.
-                *  
-                *  @langversion 3.0
-                *  @playerversion AIR 3
-                *  @productversion Flex 4.6
-                */
-               public var track:IVisualElement;
-               
-               //----------------------------------
-               //  hostComponent
-               //----------------------------------
-               
-               private var _hostComponent:ToggleSwitch;
-               public var selectedLabelDisplay:LabelDisplayComponent;
-               
-               /**
-                * @copy spark.skins.spark.ApplicationSkin#hostComponent
-                */
-               public function get hostComponent():ToggleSwitch
-               {
-                       return _hostComponent;
-               }
-               
-               public function set hostComponent(value:ToggleSwitch):void 
-               {
-                       if (_hostComponent)
-                               
_hostComponent.removeEventListener("thumbPositionChanged", 
thumbPositionChanged_handler);
-                       _hostComponent = value;
-                       if (_hostComponent)
-                               
_hostComponent.addEventListener("thumbPositionChanged", 
thumbPositionChanged_handler);
-               }
-               
-               //----------------------------------
-               //  selectedLabel
-               //----------------------------------
-               
-               private var _selectedLabel:String;
-               /**
-                *  The text of the label showing when the component is 
selected.
-                *  Subclasses can set or override this property to customize 
the selected label.
-                *  
-                *  @langversion 3.0
-                *  @playerversion AIR 3
-                *  @productversion Flex 4.6
-                */
-               protected function get selectedLabel():String 
-               {
-                       return _selectedLabel;
-               }
-               
-               protected function set selectedLabel(value:String):void
-               {
-                       _selectedLabel = value;
-               }
-               
-               //----------------------------------
-               //  unselectedLabel
-               //----------------------------------
-               
-               private var _unselectedLabel:String;
-               /**
-                *  The text of the label showing when the component is not 
selected.
-                *  Subclasses can set or override this property to customize 
the unselected label.
-                * 
-                *  @langversion 3.0
-                *  @playerversion AIR 3
-                *  @productversion Flex 4.6
-                */
-               protected function get unselectedLabel():String 
-               {
-                       return _unselectedLabel;
-               }
-               
-               protected function set unselectedLabel(value:String):void
-               {
-                       _unselectedLabel = value;
-               }
-               
-               
-               /**
-                *  The contents inside the skin, not including the outline
-                *  stroke
-                */
-               private var contents:UIComponent;
-               private var switchTrack:Class;
-               private var switchOff:Class;
-               private var switchOn:Class;
-               protected var trackWidth:Number;
-               protected var trackHeight:Number;
-               protected var layoutThumbWidth:Number;
-               protected var layoutThumbHeight:Number;
-               private var thumbOn:IVisualElement;
-               private var thumbOff:IVisualElement;
-               
-               public function ToggleSwitchSkin()
-               {
-                       super();
-                       
-                       switchTrack = 
spark.skins.android4.assets.ToggleSwitchBackground;
-                       switchOn = 
spark.skins.android4.assets.ToggleSwitchThumb_on;
-                       switchOff = 
spark.skins.android4.assets.ToggleSwitchThumb_off;
-                       
-                       switch(applicationDPI) 
-                       {       
-                               case DPIClassification.DPI_640:
-                               {
-                                       layoutThumbWidth = 188;
-                                       layoutThumbHeight = 96;
-                                       trackWidth = 388;
-                                       trackHeight = 96;
-                                       break;
-                               }
-                               case DPIClassification.DPI_480:
-                               {
-                                       layoutThumbWidth = 140;
-                                       layoutThumbHeight = 72;
-                                       trackWidth = 291;
-                                       trackHeight = 72;
-                                       break;
-                               }               
-                               case DPIClassification.DPI_320:
-                               {
-                                       layoutThumbWidth = 94;
-                                       layoutThumbHeight = 48;
-                                       trackWidth = 194;
-                                       trackHeight = 48;
-                                       break;
-                               }
-                               case DPIClassification.DPI_240:
-                               {
-                                       layoutThumbWidth = 70;
-                                       layoutThumbHeight = 36;
-                                       trackWidth = 146;
-                                       trackHeight = 36;
-                                       break;
-                               }
-                               case DPIClassification.DPI_120:
-                               {
-                                       layoutThumbWidth = 35;
-                                       layoutThumbHeight = 18;
-                                       trackWidth = 73;
-                                       trackHeight = 18;
-                                       break;
-                               }
-                               default:
-                               {
-                                       layoutThumbWidth = 47;
-                                       layoutThumbHeight = 24;
-                                       trackWidth = 97;
-                                       trackHeight = 24;
-                                       break;
-                               }
-                       }
-                       
-                       selectedLabel = 
resourceManager.getString("components","toggleSwitchSelectedLabel");
-                       unselectedLabel =  
resourceManager.getString("components","toggleSwitchUnselectedLabel");
-               }
-               
-               override protected function createChildren():void
-               {
-                       super.createChildren();
-                       contents = new UIComponent();
-                       contents.blendMode = BlendMode.LAYER;
-                       addChild(contents);
-                       drawTrack();
-                       drawThumbs();
-                       drawLabel();
-               }
-               
-               override protected function measure():void 
-               {
-                       // The skin must be at least as large as the thumb
-                       measuredMinWidth = layoutThumbWidth;
-                       measuredMinHeight = layoutThumbHeight;
-                       
-                       // The preferred size will display all label text
-                       var labelWidth:Number = 
getElementPreferredWidth(selectedLabelDisplay);
-                       measuredWidth = layoutThumbWidth + labelWidth;
-                       measuredHeight = layoutThumbHeight;
-               }
-               
-               override protected function commitCurrentState():void
-               {
-                       toggleSelectionState();
-                       layoutThumbs();
-                       layoutLabel();
-               }
-               
-               //The label is called selectedLabelDisplay because the 
hostComponent expects it
-               protected function drawLabel():void
-               {
-                       selectedLabelDisplay = new LabelDisplayComponent();
-                       selectedLabelDisplay.id = "selectedLabelDisplay";
-                       selectedLabelDisplay.text = selectedLabel;
-                       
setElementSize(selectedLabelDisplay,thumb.width,thumb.height);
-                       contents.addChild(selectedLabelDisplay);
-               }
-               
-               //Draw the track behind everything else
-               protected function drawTrack():void
-               {
-                       if(track == null)
-                       {
-                               track = new switchTrack();
-                               track.width = trackWidth;
-                               track.height = trackHeight;
-                               
contents.addChildAt(SpriteVisualElement(track),0);
-                       }
-               }
-               
-               //Draw both thumbs.  Set skinpart thumb to be thumbOff because 
default state of the switch is OFF
-               protected function drawThumbs():void
-               {
-                       drawThumbOff();
-                       drawThumbOn();
-                       if(thumb == null)
-                       {
-                               thumb = thumbOff;
-                       }
-               }
-               
-               //Thumb ON the right side; Thumb OFF is on the left side
-               protected function layoutThumbs():void
-               {
-                       setElementPosition(thumbOn,trackWidth/2,0);
-                       setElementPosition(thumbOff,0,0);
-               }
-               
-               //Label display sould be at the same location as the thumb
-               protected function layoutLabel():void
-               {
-                       if(selectedLabelDisplay != null)
-                       {
-                               if(currentState.indexOf("AndSelected") != -1)
-                               {
-                                       
setElementPosition(selectedLabelDisplay,trackWidth/2,0);
-                               }
-                               else
-                               {
-                                       
setElementPosition(selectedLabelDisplay,0,0);
-                               }
-                       }
-               }
-               
-               //Depending on current state, set skinpart thumb accordingly
-               protected function toggleSelectionState():void
-               {
-                       if(currentState.indexOf("AndSelected") != -1)
-                       {
-                               thumbOn.visible = true;
-                               thumbOff.visible = false;
-                               thumb = thumbOn;
-                               selectedLabelDisplay.text = selectedLabel;
-                       }
-                       else
-                       {
-                               thumbOff.visible = true;
-                               thumbOn.visible = false;
-                               thumb = thumbOff;
-                               selectedLabelDisplay.text = unselectedLabel;
-                       }
-               }
-               
-               protected function drawThumbOn():void
-               {
-                       thumbOn = new switchOn();
-                       thumbOn.width = layoutThumbWidth;
-                       thumbOn.height = layoutThumbHeight;
-                       contents.addChildAt(SpriteVisualElement(thumbOn),1);
-               }
-               
-               protected function drawThumbOff():void
-               {
-                       thumbOff = new switchOff();
-                       thumbOff.width = layoutThumbWidth;
-                       thumbOff.height = layoutThumbHeight;
-                       contents.addChildAt(SpriteVisualElement(thumbOff),1);
-               }
-               
-               //Hostcomponent dispatches this event whenever the thumb 
position changes       
-               protected function 
thumbPositionChanged_handler(event:Event):void
-               {
-                       moveSlidingContent();
-               }
-               
-               //Move the current thumb and label along with the animating 
content 
-               protected function moveSlidingContent():void 
-               {
-                       if (!hostComponent)
-                               return;
-                       var x:Number = (track.getLayoutBoundsWidth() - 
thumb.getLayoutBoundsWidth()) * 
-                               hostComponent.thumbPosition + 
track.getLayoutBoundsX();
-                       var y:Number = thumb.getLayoutBoundsY();
-                       setElementPosition(thumb, x, y);
-                       setElementPosition(selectedLabelDisplay, x, y);
-               }
-       }
-}
-
-
-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 combining two labels to create the effect of text and its drop
- *  shadow. The component can be used with advanced style selectors and the
- *  styles "color", "textShadowColor", and "textShadowAlpha". Based off of
- *  ActionBar.TitleDisplayComponent. These two should eventually be factored.
- */
-class LabelDisplayComponent extends UIComponent implements IDisplayText
-{
-       public var shadowYOffset:Number = 0;
-       private var labelChanged:Boolean = false;
-       private var labelDisplay:StyleableTextField;
-       private var labelDisplayShadow:StyleableTextField;
-       private var _text:String;
-       
-       public function LabelDisplayComponent() 
-       {
-               super();
-               _text = "";
-       }
-       
-       override public function get baselinePosition():Number 
-       {
-               return labelDisplay.baselinePosition;
-       }
-       
-       override protected function createChildren():void 
-       {
-               super.createChildren();
-               
-               labelDisplay = 
StyleableTextField(createInFontContext(StyleableTextField));
-               labelDisplay.styleName = this;
-               labelDisplay.editable = false;
-               labelDisplay.selectable = false;
-               labelDisplay.multiline = false;
-               labelDisplay.wordWrap = false;
-               labelDisplay.addEventListener(FlexEvent.VALUE_COMMIT,
-                       labelDisplay_valueCommitHandler);
-               
-               labelDisplayShadow = 
StyleableTextField(createInFontContext(StyleableTextField));
-               labelDisplayShadow.styleName = this;
-               labelDisplayShadow.colorName = "textShadowColor";
-               labelDisplayShadow.editable = false;
-               labelDisplayShadow.selectable = false;
-               labelDisplayShadow.multiline = false;
-               labelDisplayShadow.wordWrap = false;
-               
-               addChild(labelDisplayShadow);
-               addChild(labelDisplay);
-       }
-       
-       override protected function commitProperties():void 
-       {
-               super.commitProperties();
-               
-               if (labelChanged)
-               {
-                       labelDisplay.text = text;
-                       invalidateSize();
-                       invalidateDisplayList();
-                       labelChanged = false;
-               }
-       }
-       
-       override protected function measure():void 
-       {
-               if (labelDisplay.isTruncated)
-                       labelDisplay.text = text;
-               labelDisplay.commitStyles();
-               measuredWidth = labelDisplay.getPreferredBoundsWidth();
-               measuredHeight = labelDisplay.getPreferredBoundsHeight();
-       }
-       
-       override protected function updateDisplayList(unscaledWidth:Number, 
unscaledHeight:Number):void 
-       {
-               if (labelDisplay.isTruncated)
-                       labelDisplay.text = text;
-               labelDisplay.commitStyles();
-               
-               var labelHeight:Number = 
labelDisplay.getPreferredBoundsHeight();
-               var labelY:Number = (unscaledHeight - labelHeight) / 2;
-               
-               var labelWidth:Number = Math.min(unscaledWidth, 
labelDisplay.getPreferredBoundsWidth());
-               var labelX:Number = (unscaledWidth - labelWidth) / 2;
-               
-               labelDisplay.setLayoutBoundsSize(labelWidth, labelHeight);
-               labelDisplay.setLayoutBoundsPosition(labelX, labelY);
-               
-               labelDisplay.truncateToFit();
-               
-               labelDisplayShadow.commitStyles();
-               labelDisplayShadow.setLayoutBoundsSize(labelWidth, labelHeight);
-               labelDisplayShadow.setLayoutBoundsPosition(labelX, labelY + 
shadowYOffset);
-               
-               labelDisplayShadow.alpha = getStyle("textShadowAlpha");
-               
-               // unless the label was truncated, labelDisplayShadow.text was 
set in
-               // the value commit handler
-               if (labelDisplay.isTruncated)
-                       labelDisplayShadow.text = labelDisplay.text;
-       }
-       
-       private function labelDisplay_valueCommitHandler(event:Event):void 
-       {
-               labelDisplayShadow.text = labelDisplay.text;
-       }
-       
-       public function get text():String 
-       {
-               return _text;
-       }
-       
-       public function set text(value:String):void 
-       {
-               _text = value;
-               labelChanged = true;
-               invalidateProperties();
-       }
-       
-       public function get isTruncated():Boolean 
-       {
-               return labelDisplay.isTruncated;
-       }
-       
-       public function showShadow(value:Boolean):void 
-       {
-               labelDisplayShadow.visible = value;
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/TransparentNavigationButtonSkin.as
----------------------------------------------------------------------
diff --git 
a/tourdeflexmobile/src/spark/skins/android4/TransparentNavigationButtonSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/TransparentNavigationButtonSkin.as
deleted file mode 100644
index 6b31e22..0000000
--- 
a/tourdeflexmobile/src/spark/skins/android4/TransparentNavigationButtonSkin.as
+++ /dev/null
@@ -1,109 +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 flash.display.Graphics;
-
-import mx.core.DPIClassification;
-import mx.core.mx_internal;
-
-import spark.skins.android4.assets.TransparentNavigationButton_down;
-import spark.skins.android4.assets.TransparentNavigationButton_up;
-import spark.skins.mobile.supportClasses.ActionBarButtonSkinBase;
-import spark.skins.mobile.supportClasses.MobileSkin;
-//import spark.skins.mobile320.assets.TransparentNavigationButton_down;
-//import spark.skins.mobile320.assets.TransparentNavigationButton_up;
-//import spark.skins.mobile480.assets.TransparentNavigationButton_down;
-//import spark.skins.mobile480.assets.TransparentNavigationButton_up;
-//import spark.skins.mobile640.assets.TransparentNavigationButton_down;
-//import spark.skins.mobile640.assets.TransparentNavigationButton_up;
-
-use namespace mx_internal;
-
-/**
- *  The default skin class for buttons in the navigation area of the Spark 
ActionBar component 
- *  in mobile applications.  
- * 
- *  @langversion 3.0
- *  @playerversion AIR 2.5 
- *  @productversion Flex 4.5
- */
-public class TransparentNavigationButtonSkin extends ActionBarButtonSkinBase
-{   
-    
-    
//--------------------------------------------------------------------------
-    //
-    //  Constructor
-    //
-    
//--------------------------------------------------------------------------
-    /**
-     *  Constructor.
-     * 
-     *  @langversion 3.0
-     *  @playerversion AIR 2.5 
-     *  @productversion Flex 4.5
-     * 
-     */
-    public function TransparentNavigationButtonSkin()
-    {
-        super();
-        
-        switch (applicationDPI)
-        {
-                       case DPIClassification.DPI_640:
-                       {
-                       //      upBorderSkin = 
spark.skins.mobile640.assets.TransparentActionButton_up;
-                       //      downBorderSkin = 
spark.skins.mobile640.assets.TransparentActionButton_down;
-                               
-                               break;
-                       }
-                       case DPIClassification.DPI_480:
-                       {
-                       //      upBorderSkin = 
spark.skins.mobile480.assets.TransparentActionButton_up;
-                       //      downBorderSkin = 
spark.skins.mobile480.assets.TransparentActionButton_down;
-                               
-                               break;
-                       }
-            case DPIClassification.DPI_320:
-            {
-           //     upBorderSkin = 
spark.skins.mobile320.assets.TransparentNavigationButton_up;
-            //    downBorderSkin = 
spark.skins.mobile320.assets.TransparentNavigationButton_down;
-                
-                break;
-            }
-            default:
-            {
-                upBorderSkin = 
spark.skins.android4.assets.TransparentNavigationButton_up;
-                downBorderSkin = 
spark.skins.android4.assets.TransparentNavigationButton_down;
-                
-                break;
-            }
-        }
-    }
-    
-    override mx_internal function layoutBorder(unscaledWidth:Number, 
unscaledHeight:Number):void
-    {
-        // trailing vertical separator is outside the right bounds of the 
button
-        setElementSize(border, unscaledWidth, unscaledHeight);
-        setElementPosition(border, 0, 0);
-    }
-}
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/VScrollBarSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/VScrollBarSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/VScrollBarSkin.as
deleted file mode 100644
index 10312c5..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/VScrollBarSkin.as
+++ /dev/null
@@ -1,207 +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.DPIClassification;
-       import mx.core.mx_internal;
-       
-       import spark.components.Button;
-       import spark.components.VScrollBar;
-       import spark.skins.mobile.supportClasses.MobileSkin;
-       
-       use namespace mx_internal;
-       
-       /**
-        *  ActionScript-based skin for VScrollBar components in mobile 
applications. 
-        * 
-        *  @langversion 3.0
-        *  @playerversion Flash 10
-        *  @playerversion AIR 2.5 
-        *  @productversion Flex 4.5
-        */
-       public class VScrollBarSkin extends MobileSkin
-       {
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Constructor
-               //
-               
//--------------------------------------------------------------------------
-               /**
-                *  Constructor.
-                * 
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5 
-                *  @productversion Flex 4.5
-                * 
-                */
-               public function VScrollBarSkin()
-               {
-                       super();
-                       
-                       minHeight = 20;
-                       thumbSkinClass = VScrollBarThumbSkin;
-                       var paddingRight:int;
-                       var paddingVertical:int;
-                       
-                       // Depending on density set our measured width
-                       switch (applicationDPI)
-                       {
-                               case DPIClassification.DPI_640:
-                               {
-                                       minWidth = 24;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_640DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_640DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_480:
-                               {
-                                       minWidth = 18;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_480DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_480DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_320:
-                               {
-                                       minWidth = 12;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_320DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_320DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_240:
-                               {
-                                       minWidth = 9;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_240DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_240DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_120:
-                               {
-                                       minWidth = 9;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_120DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_120DPI;
-                                       break;
-                               }
-                               default:
-                               {
-                                       // default DPI_160
-                                       minWidth = 6;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_DEFAULTDPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_DEFAULTDPI;
-                                       break;
-                               }
-                       }
-                       
-                       // The minimum height is set such that, at it's 
smallest size, the thumb appears
-                       // as high as it is wide.
-                       minThumbHeight = (minWidth - paddingRight) + 
(paddingVertical * 2);   
-               }
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Variables
-               //
-               
//--------------------------------------------------------------------------
-               
-               /** 
-                *  @copy spark.skins.spark.ApplicationSkin#hostComponent
-                */
-               public var hostComponent:VScrollBar;
-               
-               /**
-                *  Minimum height for the thumb
-                */
-               protected var minThumbHeight:Number;
-               
-               /**
-                *  Skin to use for the thumb Button skin part
-                */
-               protected var thumbSkinClass:Class;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Skin parts 
-               //
-               
//--------------------------------------------------------------------------
-               /**
-                *  VScrollbar track skin part
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5 
-                *  @productversion Flex 4.5
-                */   
-               public var track:Button;
-               
-               /**
-                *  VScrollbar thumb skin part
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5 
-                *  @productversion Flex 4.5
-                */  
-               public var thumb:Button;
-               
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Overridden methods
-               //
-               
//--------------------------------------------------------------------------
-               /**
-                *  @private 
-                */
-               override protected function createChildren():void
-               {
-                       // Create our skin parts if necessary: track and thumb.
-                       if (!track)
-                       {
-                               // We don't want a visible track so we set the 
skin to MobileSkin
-                               track = new Button();
-                               track.setStyle("skinClass", 
spark.skins.mobile.supportClasses.MobileSkin);
-                               track.width = minWidth;
-                               track.height = minHeight;
-                               addChild(track);
-                       }
-                       if (!thumb)
-                       {
-                               thumb = new Button();
-                               thumb.minHeight = minThumbHeight; 
-                               thumb.setStyle("skinClass", thumbSkinClass);
-                               thumb.width = minWidth;
-                               thumb.height = minWidth;
-                               addChild(thumb);
-                       }
-               }
-               
-               /**
-                *  @private 
-                */
-               override protected function 
layoutContents(unscaledWidth:Number, unscaledHeight:Number):void
-               {
-                       super.layoutContents(unscaledWidth, unscaledHeight);
-                       
-                       setElementSize(track, unscaledWidth, unscaledHeight);
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/flex-examples/blob/8ccec1f5/tourdeflexmobile/src/spark/skins/android4/VScrollBarThumbSkin.as
----------------------------------------------------------------------
diff --git a/tourdeflexmobile/src/spark/skins/android4/VScrollBarThumbSkin.as 
b/tourdeflexmobile/src/spark/skins/android4/VScrollBarThumbSkin.as
deleted file mode 100644
index d9a3804..0000000
--- a/tourdeflexmobile/src/spark/skins/android4/VScrollBarThumbSkin.as
+++ /dev/null
@@ -1,178 +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.CapsStyle;
-       import flash.display.JointStyle;
-       import flash.display.LineScaleMode;
-       
-       import mx.core.DPIClassification;
-       import mx.core.mx_internal;
-       use namespace mx_internal;
-       
-       import spark.components.Button;
-       import spark.skins.mobile.supportClasses.MobileSkin;
-       
-       /**
-        *  ActionScript-based skin for the VScrollBar thumb skin part in 
mobile applications. 
-        * 
-        *  @langversion 3.0
-        *  @playerversion Flash 10
-        *  @playerversion AIR 2.5 
-        *  @productversion Flex 4.5
-        */
-       public class VScrollBarThumbSkin extends MobileSkin 
-       {
-               
//--------------------------------------------------------------------------
-               //
-               //  Class constants
-               //
-               
//--------------------------------------------------------------------------
-               
-               // These constants are also accessed from VScrollBarSkin
-               mx_internal static const PADDING_RIGHT_640DPI:int = 10;
-               mx_internal static const PADDING_VERTICAL_640DPI:int = 8;
-               mx_internal static const PADDING_RIGHT_480DPI:int = 8;
-               mx_internal static const PADDING_VERTICAL_480DPI:int = 6;
-               mx_internal static const PADDING_RIGHT_320DPI:int = 5;
-               mx_internal static const PADDING_VERTICAL_320DPI:int = 4;
-               mx_internal static const PADDING_RIGHT_240DPI:int = 4;
-               mx_internal static const PADDING_VERTICAL_240DPI:int = 3;
-               mx_internal static const PADDING_RIGHT_120DPI:int = 2;
-               mx_internal static const PADDING_VERTICAL_120DPI:int = 1;
-               mx_internal static const PADDING_RIGHT_DEFAULTDPI:int = 3;
-               mx_internal static const PADDING_VERTICAL_DEFAULTDPI:int = 2;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Constructor
-               //
-               
//-------------------------------------------------------------------------- 
-               /**
-                *  Constructor.
-                * 
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5 
-                *  @productversion Flex 4.5
-                * 
-                */
-               public function VScrollBarThumbSkin()
-               {
-                       super();
-                       
-                       // Depending on density set padding
-                       switch (applicationDPI)
-                       {
-                               case DPIClassification.DPI_640:
-                               {
-                                       minWidth = 19;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_640DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_640DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_480:
-                               {
-                                       minWidth = 19;
-                                       paddingRight = 
VScrollBarThumbSkin.PADDING_RIGHT_480DPI;
-                                       paddingVertical = 
VScrollBarThumbSkin.PADDING_VERTICAL_480DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_320:
-                               {
-                                       paddingRight = PADDING_RIGHT_320DPI;
-                                       paddingVertical = 
PADDING_VERTICAL_320DPI;
-                                       break;
-                               }
-                               case DPIClassification.DPI_240:
-                               {
-                                       paddingRight = PADDING_RIGHT_240DPI;
-                                       paddingVertical = 
PADDING_VERTICAL_240DPI;
-                                       break;
-                               }
-                               default:
-                               {
-                                       paddingRight = PADDING_RIGHT_DEFAULTDPI;
-                                       paddingVertical = 
PADDING_VERTICAL_DEFAULTDPI;
-                                       break;
-                               }
-                       }
-               }
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Properties
-               //
-               
//--------------------------------------------------------------------------
-               /** 
-                * @copy spark.skins.spark.ApplicationSkin#hostComponent
-                */
-               public var hostComponent:Button;
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Variables
-               //
-               
//--------------------------------------------------------------------------    
-               /**
-                *  Padding from the right
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5
-                *  @productversion Flex 4.5
-                */ 
-               protected var paddingRight:int;
-               
-               /**
-                *  Vertical padding from top and bottom
-                *
-                *  @langversion 3.0
-                *  @playerversion Flash 10
-                *  @playerversion AIR 2.5
-                *  @productversion Flex 4.5
-                */ 
-               protected var paddingVertical:int;
-               
-               
-               
//--------------------------------------------------------------------------
-               //
-               //  Overridden methods
-               //
-               
//--------------------------------------------------------------------------    
-               
-               /**
-                *  @protected
-                */ 
-               override protected function 
drawBackground(unscaledWidth:Number, unscaledHeight:Number):void
-               {
-                       super.drawBackground(unscaledWidth, unscaledHeight);
-                       
-                       var thumbWidth:Number = unscaledWidth - paddingRight;
-                       
-                       graphics.beginFill(getStyle("thumbColor"), 1);
-                       graphics.drawRect(0.5, paddingVertical + 
0.5,thumbWidth, unscaledHeight - 2 * paddingVertical);
-                       
-                       graphics.endFill();
-               }
-               
-       }
-}

Reply via email to