Yeah, the yard used to be called a playground. I should never be allowed to name things.

--- tamarin-central/thane/as3src/Thane.as
+++ tamarin-central/thane/as3src/Thane.as
@@ -40,7 +40,7 @@
         bridge :EventDispatcher) :Yard
     {
         if (!Thanette.isSystemYard()) {
-            throw new Error("Non-system playground spawning");
+            throw new Error("Non-system yard spawning");
         }

         if (yardId == null || yardId.length == 0) {
@@ -166,7 +166,7 @@
     /** The SpawnedYard objects created by spawnYard. */
     private static var _spawnedYards :Dictionary = new Dictionary();

-    /** Heartbeats requested in this playground. */
+    /** Heartbeats requested in this yard. */
     private static var _hearts :Array = new Array();

     /** Only set when spawning a yard. */
@@ -179,10 +179,10 @@
 /** Tracks the things needed for a spawned yard */
 class SpawnedYard
 {
-    /** The playground object. */
+    /** The yard object. */
     public var yard :Yard;

-    /** The heartbeat function within the playground to call as often as possible. */
+    /** The heartbeat function within the yard to call as often as possible. */
     public var heartbeat :Function;

     /** The trace function within the yard. */


FLEX-34119 Running the over 10,000 parameterized tests in the ant test runner takes over an hour! (On my computer it only takes a bit above three minutes.) I'm ignoring this for now.

--- frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Tests.as
+++ frameworks/projects/advancedgrids/tests/mx/collections/HierarchicalCollectionViewCursor_FLEX_34119_Tests.as
@@ -136,7 +136,8 @@
 			assertEquals(secondCompany, _sut.current);
 			assertTrue(_noErrorsThrown);
 		}
-
+
+        [Ignore]
        	[Test(dataProvider="positionAndOperation")]
         public function testReproduce_FLEX_34119_Comprehensive(selectedItemIndex:int, operationIndex:int, operation:int):void
         {


Transferred from the Adobe Open Source Subversion Repository

Revision: 8
Author:   open-source-svn-admin@adobe.com
Date:     2007-12-15T01:49:31.087529Z

Log Message:
-----------
The beginning of the open-source Flex SDK.

Populated the flex/sdk/trunk directory with an open-source subset of files from //depot/flex/sdk/...@191097 in the Faramir Perforce server. This changelist is a bit past the 3.0rc0 build.

The Ant scripts will not successfully build yet. They need to be adapted to the open-source subset.

Modified Paths:
--------------
2532 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267419 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/accessibility/MenuAccImpl.as
+++ frameworks/projects/mx/src/mx/accessibility/MenuAccImpl.as
@@ -0,0 +1,402 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2003-2007 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package mx.accessibility
+{
+
+import flash.accessibility.Accessibility;
+import flash.events.Event;
+import mx.controls.Menu;
+import mx.core.UIComponent;
+import mx.core.mx_internal;
+import mx.events.MenuEvent;
+
+use namespace mx_internal;
+
+/**
+ *  The MenuAccImpl class is the accessibility class for Menu.
+ *
+ *  @helpid 3007
+ *  @tiptext This is the MenuAccImpl Accessibility Class.
+ *  @review
+ */
+public class MenuAccImpl extends ListBaseAccImpl
+{
+    include "../core/Version.as";
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class initialization
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Static variable triggering the hookAccessibility() method.
+	 *  This is used for initializing MenuAccImpl class to hook its
+	 *  createAccessibilityImplementation() method to Menu class
+	 *  before it gets called from UIComponent.
+	 */
+	private static var accessibilityHooked:Boolean = hookAccessibility();
+
+	/**
+	 *  @private
+	 *  Static method for swapping the createAccessibilityImplementation()
+	 *  method of Menu with MenuAccImpl class.
+	 */
+	private static function hookAccessibility():Boolean
+	{
+		Menu.createAccessibilityImplementation =
+			createAccessibilityImplementation;
+
+		return true;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class constants
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Role of menuItem
+	 */
+	private static const ROLE_SYSTEM_MENUITEM:uint = 0x0C;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_CHECKED:uint = 0x00000010;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_FOCUSED:uint = 0x00000004;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_HASPOPUP:uint = 0x40000000;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_HOTTRACKED:uint = 0x00000080;
+
+	/**
+	 *  @private
+	 */
+	private static const STATE_SYSTEM_UNAVAILABLE:uint = 0x00000001;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_OBJECT_FOCUS:uint = 0x8005;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_OBJECT_SELECTION:uint = 0x8006;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_SYSTEM_MENUPOPUPSTART:uint = 0x00000006;
+
+	/**
+	 *  @private
+	 */
+	private static const EVENT_SYSTEM_MENUPOPUPEND:uint = 0x00000007;
+
+	//--------------------------------------------------------------------------
+	//
+	//  Class methods
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Method for creating the Accessibility class.
+	 *  This method is called from UIComponent.
+	 *  @review
+	 */
+	mx_internal static function createAccessibilityImplementation(
+								component:UIComponent):void
+	{
+		component.accessibilityImplementation =
+			new MenuAccImpl(component);
+	}
+
+	/**
+	 *  Method call for enabling accessibility for a component.
+	 *  This method is required for the compiler to activate
+	 *  the accessibility classes for a component.
+	 */
+	public static function enableAccessibility():void
+	{
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Constructor
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  Constructor.
+	 *
+	 *  @param master The UIComponent instance that this AccImpl instance
+	 *  is making accessible.
+	 */
+	public function MenuAccImpl(master:UIComponent)
+	{
+		super(master);
+
+		role = 0x0B;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden properties: AccImpl
+	//
+	//--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  eventsToHandle
+	//----------------------------------
+
+	/**
+	 *  @private
+	 *	Array of events that we should listen for from the master component.
+	 */
+	override protected function get eventsToHandle():Array
+	{
+		return super.eventsToHandle.concat(
+			[ "itemRollOver", "menuShow", "menuHide" ]);
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: AccessibilityImplementation
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Gets the role for the component.
+	 *
+	 *  @param childID children of the component
+	 */
+	override public function get_accRole(childID:uint):uint
+	{
+		if (childID == 0)
+			return role;
+
+		return ROLE_SYSTEM_MENUITEM;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the value of the MenuItem/Menu
+	 *  which is spoken out by the screen reader
+	 *  The Menu should return the name of the currently selected item
+	 *  with m of n string as value when focus moves to Menu.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return Value String
+	 *  @review
+	 */
+	override public function get_accValue(childID:uint):String
+	{
+		if (childID > 0)
+			return null;
+
+		var accValue:String = "";
+
+		var menu:Menu = Menu(master);
+		var selectedIndex:int = menu.selectedIndex;
+		if (selectedIndex > -1)
+		{
+			var item:Object = menu.dataProvider[selectedIndex];
+
+			if (menu.dataDescriptor.isBranch(item))
+				accValue = menu.itemToLabel(item);
+			else
+				accValue = menu.itemToLabel(item);
+		}
+
+		return accValue;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the state of the Menu.
+	 *  States are predefined for all the components in MSAA.
+	 *  Values are assigned to each state.
+	 *  Depending upon the menuItem being Selected, Selectable,
+	 *  Invisible, Offscreen, a value is returned.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return State uint
+	 *  @review
+	 */
+	override public function get_accState(childID:uint):uint
+	{
+		var accState:uint = getState(childID);
+
+		if (childID > 0 && childID < 100000)
+		{
+			var item:Object = Menu(master).dataProvider[childID - 1];
+
+			if (!Menu(master).dataDescriptor.isEnabled(item))
+			{
+				accState |= STATE_SYSTEM_UNAVAILABLE;
+				return accState;
+			}
+
+			//if (Menu(master).dataDescriptor.isFocused(item))
+			accState |= STATE_SYSTEM_HOTTRACKED | STATE_SYSTEM_FOCUSED;
+
+			if (Menu(master).dataDescriptor.isToggled(item))
+				accState |= STATE_SYSTEM_CHECKED;
+
+			if (Menu(master).dataDescriptor.isBranch(item))
+				accState |= STATE_SYSTEM_HASPOPUP;
+		}
+		return accState;
+	}
+
+	/**
+	 *  @private
+	 *  IAccessible method for returning the Default Action.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return focused childID.
+	 */
+	override public function get_accDefaultAction(childID:uint):String
+	{
+		if (childID == 0)
+			return null;
+
+		var item:Object = Menu(master).dataProvider[childID - 1];
+
+		return Menu(master).dataDescriptor.isBranch(item) ? "Open" : "Execute";
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden methods: AccImpl
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  method for returning the name of the MenuItem
+	 *  which is spoken out by the screen reader
+	 *  The MenuItem should return the label as the name
+	 *  and Menu should return the name specified in the Accessibility Panel.
+	 *
+	 *  @param childID uint
+	 *
+	 *  @return Name String
+	 *  @review
+	 */
+	override protected function getName(childID:uint):String
+	{
+		if (childID == 0 || childID > 100000)
+			return "";
+
+		var name:String;
+
+		var menu:Menu = Menu(master);
+		var item:Object = menu.dataProvider[childID - 1];
+
+		if (menu.dataDescriptor.isBranch(item))
+			name = menu.itemToLabel(item);
+		else
+			name = menu.itemToLabel(item);
+
+		return name;
+	}
+
+	//--------------------------------------------------------------------------
+	//
+	//  Overridden event handlers: AccImpl
+	//
+	//--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Override the generic event handler.
+	 *  All AccImpl must implement this
+	 *  to listen for events from its master component.
+	 */
+	override protected function eventHandler(event:Event):void
+	{
+		var index:int = 0;
+		var childID:uint;
+
+		switch (event.type)
+		{
+			case MenuEvent.ITEM_ROLL_OVER:
+			{
+				index = MenuEvent(event).index;
+				if (index >= 0)
+				{
+					childID = index + 1;
+
+					Accessibility.sendEvent(MenuEvent(event).menu, childID,
+											EVENT_OBJECT_FOCUS);
+
+					Accessibility.sendEvent(MenuEvent(event).menu, childID,
+											EVENT_OBJECT_SELECTION);
+				}
+				break;
+			}
+
+			case MenuEvent.ITEM_CLICK:
+			{
+				index = MenuEvent(event).menu.selectedIndex;
+				if (index >= 0)
+				{
+					childID = index + 1;
+
+					Accessibility.sendEvent(MenuEvent(event).menu, childID,
+											EVENT_OBJECT_FOCUS);
+
+					Accessibility.sendEvent(MenuEvent(event).menu, childID,
+											EVENT_OBJECT_SELECTION);
+				}
+				break;
+			}
+
+			case MenuEvent.MENU_SHOW:
+			{
+				Accessibility.sendEvent(MenuEvent(event).menu, 0,
+										EVENT_SYSTEM_MENUPOPUPSTART);
+				break;
+			}
+
+			case MenuEvent.MENU_HIDE:
+			{
+				Accessibility.sendEvent(MenuEvent(event).menu, 0,
+										EVENT_SYSTEM_MENUPOPUPEND);
+				break;
+			}
+		}
+	}
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 12324
Author:   smgilson@adobe.com
Date:     2009-12-01T16:08:24.785393Z

Log Message:
-----------
ASDoc updates in preparation for localization

QE notes: -
Doc notes: -
Bugs: -
Reviewer: -
Tests run: - checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ComboBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Button.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/BorderContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Application.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/CheckBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/DataGroup.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1278486 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/ComboBox.as
+++ frameworks/projects/spark/src/spark/components/ComboBox.as
@@ -228,6 +228,11 @@
     /**
      *  Static constant representing the value of the selectedIndex property
      *  when the user enters a value into the prompt area, and the value is committed.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 1.5
+     *  @productversion Flex 4
      */
     public static const CUSTOM_SELECTED_ITEM:int = ListBase.CUSTOM_SELECTED_ITEM;

@@ -442,8 +447,8 @@
      */
     override public function set typicalItem(value:Object):void
     {
-		if (value != typicalItem)
-			return;
+        if (value != typicalItem)
+            return;

         super.typicalItem = value;

@@ -719,6 +724,9 @@
         }
     }

+    /**
+     *  @private
+     */
     override protected function findKey(eventCode:int):Boolean
     {
         return false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 18136
Author:   dloverin@adobe.com
Date:     2010-10-12T18:19:52.551325Z

Log Message:
-----------
Change the DataGrid caret visibility rules.

The DataGrid caret is only visible when the DataGrid has focus and the selectionMode is not "none".

QE notes: None.
Doc notes: None.
Bugs: None.
Reviewer: Hans
Tests run: checkintests, cyclone server
Is noteworthy for integration: No.

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/GridLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/DataGrid.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1278555 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/DataGrid.as
+++ frameworks/projects/spark/src/spark/components/DataGrid.as
@@ -1453,6 +1453,14 @@
         else
             gridSelection.selectionMode = value;

+        // Show the caret if we have focus and not in grid selection mode of "none".
+        if (grid && grid.layout is GridLayout &&
+            caretIndicator)
+        {
+            GridLayout(grid.layout).showCaret = (value != GridSelectionMode.NONE &&
+                                                 this == getFocus());
+        }
+
         dispatchChangeEvent("selectionModeChanged");
     }

@@ -1784,11 +1792,6 @@
                 deferredGridOperation(grid);
             deferredGridOperations.length = 0;

-            // Data grid editor
-
-            editor = createEditor();
-            editor.initialize();
-
             // IDataGridElements: grid, columnHeaderBar

             if (columnHeaderBar)
@@ -1809,9 +1812,18 @@
             if (instance == hoverIndicator)
                 grid.hoverIndicator = hoverIndicator;

-            if (instance == caretIndicator)
+            if (instance == caretIndicator)
+            {
                 grid.caretIndicator = caretIndicator;
-
+
+                // Add a focus listener so we can turn the caret on and off
+                // when we get and lose focus.
+                addEventListener(FocusEvent.FOCUS_IN, dataGrid_focusHandler);
+                addEventListener(FocusEvent.FOCUS_OUT, dataGrid_focusHandler);
+                if (grid && grid.layout is GridLayout)
+                    GridLayout(grid.layout).showCaret = false;
+            }
+
             if (instance == selectionIndicator)
                 grid.selectionIndicator = selectionIndicator;
         }
@@ -1827,6 +1839,13 @@
             columnHeaderBar.addEventListener(GridEvent.SEPARATOR_MOUSE_DRAG, separator_mouseDragHandler);
             columnHeaderBar.addEventListener(GridEvent.SEPARATOR_MOUSE_UP, separator_mouseUpHandler);
         }
+
+        if (instance == itemEditorLayer)
+        {
+            // Data grid editor
+            editor = createEditor();
+            editor.initialize();
+        }
     }

     /**
@@ -1877,14 +1896,6 @@
             grid.caretIndicator = null;
             grid.selectionIndicator = null;

-            // Data grid editor
-
-            if (editor)
-            {
-                editor.uninitialize();
-                editor = null;
-            }
-
             // IDataGridElements: grid, columnHeaderBar

             if (columnHeaderBar)
@@ -1902,8 +1913,13 @@
             if (instance == hoverIndicator)
                 grid.hoverIndicator = null;

-            if (instance == caretIndicator)
+            if (instance == caretIndicator)
+            {
                 grid.caretIndicator = null;
+
+                removeEventListener(FocusEvent.FOCUS_IN, dataGrid_focusHandler);
+                removeEventListener(FocusEvent.FOCUS_OUT, dataGrid_focusHandler);
+            }

             if (instance == selectionIndicator)
                 grid.selectionIndicator = null;
@@ -1918,6 +1934,17 @@
             columnHeaderBar.removeEventListener(GridEvent.SEPARATOR_MOUSE_DRAG, separator_mouseDragHandler);
             columnHeaderBar.removeEventListener(GridEvent.SEPARATOR_MOUSE_UP, separator_mouseUpHandler);
         }
+
+        if (instance == itemEditorLayer)
+        {
+            // Data grid editor
+            if (editor)
+            {
+                editor.uninitialize();
+                editor = null;
+            }
+        }
+
     }

     //----------------------------------
@@ -3593,5 +3620,24 @@

         cursorManager.removeCursor(stretchCursorID);
     }
+
+    //--------------------------------------------------------------------------
+    //
+    //  DataGrid event handlers
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     */
+    protected function dataGrid_focusHandler(event:FocusEvent):void
+    {
+        if (event.target == this && grid && (grid.layout is GridLayout))
+        {
+            GridLayout(grid.layout).showCaret = (event.type == FocusEvent.FOCUS_IN &&
+                                                (selectionMode != GridSelectionMode.NONE));
+        }
+    }
+
 }
 }


Transferred from the Adobe Open Source Subversion Repository

Revision: 17596
Author:   rfrishbe@adobe.com
Date:     2010-09-07T21:08:28.595797Z

Log Message:
-----------
Beta bug: After scrolling around a list, view transitions would become chunky.  The reason for this is we were sometimes calling pause() to end an animation (when someone started scrolling before the fade scrollbar effect finished) and never resuming it, so there was a lot of overhead in keeping the animation paused.  Instead we should be calling stop().  Because of this, we now need to distinguish between an EFFECT_END caused by us calling stop() versus one that naturally occurs.

QE notes: None
Doc notes: None
Bugs: SDK-27720
Reviewer: Jason SZ
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280486 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -555,6 +555,14 @@
      */
     private var hideScrollBarAnimation:Animate;

+    /**
+     *  @private
+     *  Use to figure out whether the animation ended naturally and finished or
+     *  whether we called stop() on it.  Unfortunately, we get an EFFECT_END in
+     *  both cases, so we must keep track of it ourselves.
+     */
+    private var hideScrollBarAnimationPrematurelyStopped:Boolean;
+
     //--------------------------------------------------------------------------
     //
     //  Properties
@@ -1187,6 +1195,10 @@
         {
             targets.push(verticalScrollBar);
         }
+
+        // we keep track of hideScrollBarAnimationPrematurelyStopped so that we know
+        // if the effect ended naturally or if we prematurely called stop()
+        hideScrollBarAnimationPrematurelyStopped = false;

         hideScrollBarAnimation.play(targets);
     }
@@ -1494,16 +1506,18 @@

             // make sure our alpha is set back to normal from hideScrollBarAnimation
             if (hideScrollBarAnimation && hideScrollBarAnimation.isPlaying)
-                hideScrollBarAnimation.pause();
+            {
+                // stop the effect, but make sure our code for EFFECT_END doesn't actually
+                // run since the effect didn't end on its own.
+                hideScrollBarAnimationPrematurelyStopped = true;
+                hideScrollBarAnimation.stop();
+            }
+
             if (horizontalScrollBar)
-            {
                 horizontalScrollBar.alpha = 1;
-            }

             if (verticalScrollBar)
-            {
                 verticalScrollBar.alpha = 1;
-            }
         }
     }

@@ -1645,6 +1659,10 @@
      */
     private function hideScrollBarAnimation_effectEndHandler(event:EffectEvent):void
     {
+        // distinguish between if we called stop() and if the effect ended naturally
+        if (hideScrollBarAnimationPrematurelyStopped)
+            return;
+
         // now get rid of the scrollbars visibility
         horizontalScrollInProgress = false;
         verticalScrollInProgress = false;


Transferred from the Adobe Open Source Subversion Repository

Revision: 22845
Author:   egeorgie@adobe.com
Date:     2011-10-01T01:09:24.824050Z

Log Message:
-----------
Fix SDK-31272 [Localization: Hisoft]:ENU:Core-Function:All the components disappeared after dragging the scroll bar quickly.

- prevet mouse events on the scrollbars in a Scroller when interactionMode="touch"

QE notes:
Doc notes:
Bugs: SDK-31272
Reviewer:  Glenn
Tests run:  Cyclone
Is noteworthy for integration:

Modified Paths:
--------------
/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/Scroller.as

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280552 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -2822,6 +2822,18 @@
                     // The throwFunction is called once when dragging is done and the finger is released.
                     touchScrollHelper.throwFunction = performThrow;
                 }
+
+                // We don't support directly interacting with the scrollbars in touch mode
+                if (horizontalScrollBar)
+                {
+                    horizontalScrollBar.mouseEnabled = false;
+                    horizontalScrollBar.mouseChildren = false;
+                }
+                if (verticalScrollBar)
+                {
+                    verticalScrollBar.mouseEnabled = false;
+                    verticalScrollBar.mouseChildren = false;
+                }
             }
             else
             {
@@ -2831,6 +2843,17 @@
                 ensureDeferredHScrollBarCreated();

                 uninstallTouchListeners();
+
+                if (horizontalScrollBar)
+                {
+                    horizontalScrollBar.mouseEnabled = true;
+                    horizontalScrollBar.mouseChildren = true;
+                }
+                if (verticalScrollBar)
+                {
+                    verticalScrollBar.mouseEnabled = true;
+                    verticalScrollBar.mouseChildren = true;
+                }
             }
         }

@@ -2889,6 +2912,7 @@

         const liveScrolling:* = getStyle("liveScrolling");
         const liveScrollingSet:Boolean = (liveScrolling === true) || (liveScrolling === false);
+        const inTouchMode:Boolean =  (getStyle("interactionMode") == InteractionMode.TOUCH);

         if (instance == verticalScrollBar)
         {
@@ -2896,7 +2920,15 @@
             if (liveScrollingSet)
                 verticalScrollBar.setStyle("liveDragging", Boolean(liveScrolling));
             verticalScrollBar.contentMinimum = minVerticalScrollPosition;
-            verticalScrollBar.contentMaximum = maxVerticalScrollPosition;
+            verticalScrollBar.contentMaximum = maxVerticalScrollPosition;
+
+            // We don't support directly interacting with the scrollbars in touch mode
+            if (inTouchMode)
+            {
+                verticalScrollBar.mouseEnabled = false;
+                verticalScrollBar.mouseChildren = false;
+            }
+
         }
         else if (instance == horizontalScrollBar)
         {
@@ -2905,6 +2937,13 @@
                 horizontalScrollBar.setStyle("liveDragging", Boolean(liveScrolling));
             horizontalScrollBar.contentMinimum = minHorizontalScrollPosition;
             horizontalScrollBar.contentMaximum = maxHorizontalScrollPosition;
+
+            // We don't support directly interacting with the scrollbars in touch mode
+            if (inTouchMode)
+            {
+                horizontalScrollBar.mouseEnabled = false;
+                horizontalScrollBar.mouseChildren = false;
+            }
         }
     }


Transferred from the Adobe Open Source Subversion Repository

Revision: 4958
Author:   rfrishbe@adobe.com
Date:     2009-02-13T23:07:46.243121Z

Log Message:
-----------
Change the initialization sequence of FxComponent and Group.  Basically now children (including the skin) should get created at createChildren() time and follow the correct lifecycle pattern.  Unfortunately, this change got mingled in with all my PARB changes, so I'm submitting a bunch of PARB changes for Group, DataGroup, FxContainer, and FxDataContainer, outlined below:

1.     New event classes/names for Group/FxContainer and DataGroup ("elementAdd" and "elementRemove" event of type ElementExistenceEvent for Group/FxContainer and "rendererAdd" and "rendererRemove" event of type RendererExistenceEvent for DataGroup). It was just one event class of ItemExistenceChangedEvent before.
2.     LayoutBase.clipContent->clipAndEnableScrolling (same with IViewport.clipContent and GroupBase.clipContent)
3.     GroupBase.getLayoutELementAt()->getElementAt()
4.     GroupBase.numLayoutElements -> numElements.
5.     LayoutBase.virtualLayout -> useVirtualLayout
6.     ScrollUnit constants are now changed to be uints instead of typed as ScrollUnit.  This means the signature for getHorizontalScrollPositionDelta(unit:ScrollUnit):Number has changed to getHorizontalScrollPositionDelta(scrollUnit:uint):Number (and ditto for getVerticalScrollPositionDelta())
7.  DataGroup.getRendererForItemAt() -> getElementAt()
8.  DataGroup.getItemIndexForRenderer() -> getElementIndex()

Other changes:
 - Change IVisualElement interface so that it's smaller now.  It also extends ILayoutElement now.  The properties removed from IVisualElement are: rotation, rotationX, rotationY, rotationZ, transformX, transformY, offsets, x, y, z, scaleX, scaleY, scaleZ, explicitWidth, explicitMinWidth, explicitMaxWidth, explicitHeight, explicitMinHeight, explicitMaxHeight)
-  Fix in DataGroup so we don’t remove/add elements if we’re gonna do it later anyways.  I also need to do some other work in here around cleaning up of renderers.
- AddItems fix around handling IVisualElementContainers more effeciently
- get mxmlContent now returns a copy of the Array rather than the one we're using internally
- Had to update mustella since there was special case logic for dealing with getLayoutElementAt().  I added this logic for getElementAt(), which replaces that method.

QE Notes: Thanks for changing all the tests and working on the cyclone
Doc Notes: Made some ASDoc changes to some core classes to move the comments into the interfaces.  I did update the comments a bit as well.
Bugs: SDK-18115, SDK-19004
Reviewer: Jason, Glenn, Hans for initialization sequence change and Hans for all PARB changes
tests: checkintests, all mustella tests

Modified Paths:
--------------
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ItemExistenceChangedEvent.as" copyfrom-rev="4812" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ElementExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxScroller.as</path>
<path kind="file" action="M">/flex/sdk/trunk/development/eclipse/flex/flex4test/src/layouts/WheelLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/DataGroup.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxHScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/IViewport.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/Group.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/VerticalLayout.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/RendererExistenceEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/LayoutBase.as</path>
<path kind="file" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/events/ItemExistenceChangedEvent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/core/ScrollUnit.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/IVisualElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxVScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/BasicLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/states/AddItems.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/FxScrollBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/mustella/mustella.swc</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/ILayoutElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/baseClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/TextView.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/layout/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/mx/components/FxContainer.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280433 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/Scroller.as
+++ frameworks/projects/spark/src/spark/components/Scroller.as
@@ -173,7 +173,7 @@
      *  The viewport is added to the FXScroller component's skin
      *  which lays out both the viewport and scrollbars.
      *
-     *  When the viewport property is set, the viewport's clipContent property is
+     *  When the viewport property is set, the viewport's clipAndEnableScrolling property is
      *  set to true to enable scrolling.
      *
      *  Scroller does not support rotating the viewport directly.  The viewport's
@@ -196,7 +196,7 @@
     {
         if (value == _viewport)
             return;
-
+
         uninstallViewport();
         _viewport = value;
         installViewport();
@@ -207,10 +207,9 @@
     {
         if (skin && viewport)
         {
-            viewport.clipContent = true;
+            viewport.clipAndEnableScrolling = true;
             skin.addElementAt(viewport, 0);
             viewport.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, viewport_propertyChangeHandler);
-            addSystemHandlers(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, mouseWheelHandler);
         }
         if (verticalScrollBar)
             verticalScrollBar.viewport = viewport;
@@ -226,10 +225,31 @@
             verticalScrollBar.viewport = null;
         if (skin && viewport)
         {
-            viewport.clipContent = false;
+            viewport.clipAndEnableScrolling = false;
             skin.removeElement(viewport);
             viewport.removeEventListener(PropertyChangeEvent.PROPERTY_CHANGE, viewport_propertyChangeHandler);
-            removeSystemHandlers(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, mouseWheelHandler);
+        }
+    }
+
+    /**
+     *  Boolean to let us know if we need to add system handlers or not.
+     *  We can't do this early on because systemManager may be null
+     */
+    private var systemListenersNeeded:Boolean = true;
+
+    /**
+     *  @private
+     *
+     *  Need to add system handlers in commitProperties() because at
+     *  createChildren() time, systemManager may be null (it's null
+     *  when it's parent (or grandparent) isn't added to the display list yet).
+     */
+    override protected function commitProperties():void
+    {
+        if (systemListenersNeeded)
+        {
+            addSystemHandlers(MouseEvent.MOUSE_WHEEL, mouseWheelHandler, mouseWheelHandler);
+            systemListenersNeeded = false;
         }
     }

@@ -660,17 +680,17 @@
             return;

         var nSteps:uint = Math.abs(event.delta);
-        var unit:ScrollUnit;
+        var scrollUnit:uint;

         // Scroll event.delta "steps".  If the VSB is up, scroll vertically,
         // if -only- the HSB is up then scroll horizontally.

         if (verticalScrollBar && verticalScrollBar.visible)
         {
-            unit = (event.delta < 0) ? ScrollUnit.DOWN : ScrollUnit.UP;
+            scrollUnit = (event.delta < 0) ? ScrollUnit.DOWN : ScrollUnit.UP;
             for(var vStep:int = 0; vStep < nSteps; vStep++)
             {
-                var vspDelta:Number = vp.getVerticalScrollPositionDelta(unit);
+                var vspDelta:Number = vp.getVerticalScrollPositionDelta(scrollUnit);
                 if (!isNaN(vspDelta))
                     vp.verticalScrollPosition += vspDelta;
             }
@@ -678,10 +698,10 @@
         }
         else if (horizontalScrollBar && horizontalScrollBar.visible)
         {
-            unit = (event.delta < 0) ? ScrollUnit.LEFT : ScrollUnit.RIGHT;
+            scrollUnit = (event.delta < 0) ? ScrollUnit.LEFT : ScrollUnit.RIGHT;
             for(var hStep:int = 0; hStep < nSteps; hStep++)
             {
-                var hspDelta:Number = vp.getHorizontalScrollPositionDelta(unit);
+                var hspDelta:Number = vp.getHorizontalScrollPositionDelta(scrollUnit);
                 if (!isNaN(hspDelta))
                     vp.horizontalScrollPosition += hspDelta;
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20215
Author:   jasonsj@adobe.com
Date:     2011-02-08T23:00:00.038388Z

Log Message:
-----------
Updated ASDoc to mention TLF features are not supported in mobile.

QE notes: None
Doc notes:
Bugs:
SDK-29290 ASdoc for mobile version of TextArea and TextInput is incorrect
Reviewer: gruehle
Tests run: checkintests
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextInput.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/TextArea.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280913 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/TextArea.as
+++ frameworks/projects/spark/src/spark/components/TextArea.as
@@ -89,6 +89,11 @@
  *  high-quality international typography and layout.
  *  The older MX version of TextArea displays text using the older
  *  TextField class.

+ *
+ *
The mobile theme uses TextField-based text instead of RichEditableText.
+ *  Some TLF-only features are not supported in the mobile theme including
+ *  TextFlow, right-to-left or bidirectional text, and advanced text
+ *  styles.

  *
  *
The most important differences between Spark TextArea and the
  *  MX TextArea control are as follows:
@@ -174,7 +179,7 @@
  *  of character that the user can enter and the restrict
  *  to limit which characters the user can enter.

  *
- *
This control is a skinnable control whose skin uses a
+ *
This control is a skinnable control whose default skin uses a
  *  RichEditableText control to display and edit the text
  *  and a Scroller control to provide scrollbars.
  *  The RichEditableText can be accessed as textDisplay


Fixed bug where AbstractColumnReference was reporting wrong data source.

--- WeaveData/src/weave/data/ColumnReferences/AbstractColumnReference.as
+++ WeaveData/src/weave/data/ColumnReferences/AbstractColumnReference.as
@@ -92,7 +92,10 @@

 		private function updateGlobalName():void
 		{
-			dynamicDataSource.globalName = dataSourceName.value;
+			if (dataSourceName.value)
+				dynamicDataSource.globalName = dataSourceName.value;
+			else
+				dynamicDataSource.removeObject();
 		}

 		/**


Transferred from the Adobe Open Source Subversion Repository

Revision: 7743
Author:   clucier@adobe.com
Date:     2009-06-11T13:53:10.203664Z

Log Message:
-----------
Moving away from using namespace qualifiers in most cases in the SDK.  We've run into a few cases now where the use of qualifiers in code that is called excessively can slow things down.
Bugs: SDK-21337
Reviewer: Ryan, Paul
QE Notes: None
Tests: Ran several random Mustella test groups, checkintests.

Modified Paths:
--------------
106 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1269093 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/controls/treeClasses/DefaultDataDescriptor.as
+++ frameworks/projects/mx/src/mx/controls/treeClasses/DefaultDataDescriptor.as
@@ -20,7 +20,10 @@
 import mx.collections.IViewCursor;
 import mx.collections.XMLListCollection;
 import mx.controls.menuClasses.IMenuDataDescriptor;
+import mx.core.mx_internal;
 import mx.utils.UIDUtil;
+
+use namespace mx_internal;

 /**
  *  The DefaultDataDescriptor class provides a default implementation for
@@ -130,7 +133,7 @@
             else
             {
                 childrenCollection = oldArrayCollection;
-                ArrayCollection(childrenCollection).mx_internal::dispatchResetEvent = false;
+                ArrayCollection(childrenCollection).dispatchResetEvent = false;
                 ArrayCollection(childrenCollection).source = children;
             }

@@ -161,7 +164,7 @@
                 childrenCollection = oldXMLCollection;

                 //We don't want to send a RESET type of collectionChange event in this case.
-                XMLListCollection(childrenCollection).mx_internal::dispatchResetEvent = false;
+                XMLListCollection(childrenCollection).dispatchResetEvent = false;
                 XMLListCollection(childrenCollection).source = children;
             }
         }


Transferred from the Adobe Open Source Subversion Repository

Revision: 23247
Author:   cframpto@adobe.com
Date:     2011-12-20T19:21:13.134833Z

Log Message:
-----------
Remove ADOBE SYSTEMS license and replace with Apache license in headers - frameworks.  A 2nd pass will be needed to get the files not handled up by the scripts.

Modified Paths:
--------------
4959 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1263810 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/Callout.as
+++ frameworks/projects/mobilecomponents/src/spark/components/Callout.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2011 Adobe Systems Incorporated
-//  All Rights Reserved.
+//  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
 //
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
+//      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.
 //
 ////////////////////////////////////////////////////////////////////////////////


Transferred from the Adobe Open Source Subversion Repository

Revision: 5101
Author:   gauravj@adobe.com
Date:     2009-02-27T05:22:45.887116Z

Log Message:
-----------
Update action script files with asdoc version tags.

QE Notes: None.
Doc Notes: Please review and update as necessary.
tests: checkintests

Modified Paths:
--------------
663 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267826 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/containers/utilityClasses/BoxLayout.as
+++ frameworks/projects/mx/src/mx/containers/utilityClasses/BoxLayout.as
@@ -40,6 +40,11 @@

 	/**
 	 *  Constructor.
+	 *
+	 *  @langversion 3.0
+	 *  @playerversion Flash 9
+	 *  @playerversion AIR 1.1
+	 *  @productversion Flex 3
 	 */
 	public function BoxLayout()
 	{


Transferred from the Adobe Open Source Subversion Repository

Revision: 18476
Author:   rfrishbe@adobe.com
Date:     2010-11-05T19:24:22.345498Z

Log Message:
-----------
Adding a "down" state for item renderers when in touch interaction mode.  This means item renderers don't go in to the "selected" state when someone presses down on them.  They first go in to the "down" state.  If the user later starts scrolling or moving around, the item renderer returns to the "normal" state.  If they press down and release up on the same item, the item renderer will go from the "down" state to the "selected" state.  This distinction is necessary on touch devices to distinguish between "down" and "selected".  There's also a new "selectedAndDown" state.

Adding ItemRendererInterationStateDetector as a helper class for item renderer to help detect when they are indeed hovered or pressed down.

QE notes:
Doc notes:
Bugs: SDK-27674, SDK-28110
Reviewer: Eric Day
Tests run: checkintests, full mustella run, QA cyclone
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/Scroller.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRendererInteractionStateDetector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/List.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/skins/spark/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/DropDownListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/src/spark/skins/wireframe/DefaultItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ItemRenderer.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/wireframe/defaults.css</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1280654 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/components/SkinnableContainer.as
+++ frameworks/projects/spark/src/spark/components/SkinnableContainer.as
@@ -139,6 +139,20 @@
 [Style(name="contentBackgroundColor", type="uint", format="Color", inherit="yes", theme="spark, mobile")]

 /**
+ *  Color of the background of an item renderer when it is pressed down
+ *
+ *
This style is only applicable in touch interactionMode.

+ *
+ *  @default 0xA8C6EE
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10.1
+ *  @playerversion AIR 2.5
+ *  @productversion Flex 4.5
+ */
+[Style(name="downColor", type="uint", format="Color", inherit="yes", theme="mobile")]
+
+/**
  *  @copy spark.components.supportClasses.GroupBase#style:focusColor
  *
  *  @langversion 3.0
@@ -149,13 +163,15 @@
 [Style(name="focusColor", type="uint", format="Color", inherit="yes", theme="spark, mobile")]

 /**
- * @copy spark.components.supportClasses.GroupBase#style:rollOverColor
- *
- *  @langversion 3.0
- *  @playerversion Flash 10
- *  @playerversion AIR 1.5
- *  @productversion Flex 4
- */
+ *  @copy spark.components.supportClasses.GroupBase#style:rollOverColor
+ *
+ *  @default 0xCEDBEF
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 10
+ *  @playerversion AIR 1.5
+ *  @productversion Flex 4
+ */
 [Style(name="rollOverColor", type="uint", format="Color", inherit="yes", theme="spark")]

 /**
@@ -270,6 +286,7 @@
  *    digitWidth="default"
  *    direction="LTR"
  *    dominantBaseline="auto"
+ *    downColor=""
  *    firstBaselineOffset="auto"
  *    focusColor=""
  *    focusedTextSelectionColor=""


states need to handle state-dependent events

--- frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleStatesImpl.as
+++ frameworks/as/projects/FlexJSUI/src/org/apache/flex/core/SimpleStatesImpl.as
@@ -21,6 +21,7 @@
     import flash.display.DisplayObject;

     import mx.states.AddItems;
+    import mx.states.SetEventHandler;
     import mx.states.SetProperty;
     import mx.states.State;

@@ -129,6 +130,18 @@
                     else
                         sp.document[sp.name] = sp.previousValue;
                 }
+                else if (o is SetEventHandler)
+                {
+                    var seh:SetEventHandler = SetEventHandler(o);
+                    if (seh.target != null)
+                    {
+                        seh.document[seh.target].removeEventListener(seh.name, seh.handlerFunction);
+                    }
+                    else
+                    {
+                        seh.document.removeEventListener(seh.name, seh.handlerFunction);
+                    }
+                }
             }
         }

@@ -190,6 +203,18 @@
                         sp.document[sp.name] = sp.value;
                     }
                 }
+                else if (o is SetEventHandler)
+                {
+                    var seh:SetEventHandler = SetEventHandler(o);
+                    if (seh.target != null)
+                    {
+                        seh.document[seh.target].addEventListener(seh.name, seh.handlerFunction);
+                    }
+                    else
+                    {
+                        seh.document.addEventListener(seh.name, seh.handlerFunction);
+                    }
+                }
             }
         }
 	}


Transferred from the Adobe Open Source Subversion Repository

Revision: 23243
Author:   cframpto@adobe.com
Date:     2011-12-20T00:59:57.384047Z

Log Message:
-----------
In frameworks, remove Adobe headers from all files except xml/mxml file types.  There are also a few .txt files that are license files that I didn't touch yet.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1248524 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridBaseSelectionData.as
+++ frameworks/projects/advancedgrids/src/mx/controls/advancedDataGridClasses/AdvancedDataGridBaseSelectionData.as
@@ -1,13 +1,3 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2009 Adobe Systems Incorporated
-//  All Rights Reserved.
-//
-//  NOTICE: Adobe permits you to use, modify, and distribute this file
-//  in accordance with the terms of the license agreement accompanying it.
-//
-////////////////////////////////////////////////////////////////////////////////

 package mx.controls.advancedDataGridClasses
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 23246
Author:   cframpto@adobe.com
Date:     2011-12-20T17:40:08.069454Z

Log Message:
-----------
Rollback 23243.  If comment followed header it was stripped as well.

Modified Paths:
--------------
2361 paths were modified

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1252205 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTitleWindowAutomationImpl.as
+++ frameworks/projects/automation_spark/src/spark/automation/delegates/components/SparkTitleWindowAutomationImpl.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2009 Adobe Systems Incorporated
+//  All Rights Reserved.
+//
+//  NOTICE: Adobe permits you to use, modify, and distribute this file
+//  in accordance with the terms of the license agreement accompanying it.
+//
+////////////////////////////////////////////////////////////////////////////////

 package spark.automation.delegates.components
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 18072
Author:   chiedozi@adobe.com
Date:     2010-10-07T21:09:04.099363Z

Log Message:
-----------
PARB Changes to ViewNavigator feature set.  Changes summarized below:

View
active getter renamed to isActive
Removed context property from View and moved it to ViewNavigator

ViewNavigator
context property is now typed Object
navigationStack property now mx_internal in ViewNavigatorBase
factory parameter for push operations renamed to  viewClass
NavigationStack push and pop api names changed to match ViewNavigator methods
active getter renamed isActive
viewNavigator no longer dispatches a COMPLETE event
defaultTransitions are no longer skin parts.  They are now  mx_internal vars.

TabbedViewNavigator
No longer dispatches complete, instead dispatches IndexChangeEvent.CHANGE

ViewProxy
ViewProxy renamed to ViewDescriptor
persistedData renamed to persistenceData

QE notes:
Doc notes:
Bugs:
Reviewer: Ryan
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedViewNavigator.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/core/ContainerDestructionPolicy.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/View.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewNavigatorBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/MobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewReturnObject.as</path>
<path kind="dir" action="M">/private/flex/sdk/branches/hero_private</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/TabbedMobileApplication.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/defaults.css</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/NavigationStack.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobiletheme/src/spark/skins/mobile/ViewNavigatorSkin.as</path>
<path kind="file" copyfrom-path="/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewProxy.as" copyfrom-rev="18044" action="A">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/framework/src/mx/events/FlexEvent.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/ViewNavigator.as</path>
<path kind="file" action="D">/private/flex/sdk/branches/hero_private/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewProxy.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1264538 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
+++ frameworks/projects/mobilecomponents/src/spark/components/supportClasses/ViewDescriptor.as
@@ -20,7 +20,7 @@
 import spark.components.View;

 /**
- *  The ViewProxy object is a data structure used to store information
+ *  The ViewDescriptor object is a data structure used to store information
  *  about a view that is being managed by a ViewNavigator.
  *
  *  @langversion 3.0
@@ -28,7 +28,7 @@
  *  @playerversion AIR 2.5
  *  @productversion Flex 4.5
  */
-public class ViewProxy implements IExternalizable
+public class ViewDescriptor implements IExternalizable
 {
     //--------------------------------------------------------------------------
     //
@@ -39,7 +39,7 @@
     /**
      *  Constructor.
      *
-     *  @param factory The class used to create the View
+     *  @param viewClass The class used to create the View
      *  @param data The data object to pass to the view when created
      *  @param instance A reference to the instance of the View
      *
@@ -48,12 +48,12 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    public function ViewProxy(factory:Class = null,
+    public function ViewDescriptor(viewClass:Class = null,
                               data:Object = null,
-                              context:String = null,
+                              context:Object = null,
                               instance:View = null)
     {
-        this.factory = factory;
+        this.viewClass = viewClass;
         this.data = data;
         this.context = context;
         this.instance = instance;
@@ -79,7 +79,7 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    public var context:String;
+    public var context:Object;

     //----------------------------------
     //  data
@@ -98,21 +98,6 @@
     public var data:Object;

     //----------------------------------
-    //  factory
-    //----------------------------------
-
-    /**
-     *  The class used to create the view.  ViewNavigator will expect this
-     *  class to subclass View.
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    public var factory:Class;
-
-    //----------------------------------
     //  instance
     //----------------------------------

@@ -129,7 +114,7 @@
     public var instance:View;

     //----------------------------------
-    //  persistedData
+    //  persistenceData
     //----------------------------------

     /**
@@ -143,7 +128,22 @@
      *  @playerversion AIR 2.5
      *  @productversion Flex 4.5
      */
-    public var persistedData:Object;
+    public var persistenceData:Object;
+
+    //----------------------------------
+    //  viewClass
+    //----------------------------------
+
+    /**
+     *  The class used to create the view.  ViewNavigator will expect this
+     *  class to subclass View.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 10
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
+     */
+    public var viewClass:Class;

     //--------------------------------------------------------------------------
     //
@@ -168,11 +168,11 @@
     public function writeExternal(output:IDataOutput):void
     {
         output.writeObject(context);
-        output.writeObject(persistedData);
+        output.writeObject(persistenceData);

-        // Have to store the class name of the factory because classes can't be
+        // Have to store the class name of the viewClass because classes can't be
         // written to a shared object
-        output.writeObject(getQualifiedClassName(factory));
+        output.writeObject(getQualifiedClassName(viewClass));
     }

     /**
@@ -188,10 +188,10 @@
     public function readExternal(input:IDataInput):void
     {
         context = input.readObject();
-        persistedData = input.readObject();
+        persistenceData = input.readObject();

         var className:String = input.readObject();
-        factory = (className == "null") ? null : getDefinitionByName(className) as Class;
+        viewClass = (className == "null") ? null : getDefinitionByName(className) as Class;
     }
 }
 }


SCV shares model with ScrollBar

SCV shares model with ScrollBar

--- frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ScrollingContainerView.as
+++ frameworks/as/projects/FlexJSUI/src/org/apache/flex/html/beads/ScrollingContainerView.as
@@ -59,6 +59,15 @@
          */
 		public function ScrollingContainerView()
 		{
+            var vsbm:ScrollBarModel = new ScrollBarModel();
+            vsbm.maximum = 0;
+            vsbm.minimum = 0;
+            vsbm.pageSize = 0;
+            vsbm.pageStepSize = 1;
+            vsbm.snapInterval = 1;
+            vsbm.stepSize = 1;
+            vsbm.value = 0;
+            _vScrollBarModel = vsbm;
 		}

         /**
@@ -161,6 +170,7 @@
 			return _strand as IUIBase;
 		}

+        private var _vScrollBarModel:ScrollBarModel;
         private var _vScrollBar:ScrollBar;

         /**
@@ -198,15 +208,7 @@
         {
             var vsb:ScrollBar;
             vsb = new ScrollBar();
-            var vsbm:ScrollBarModel = new ScrollBarModel();
-            vsbm.maximum = 100;
-            vsbm.minimum = 0;
-            vsbm.pageSize = 10;
-            vsbm.pageStepSize = 10;
-            vsbm.snapInterval = 1;
-            vsbm.stepSize = 1;
-            vsbm.value = 0;
-            vsb.model = vsbm;
+            vsb.model = _vScrollBarModel;
             vsb.width = 16;
             IParent(_strand).addElement(vsb);
             return vsb;
@@ -222,7 +224,7 @@
          */
         public function get verticalScrollPosition():Number
         {
-            return ScrollBarModel(vScrollBar.model).value;
+            return _vScrollBarModel.value;
         }

         /**
@@ -230,7 +232,7 @@
          */
         public function set verticalScrollPosition(value:Number):void
         {
-            ScrollBarModel(vScrollBar.model).value = value;
+            _vScrollBarModel.value = value;
         }

         /**
@@ -243,8 +245,8 @@
          */
         public function get maxVerticalScrollPosition():Number
         {
-            return ScrollBarModel(vScrollBar.model).maximum -
-                ScrollBarModel(vScrollBar.model).pageSize;
+            return _vScrollBarModel.maximum -
+                _vScrollBarModel.pageSize;
         }


Silence flushings unless length actually > 0

--- as3/xobjas3/src/com/rpath/xobj/XObjXMLDecoder.as
+++ as3/xobjas3/src/com/rpath/xobj/XObjXMLDecoder.as
@@ -430,12 +430,12 @@
         // then FLUSH the array/collection to ensure uniqueness of results
         if (isRootNode || !XObjUtils.isByReference(result))
         {
-            if (isArray)
+            if (isArray && (result as Array).length > 0)
             {
                 trace("flushing array");
                 (result as Array).splice(0);
             }
-            else if (isCollection)
+            else if (isCollection && (result as IList).length > 0)
             {
                 trace("flushing collection");
                 (result as IList).removeAll();


Javadoc

Javadoc

git-svn-id: 27326a786375daad9d33dc990c6f272e4c8f567c@1450 fda5f131-174c-0410-8613-e0905860106b

--- org.openwms/trunk/org.openwms.core/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/IObserver.as
+++ org.openwms/trunk/org.openwms.core/org.openwms.client.flex.lib/src/main/flex/org/openwms/web/flex/client/IObserver.as
@@ -19,20 +19,22 @@
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.openwms.web.flex.client {
+
     import mx.collections.ArrayCollection;
-
+
     /**
-     * An IObserver is notified about an object that references the IObserver.
+     * An IObservable is used as a callback. An UIComponent or any other Actionscript
+     * class implementing this interface can sent a notification to interested Observers
      *
      * @author Heiko Scherrer
      * @version $Revision$
      * since 0.1
      */
     public interface IObserver {
-
-    	/**
-    	 * Callback method.
-    	 */
-        function notify():void;
+
+        /**
+         * Callback method.
+         */
+        function notify() : void;
     }
 }


added a test to the FilterTest class that demonstrates stopping propagation of a message by throwing an error from the filter function.

--- src/org/puremvc/as3/multicore/utilities/pipes/plumbing/FilterTest.as
+++ src/org/puremvc/as3/multicore/utilities/pipes/plumbing/FilterTest.as
@@ -41,6 +41,7 @@
    			ts.addTest( new FilterTest( "testBypassAndFilterModeToggle" ) );
    			ts.addTest( new FilterTest( "testSetParamsByControlMessage" ) );
    			ts.addTest( new FilterTest( "testSetFilterByControlMessage" ) );
+   			ts.addTest( new FilterTest( "testUseFilterToStopAMessage" ) );
    			return ts;
    		}

@@ -199,7 +200,7 @@
    			// test assertions
 			assertTrue( "Expecting message is IPipeMessage", message is IPipeMessage );
 			assertTrue( "Expecting filter is Filter", filter is Filter );
-   			assertTrue( "Expecting wrote bypass message to filter", setParamsWritten );
+   			assertTrue( "Expecting wrote set_params message to filter", setParamsWritten );
    			assertTrue( "Expecting wrote normal message to filter", written );
    			assertTrue( "Expecting received 1 messages", messagesReceived.length == 1 );

@@ -221,14 +222,14 @@
    			var message:IPipeMessage = new Message( Message.NORMAL, { width:10, height:2 });

   			// create filter, attach an anonymous listener to the filter output to receive the message,
-  			// pass in an anonymous function an parameter object
+  			// pass in an anonymous function and an anonymous parameter object
    			var filter:Filter = new Filter( 'scale',
    											new PipeListener( this ,callBackMethod ),
    											function( message:IPipeMessage, params:Object ):void { message.getHeader().width *= params.factor; message.getHeader().height *= params.factor;  },
    											{ factor:10 }
    										  );

-			// create setParams control message
+			// create setFilter control message
 			var setFilterMessage:FilterControlMessage = new FilterControlMessage(FilterControlMessage.SET_FILTER, 'scale', function( message:IPipeMessage, params:Object ):void { message.getHeader().width /= params.factor; message.getHeader().height /= params.factor;  } );

    			// write filter control message to the filter
@@ -240,7 +241,7 @@
    			// test assertions
 			assertTrue( "Expecting message is IPipeMessage", message is IPipeMessage );
 			assertTrue( "Expecting filter is Filter", filter is Filter );
-   			assertTrue( "Expecting wrote bypass message to filter", setFilterWritten );
+   			assertTrue( "Expecting wrote message to filter", setFilterWritten );
    			assertTrue( "Expecting wrote normal message to filter", written );
    			assertTrue( "Expecting received 1 messages", messagesReceived.length == 1 );

@@ -250,6 +251,59 @@
    			assertTrue( "Expecting recieved === message", recieved === message ); // object equality
    			assertTrue( "Expecting recieved.getHeader().width == 1", recieved.getHeader().width == 1 );
    			assertTrue( "Expecting recieved.getHeader().height == .2", recieved.getHeader().height == .2 );
+
+   		}
+
+  		/**
+  		 * Test using a filter function to stop propagation of a message.
+  		 *

+  		 * The way to stop propagation of a message from within a filter
+  		 * is to throw an error from the filter function. This test creates
+  		 * two NORMAL messages, each with header objects that contain
+  		 * a bozoLevel property. One has this property set to
+  		 * 10, the other to 3.

+  		 *

+  		 * Creates a Filter, named 'bozoFilter' with an anonymous pipe listener
+  		 * feeding the output back into this test. The filter funciton is an
+  		 * anonymous function that throws an error if the message's bozoLevel
+  		 * property is greater than the filter parameter bozoThreshold.
+  		 * the anonymous filter parameters object has a bozoThreshold
+  		 * value of 5.

+  		 *

+  		 * The messages are written to the filter and it is shown that the
+  		 * message with the bozoLevel of 10 is not written, while
+  		 * the message with the bozoLevel of 3 is.

+  		 */
+  		public function testUseFilterToStopAMessage():void
+  		{
+			// create messages to send to the queue
+   			var message1:IPipeMessage = new Message( Message.NORMAL, { bozoLevel:10, user:'Dastardly Dan'} );
+   			var message2:IPipeMessage = new Message( Message.NORMAL, { bozoLevel:3, user:'Dudley Doright'} );
+
+  			// create filter, attach an anonymous listener to the filter output to receive the message,
+  			// pass in an anonymous function and an anonymous parameter object
+   			var filter:Filter = new Filter( 'bozoFilter',
+   											new PipeListener( this ,callBackMethod ),
+   											function( message:IPipeMessage, params:Object ):void { if (message.getHeader().bozoLevel > params.bozoThreshold) throw new Error('bozoFiltered'); },
+   											{ bozoThreshold:5 }
+   										  );
+
+   			// write normal message to the filter
+   			var written1:Boolean = filter.write( message1 );
+   			var written2:Boolean = filter.write( message2 );
+
+   			// test assertions
+			assertTrue( "Expecting message is IPipeMessage", message1 is IPipeMessage );
+			assertTrue( "Expecting message is IPipeMessage", message2 is IPipeMessage );
+			assertTrue( "Expecting filter is Filter", filter is Filter );
+   			assertTrue( "Expecting failed to write bad message", written1 == false );
+   			assertTrue( "Expecting wrote good message", written2 == true );
+   			assertTrue( "Expecting received 1 messages", messagesReceived.length == 1 );
+
+   			// test filtered message assertions (message with good auth token passed
+   			var recieved:IPipeMessage = messagesReceived.shift() as IPipeMessage;
+   			assertTrue( "Expecting recieved is IPipeMessage", recieved is IPipeMessage );
+   			assertTrue( "Expecting recieved === message2", recieved === message2 ); // object equality

    		}


Added setters

Added setters

git-svn-id: 27326a786375daad9d33dc990c6f272e4c8f567c@1363 fda5f131-174c-0410-8613-e0905860106b

--- org.openwms/trunk/org.openwms.common/org.openwms.common.domain.as/src/main/flex/org/openwms/common/domain/LocationGroup.as
+++ org.openwms/trunk/org.openwms.common/org.openwms.common.domain.as/src/main/flex/org/openwms/common/domain/LocationGroup.as
@@ -4,7 +4,7 @@
  * This file is part of openwms.org.
  *
  * openwms.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as
+ * it under the terms of the GNU Lesser General Public License as
  * published by the Free Software Foundation, either version 3 of the
  * License, or (at your option) any later version.
  *
@@ -20,6 +20,8 @@
  */
 package org.openwms.common.domain {

+    import org.openwms.common.domain.values.LocationGroupState;
+
     [Bindable]
     [RemoteClass(alias="org.openwms.common.domain.LocationGroup")]
     /**
@@ -27,13 +29,13 @@
      * <p>
      * Used to group Locations with same characteristics.
      * </p>
-     *
+     *
      * @version $Revision$
      * @since 0.1
      * @see org.openwms.common.domain.Location
      */
     public class LocationGroup extends LocationGroupBase {
-
+
         /**
          * Returns the name.
          *
@@ -42,5 +44,24 @@
         public function toString():String {
             return name;
         }
+
+        /**
+         * Set the groupStateIn.
+         *
+         * @param the new state
+         */
+        public function set groupStateIn(value:LocationGroupState):void {
+            _groupStateIn = value;
+        }
+
+        /**
+         * Set the groupStateOut.
+         *
+         * @param the new state
+         */
+        public function set groupStateOut(value:LocationGroupState):void {
+            _groupStateOut = value;
+        }
     }
-}+}
+


Transferred from the Adobe Open Source Subversion Repository

Revision: 9183
Author:   jszeto@adobe.com
Date:     2009-08-07T22:25:44.263850Z

Log Message:
-----------
Transform matrix bug fix

http://bugs.adobe.com/jira/browse/SDK-22390 - Color transform is incorrectly applied in MXML Graphics

For a component or graphic, specifying a transform without an explicit matrix declaration was overriding the convenience transform properties.

The new behavior is to only apply the transform’s matrix to the component or graphic if it was explicitly specified.

QE notes: Add test case
Doc notes: Explain that transform matrix will only apply if explicitly set
Bugs: SDK-22390
Reviewer: Glenn
Tests run: spark primitives
Is noteworthy for integration: No

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/geom/Transform.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259871 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -11554,6 +11554,16 @@
         var ct:ColorTransform = value.colorTransform;
         var pp:PerspectiveProjection = value.perspectiveProjection;

+        var mxTransform:mx.geom.Transform = value as mx.geom.Transform;
+        if (mxTransform)
+        {
+            if (!mxTransform.applyMatrix)
+                m = null;
+
+            if (!mxTransform.applyMatrix3D)
+                m3 = null;
+        }
+
         setTransform(value);

         if(m != null)


Transferred from the Adobe Open Source Subversion Repository

Revision: 11811
Author:   dsubrama@adobe.com
Date:     2009-11-14T20:14:54.284449Z

Log Message:
-----------
Fixes for FXG 2.0.

SDK-23790 - We now set the blendMode correctly when switching from an AIM blendMode to a native Flash one.

SDK-24039 - We hoisted the AIM blendMode support up to UIComponent as per Catalyst's request.

SDK-23715 - Positioning of radial gradient strokes is now correct.

As part of this change, the spark.primitives.supportClasses.shaders packaged move into the framework swc/project, specifically mx.graphics.shaderClasses.

QE notes: Regression and re-gening of so many bitmaps.
Doc notes: None
Bugs: SDK-23790, SDK-24039, SDK-23715
Reviewer: Jason/Evtim/Pete
Tests run: Checkintests - known failures with bitmaps
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/shaders</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/LuminosityMaskFilter.pbk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/GraphicElement.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorDodgeShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/HueShader.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/SoftLight.pbj</path>
<path kind="file" action="M">/flex/sdk/trunk/modules/compiler/src/java/flex2/compiler/fxg/FlexFXG2SWFTranscoder.java</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/SoftLight.pbk</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/Group.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorBurn.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorBurn.pbk</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/ExclusionShaderExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/tools/dependencychecker/frameworkSwcExceptionsList.txt</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/ColorShaderExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/HueShaderExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/FilledElement.as</path>
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/spark/asdoc/en_US/spark/primitives/supportClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/SoftLightShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorBurnShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/SaturationShaderExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Saturation.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Saturation.pbk</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/LuminosityShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/core/UIComponent.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/SparkClasses.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/SoftLightShaderExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/ks5792.jpg</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/ColorBurnShaderExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/LuminosityMaskShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/SaturationShader.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Exclusion.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Exclusion.pbk</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/LuminosityShaderExample.mxml</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/Path.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Luminosity.pbj</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Luminosity.pbk</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Color.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Color.pbk</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/ColorDodgeShaderExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Hue.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorDodge.pbj</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/Hue.pbk</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ColorDodge.pbk</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/asdoc/en_US/mx/graphics/shaderClasses/examples/LuminosityMaskShaderExample.mxml</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/ExclusionShader.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/FrameworkClasses.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/primitives/supportClasses/StrokedElement.as</path>
<path kind="file" action="A">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/shaderClasses/LuminosityMaskFilter.pbj</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1259919 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/UIComponent.as
+++ frameworks/projects/framework/src/mx/core/UIComponent.as
@@ -14,12 +14,14 @@

 import flash.accessibility.Accessibility;
 import flash.accessibility.AccessibilityProperties;
+import flash.display.BlendMode;
 import flash.display.DisplayObject;
 import flash.display.DisplayObjectContainer;
 import flash.display.GradientType;
 import flash.display.Graphics;
 import flash.display.InteractiveObject;
 import flash.display.Loader;
+import flash.display.Shader;
 import flash.display.Sprite;
 import flash.display.Stage;
 import flash.events.Event;
@@ -60,6 +62,14 @@
 import mx.geom.RoundedRectangle;
 import mx.geom.Transform;
 import mx.geom.TransformOffsets;
+import mx.graphics.shaderClasses.ColorBurnShader;
+import mx.graphics.shaderClasses.ColorDodgeShader;
+import mx.graphics.shaderClasses.ColorShader;
+import mx.graphics.shaderClasses.ExclusionShader;
+import mx.graphics.shaderClasses.HueShader;
+import mx.graphics.shaderClasses.LuminosityShader;
+import mx.graphics.shaderClasses.SaturationShader;
+import mx.graphics.shaderClasses.SoftLightShader;
 import mx.managers.CursorManager;
 import mx.managers.ICursorManager;
 import mx.managers.IFocusManager;
@@ -3004,6 +3014,53 @@
             dispatchEvent(new Event("alphaChanged"));
         }
     }
+
+    //----------------------------------
+    //  blendMode
+    //----------------------------------
+
+    /**
+     *  @private
+     *  Storage for the blendMode property.
+     */
+    private var _blendMode:String = BlendMode.NORMAL;
+    private var blendShaderChanged:Boolean;
+    private var blendModeChanged:Boolean;
+
+    [Inspectable(category="General", enumeration="add,alpha,darken,difference,erase,hardlight,invert,layer,lighten,multiply,normal,subtract,screen,overlay,colordodge,colorburn,exclusion,softlight,hue,saturation,color,luminosity", defaultValue="normal")]
+
+    /**
+     *  @private
+     */
+    override public function get blendMode():String
+    {
+        return _blendMode;
+    }
+
+    /**
+     *  @private
+     */
+    override public function set blendMode(value:String):void
+    {
+        if (_blendMode != value)
+        {
+            _blendMode = value;
+            blendModeChanged = true;
+
+            // If one of the non-native Flash blendModes is set,
+            // record the new value and set the appropriate
+            // blendShader on the display object.
+            if (value == "colordodge" ||
+                value =="colorburn" || value =="exclusion" ||
+                value =="softlight" || value =="hue" ||
+                value =="saturation" || value =="color" ||
+                value =="luminosity")
+            {
+                blendShaderChanged = true;
+            }
+            invalidateProperties();
+        }
+    }

     //----------------------------------
     //  doubleClickEnabled
@@ -3245,6 +3302,43 @@
     mx_internal final function set $alpha(value:Number):void
     {
         super.alpha = value;
+    }
+
+    //----------------------------------
+    //  $blendMode
+    //----------------------------------
+
+    /**
+     *  @private
+     *  This property allows access to the Player's native implementation
+     *  of the 'blendMode' property, which can be useful since components
+     *  can override 'alpha' and thereby hide the native implementation.
+     *  Note that this "base property" is final and cannot be overridden,
+     *  so you can count on it to reflect what is happening at the player level.
+     */
+    mx_internal final function get $blendMode():String
+    {
+        return super.blendMode;
+    }
+
+    /**
+     *  @private
+     */
+    mx_internal final function set $blendMode(value:String):void
+    {
+        super.blendMode = value;
+    }
+
+    //----------------------------------
+    //  $blendShader
+    //----------------------------------
+
+    /**
+     *  @private
+     */
+    mx_internal final function set $blendShader(value:Shader):void
+    {
+        super.blendShader = value;
     }

     //----------------------------------
@@ -7689,6 +7783,69 @@
         {
             errorStringChanged = false;
             setBorderColorForErrorString();
+        }
+        if (blendModeChanged)
+        {
+            blendModeChanged = false;
+
+            if (!blendShaderChanged)
+            {
+                $blendMode = _blendMode;
+            }
+            else
+            {
+                // The graphic element's blendMode was set to a non-Flash
+                // blendMode. We mimic the look by instantiating the
+                // appropriate shader class and setting the blendShader
+                // property on the displayObject.
+                blendShaderChanged = false;
+
+                $blendMode = BlendMode.NORMAL;
+
+                switch(_blendMode)
+                {
+                    case "color":
+                    {
+                        $blendShader = new ColorShader();
+                        break;
+                    }
+                    case "colordodge":
+                    {
+                        $blendShader = new ColorDodgeShader();
+                        break;
+                    }
+                    case "colorburn":
+                    {
+                        $blendShader = new ColorBurnShader();
+                        break;
+                    }
+                    case "exclusion":
+                    {
+                        $blendShader = new ExclusionShader();
+                        break;
+                    }
+                    case "hue":
+                    {
+                        $blendShader = new HueShader();
+                        break;
+                    }
+                    case "luminosity":
+                    {
+                        $blendShader = new LuminosityShader();
+                        break;
+                    }
+                    case "saturation":
+                    {
+                        $blendShader = new SaturationShader();
+                        break;
+                    }
+                    case "softlight":
+                    {
+                        $blendShader = new SoftLightShader();
+                        break;
+                    }
+                }
+            }
         }
     }


FLEX-34927 Implemented ObjectUtil.setValue() with the help of getValue().

--- frameworks/projects/framework/src/mx/utils/ObjectUtil.as
+++ frameworks/projects/framework/src/mx/utils/ObjectUtil.as
@@ -1203,7 +1203,7 @@
     /**
      *  Returns the value at the end of the property chain path.
      *  If the value cannot be reached due to null links on the chain,
-     *  undefined  is returned.
+     *  undefined is returned.
      *
      *  @param obj The object at the beginning of the property chain
      *  @param path The path to inspect (e.g. "address.street")
@@ -1230,6 +1230,42 @@
             result = result.hasOwnProperty(path[i]) ? result[path[i]] : undefined;

         return result;
+    }
+
+
+    /**
+     *  Sets a new value at the end of the property chain path.
+     *  If the value cannot be reached due to null links on the chain,
+     *  false is returned.
+     *
+     *  @param obj The object at the beginning of the property chain
+     *  @param path The path to traverse (e.g. "address.street")
+     *  @param newValue The value to set (e.g. "Fleet Street")
+     *
+     *  @return true if the value is successfully set,
+     *  false otherwise. Note that the function does not
+     *  use a try/catch block. You can implement one in the calling
+     *  function if there's a risk of type mismatch or other errors during
+     *  the assignment.
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public static function setValue(obj:Object, path:Array, newValue:*):Boolean
+    {
+        if(!obj || !path || !path.length)
+            return false;
+
+        var secondToLastLink:* = getValue(obj, path.slice(0, -1));
+        if(secondToLastLink && secondToLastLink.hasOwnProperty(path[path.length - 1]))
+        {
+            secondToLastLink[path[path.length - 1]] = newValue;
+            return true;
+        }
+
+        return false;
     }

     /**


Transferred from the Adobe Open Source Subversion Repository

Revision: 5019
Author:   smgilson@adobe.com
Date:     2009-02-19T21:17:21.579153Z

Log Message:
-----------
ASDoc updates to indicate that some Halo containers do not work with the Spark equiv (ControlBar does not work with Spark Panel/AppControlBar does not work with Spark Application), and indicate that Canvas, Box, Tile, Panel have Spark equivs

QE Notes: None
Doc Notes: None
Bugs: -

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Box.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ApplicationControlBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Canvas.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Tile.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/VBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Panel.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/HBox.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ViewStack.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/Accordion.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/TabNavigator.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/containers/ControlBar.as</path>

git-svn-id: 7146a936b37d36e51ea0d66f8acbe0b8281bc7b7@1267707 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mx/src/mx/containers/TabNavigator.as
+++ frameworks/projects/mx/src/mx/containers/TabNavigator.as
@@ -163,8 +163,13 @@
 [IconFile("TabNavigator.png")]

 /**
- *  The TabNavigator container extends the ViewStack container by including
- *  a TabBar container for navigating between its child containers.
+ *  The Halo TabNavigator container extends the Halo ViewStack container by including
+ *  a TabBar container for navigating between its child Halo containers.
+ *
+ *
Note: The direct children of a Halo navigator container must be
+ *  Halo containers, either Halo layout or Halo navigator containers.
+ *  You cannot directly nest a control or a Spark container within a navigator;
+ *  they must be children of a child Halo container.

  *
  *
Like a ViewStack container, a TabNavigator container has a collection
  *  of child containers, in which only one child at a time is visible.
@@ -335,36 +340,36 @@
     /**
      *  @private
      *  The baselinePosition of a TabNavigator is calculated
-	 *  for the label of the first tab.
-  	 *  If there are no children, a child is temporarily added
-  	 *  to do the computation.
+     *  for the label of the first tab.
+     *  If there are no children, a child is temporarily added
+     *  to do the computation.
      */
     override public function get baselinePosition():Number
     {
-    	if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
-    		return super.baselinePosition;
-
-		if (!validateBaselinePosition())
-			return NaN;
-
-	    var isEmpty:Boolean = numChildren == 0;
-	    if (isEmpty)
-	    {
-	    	var child0:Container = new Container();
-	    	addChild(child0);
-	    	validateNow();
-	    }
-
-	    var tab0:Button = getTabAt(0);
-	    var result:Number = tabBar.y + tab0.y + tab0.baselinePosition;
-
-	    if (isEmpty)
-	    {
-	   		removeChildAt(0);
-	   		validateNow();
-	    }
-
-	    return result;
+        if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
+            return super.baselinePosition;
+
+        if (!validateBaselinePosition())
+            return NaN;
+
+        var isEmpty:Boolean = numChildren == 0;
+        if (isEmpty)
+        {
+            var child0:Container = new Container();
+            addChild(child0);
+            validateNow();
+        }
+
+        var tab0:Button = getTabAt(0);
+        var result:Number = tabBar.y + tab0.y + tab0.baselinePosition;
+
+        if (isEmpty)
+        {
+            removeChildAt(0);
+            validateNow();
+        }
+
+        return result;
     }

     //----------------------------------
@@ -439,7 +444,7 @@
         return tabHeight - borderMetrics.top;
     }

-	//----------------------------------
+    //----------------------------------
     //  tabBarStyleFilters
     //----------------------------------

@@ -450,20 +455,20 @@
      */
     protected function get tabBarStyleFilters():Object
     {
-    	return _tabBarStyleFilters;
+        return _tabBarStyleFilters;
     }

     private static var _tabBarStyleFilters:Object =
     {
-    	"firstTabStyleName" : "firstTabStyleName",
-    	"horizontalAlign" : "horizontalAlign",
-    	"horizontalGap" : "horizontalGap",
-    	"lastTabStyleName" : "lastTabStyleName",
-    	"selectedTabTextStyleName" : "selectedTabTextStyleName",
-    	"tabStyleName" : "tabStyleName",
-    	"tabWidth" : "tabWidth",
-    	"verticalAlign" : "verticalAlign",
-    	"verticalGap" : "verticalGap"
+        "firstTabStyleName" : "firstTabStyleName",
+        "horizontalAlign" : "horizontalAlign",
+        "horizontalGap" : "horizontalGap",
+        "lastTabStyleName" : "lastTabStyleName",
+        "selectedTabTextStyleName" : "selectedTabTextStyleName",
+        "tabStyleName" : "tabStyleName",
+        "tabWidth" : "tabWidth",
+        "verticalAlign" : "verticalAlign",
+        "verticalGap" : "verticalGap"
     };

     //--------------------------------------------------------------------------
@@ -489,9 +494,9 @@

             if (FlexVersion.compatibilityVersion < FlexVersion.VERSION_3_0)
             {
-            	tabBar.setStyle("paddingTop", 0);
-            	tabBar.setStyle("paddingBottom", 0);
-				tabBar.setStyle("borderStyle", "none");
+                tabBar.setStyle("paddingTop", 0);
+                tabBar.setStyle("paddingBottom", 0);
+                tabBar.setStyle("borderStyle", "none");
             }
         }
     }