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@1273758 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/rpc/src/mx/messaging/config/ServerConfig.as
+++ frameworks/projects/rpc/src/mx/messaging/config/ServerConfig.as
@@ -0,0 +1,657 @@
+/*************************************************************************
+ *
+ * ADOBE CONFIDENTIAL
+ * __________________
+ *
+ *  [2002] - [2007] Adobe Systems Incorporated
+ *  All Rights Reserved.
+ *
+ * NOTICE:  All information contained herein is, and remains
+ * the property of Adobe Systems Incorporated and its suppliers,
+ * if any.  The intellectual and technical concepts contained
+ * herein are proprietary to Adobe Systems Incorporated
+ * and its suppliers and may be covered by U.S. and Foreign Patents,
+ * patents in process, and are protected by trade secret or copyright law.
+ * Dissemination of this information or reproduction of this material
+ * is strictly forbidden unless prior written permission is obtained
+ * from Adobe Systems Incorporated.
+ */
+package mx.messaging.config
+{
+
+import flash.utils.getDefinitionByName;
+
+import mx.collections.ArrayCollection;
+import mx.core.mx_internal;
+import mx.messaging.Channel;
+import mx.messaging.ChannelSet;
+import mx.messaging.MessageAgent;
+import mx.messaging.errors.InvalidChannelError;
+import mx.messaging.errors.InvalidDestinationError;
+import mx.messaging.errors.MessagingError;
+import mx.messaging.messages.IMessage;
+import mx.resources.IResourceManager;
+import mx.resources.ResourceManager;
+import mx.utils.StringUtil;
+import mx.utils.ObjectUtil;
+
+use namespace mx_internal;
+
+[ResourceBundle("messaging")]
+
+/**
+ *  This class provides access to the server messaging configuration information.
+ *  This class encapsulates information from the services-config.xml file on the client
+ *  and is used by the messaging system to provide configured ChannelSets and Channels
+ *  to the messaging framework.
+ *
+ *
The XML source is provided during the compilation process.
+ *  However, there is currently no internal restriction preventing the
+ *  acquisition of this XML data by other means, such as network, local file
+ *  system, or shared object at runtime.

+ */
+public class ServerConfig
+{
+    //--------------------------------------------------------------------------
+    //
+    // Static Constants
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @private
+     *  Channel config parsing constant.
+     */
+    public static const CLASS_ATTR:String = "type";
+
+    /**
+     *  @private
+     *  Channel config parsing constant.
+     */
+    public static const URI_ATTR:String = "uri";
+
+    //--------------------------------------------------------------------------
+    //
+    // Class variables
+    //
+    //--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  Storage for the resourceManager getter.
+	 *  This gets initialized on first access,
+	 *  not at static initialization time, in order to ensure
+	 *  that the Singleton registry has already been initialized.
+	 */
+	private static var _resourceManager:IResourceManager;
+
+	/**
+	 *  @private
+     *  A reference to the object which manages
+     *  all of the application's localized resources.
+     *  This is a singleton instance which implements
+     *  the IResourceManager interface.
+	 */
+	private static function get resourceManager():IResourceManager
+	{
+		if (!_resourceManager)
+			_resourceManager = ResourceManager.getInstance();
+
+		return _resourceManager;
+	}
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Variables
+    //
+    //--------------------------------------------------------------------------
+
+	/**
+	 *  @private
+	 *  The server configuration data.
+	 */
+	public static var serverConfigData:XML;
+
+    /**
+     *  @private
+     *  Caches shared ChannelSets, keyed by strings having the format:
+     *  <list of comma delimited channel ids>:[true|false] - where the final
+     *  flag indicates whether the ChannelSet should be used for clustered
+     *  destinations or not.
+     */
+    private static var _channelSets:Object = {};
+
+    /**
+     *  @private
+     *  Caches shared clustered Channel instances keyed by Channel id.
+     */
+    private static var _clusteredChannels:Object = {};
+
+    /**
+     *  @private
+     *  Caches shared unclustered Channel instances keyed by Channel id.
+     */
+    private static var _unclusteredChannels:Object = {};
+
+    /**
+     * @private
+     * Keeps track of Channel endpoint uris whose configuration has been fetched
+     * from the server.
+     */
+    private static var _configFetchedChannels:Object;
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Properties
+    //
+    //--------------------------------------------------------------------------
+
+	//----------------------------------
+	//  xml
+	//----------------------------------
+
+    /**
+     *  The XML configuration; this value must contain the relevant portions of
+     *  the <services> tag from the services-config.xml file.
+     */
+    public static function get xml():XML
+    {
+        if (serverConfigData == null)
+            serverConfigData = <services/>;
+        return serverConfigData;
+    }
+
+    /**
+     *  @private
+     */
+    public static function set xml(value:XML):void
+    {
+        serverConfigData = value;
+        // Reset cached Channels and ChannelSets.
+        _channelSets = {};
+        _clusteredChannels = {};
+        _unclusteredChannels = {};
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  This method ensures that the destinations specified contain identical
+     *  channel definitions.
+     *  If the channel definitions between the two destinations specified are
+     *  not identical this method will throw an ArgumentError.
+     *
+     *  @param   destinationA:String first destination to compare against
+     *  @param   destinationB:String second destination to compare channels with
+     *  @throw   ArgumentError if the channel definitions of the specified
+     *           destinations aren't identical.
+     */
+    public static function checkChannelConsistency(destinationA:String,
+                                                   destinationB:String):void
+    {
+        var channelIdsA:Array = getChannelIdList(destinationA);
+        var channelIdsB:Array = getChannelIdList(destinationB);
+        if (ObjectUtil.compare(channelIdsA, channelIdsB) != 0)
+            throw new ArgumentError("Specified destinations are not channel consistent");
+    }
+
+    /**
+     *  Returns a shared instance of the configured Channel.
+     *
+     *  @param id The id of the desired Channel.
+     *
+     *  @param clustered True if the Channel will be used in a clustered
+     *                   fashion; otherwise false.
+     *
+     *  @return The Channel instance.
+     *
+     *  @throws mx.messaging.errors.InvalidChannelError If no Channel has the specified id.
+     */
+    public static function getChannel(id:String,
+                                      clustered:Boolean = false):Channel
+    {
+        var channel:Channel;
+
+        if (!clustered)
+        {
+            if (id in _unclusteredChannels)
+            {
+                return _unclusteredChannels[id];
+            }
+            else
+            {
+                 channel = createChannel(id);
+                _unclusteredChannels[id] = channel;
+                return channel;
+            }
+        }
+        else
+        {
+            if (id in _clusteredChannels)
+            {
+                return _clusteredChannels[id];
+            }
+            else
+            {
+                channel = createChannel(id);
+                _clusteredChannels[id] = channel;
+                return channel;
+            }
+        }
+    }
+
+    /**
+     *  Returns a shared ChannelSet for use with the specified destination
+     *  belonging to the service that handles the specified message type.
+     *
+     *  @param destinationId The target destination id.
+     *
+     *  @return The ChannelSet.
+     *
+     *  @throws mx.messaging.errors.InvalidDestinationError If the specified destination
+     *                                  does not have channels and the application
+     *                                  did not define default channels.
+     */
+    public static function getChannelSet(destinationId:String):ChannelSet
+    {
+    	var destinationConfig:XML = getDestinationConfig(destinationId);
+        return internalGetChannelSet(destinationConfig, destinationId);
+    }
+
+    /**
+     *  Returns the property information for the specified destination
+     *
+     *  @param destinationId The id of the desired destination.
+     *
+     *  @return XMLList containing the <property> tag information.
+     *
+     *  @throws mx.messaging.errors.InvalidDestinationError If the specified destination is not found.
+     */
+    public static function getProperties(destinationId:String):XMLList
+    {
+    	var destination:XMLList = xml..destination.(@id == destinationId);
+
+    	if (destination.length() > 0)
+		{
+    		return destination.properties;
+		}
+    	else
+		{
+			var message:String = resourceManager.getString(
+				"messaging", "unknownDestination", [ destinationId ]);
+    		throw new InvalidDestinationError(message);
+		}
+
+    	return destination;
+    }
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Internal Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  This method returns true iff the channelset specified has channels with
+     *  ids or uris that match those found in the destination specified.
+     */
+    mx_internal static function channelSetMatchesDestinationConfig(channelSet:ChannelSet,
+                                                                   destination:String):Boolean
+    {
+        if (channelSet != null)
+        {
+            if (ObjectUtil.compare(channelSet.channelIds, getChannelIdList(destination)) == 0)
+                return true;
+
+            // if any of the specified channelset channelIds do not match then
+            // we have to move to comparing the uris, as the ids could be null
+            // in the specified channelset.
+            var csUris:Array = [];
+            var csChannels:Array = channelSet.channels;
+            for (var i:uint = 0; i<csChannels.length; i++)
+                csUris.push(csChannels[i].uri);
+
+            var ids:Array = getChannelIdList(destination);
+            var dsUris:Array = [];
+            var dsChannels:XMLList;
+            var channelConfig:XML;
+            for (var j:uint = 0; j<ids.length; j++)
+            {
+                dsChannels = xml.channels.channel.(@id == ids[j]);
+                channelConfig = dsChannels[0];
+                dsUris.push(channelConfig.endpoint[0].attribute(URI_ATTR).toString());
+            }
+
+            return ObjectUtil.compare(csUris, dsUris) == 0;
+
+        }
+        return false;
+    }
+
+    /**
+     * @private
+     * returns if the specified endpoint has been fetched already
+     */
+    mx_internal static function fetchedConfig(endpoint:String):Boolean
+    {
+        return _configFetchedChannels != null && _configFetchedChannels[endpoint] != null;
+    }
+
+    /**
+     *  @private
+     *  This method returns a list of the channel ids for the given destination
+     *  configuration. If no channels exist for the destination, it returns a
+     *  list of default channel ids for the applcation
+     */
+    mx_internal static function getChannelIdList(destination:String):Array
+    {
+     	var destinationConfig:XML = getDestinationConfig(destination);
+		return destinationConfig? getChannelIds(destinationConfig)
+                                        : getDefaultChannelIds();
+    }
+
+    /**
+     *  @private
+     *  Used by the Channels to determine whether the Channel should request
+     *  dynamic configuration from the server for its MessageAgents.
+     */
+	mx_internal static function needsConfig(channel:Channel):Boolean
+	{
+	    // Configuration for the endpoint has not been fetched by some other channel.
+	    if (_configFetchedChannels == null || _configFetchedChannels[channel.endpoint] == null)
+        {
+    	    var channelSets:Array = channel.channelSets;
+    	    var m:int = channelSets.length;
+    		for (var i:int = 0; i < m; i++)
+            {
+                var messageAgents:Array = ChannelSet(channelSets[i]).messageAgents;
+                var n:int = messageAgents.length;
+                for (var j:int = 0; j < n; j++)
+                {
+                    if (MessageAgent(messageAgents[j]).needsConfig)
+                        return true;
+                }
+            }
+        }
+        return false;
+	}
+
+    /**
+     *  @private
+     *  This method updates the xml with serverConfig object returned from the
+     *  server during initial client connect
+     */
+     mx_internal static function updateServerConfigData(serverConfig:ConfigMap, endpoint:String = null):void
+     {
+		if (serverConfig != null)
+		{
+		    if (endpoint != null)
+		    {
+    		    // Add the endpoint uri to the list of uris whose configuration
+    		    // has been fetched.
+    		    if (_configFetchedChannels == null)
+    		        _configFetchedChannels = {};
+
+    		    _configFetchedChannels[endpoint] = true;
+		    }
+
+			var newServices:XML = <services></services>;
+			convertToXML(serverConfig, newServices);
+
+	        // Update default-channels of the application
+            xml["default-channels"] = newServices["default-channels"];
+
+            // Update the services
+			for each (var newService:XML in newServices..service)
+			{
+				var oldServices:XMLList = xml.service.(@id == newService.@id);
+				if (oldServices.length() != 0)
+				{
+					// Assuming only one service exists with the id
+					var oldService:XML = oldServices[0];
+
+					// Update destinations
+					for each (var newDestination:XML in newService..destination)
+					{
+						var oldDestinations:XMLList = oldService.destination.(@id == newDestination.@id);
+						if (oldDestinations.length() != 0)
+						{
+							// Assuming only one destination exists with the id
+							delete oldDestinations[0];
+						}
+						oldService.appendChild(newDestination);
+					}
+				}
+				else
+				{
+					xml.appendChild(newService);
+				}
+			}
+
+			// Update the channels
+			var newChannels:XMLList = newServices.channels;
+            if (newChannels.length() > 0)
+            {
+       		    var oldChannels:XML = xml.channels[0];
+	    		if (oldChannels == null || oldChannels.length() == 0)
+    			{
+			        xml.appendChild(newChannels);
+	    		}
+	    		// Commenting this section out as there is no real use case
+	    		// for updating channel definitions.
+	    		/*
+		    	else
+			    {
+			        for each (var newChannel:XML in newChannels.channel)
+			        {
+			            var oldChannel:XMLList = oldChannels.channel.(@id == newChannel.@id);
+			            if (oldChannel.length() > 0)
+	                    {
+	                        // Assuming only one channel exists with the same id.
+	                        delete oldChannel[0];
+	                    }
+	                    oldChannels.appendChild(newChannel);
+			        }
+			    }
+			    */
+            }
+		}
+     }
+
+    //--------------------------------------------------------------------------
+    //
+    // Static Private Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Helper method that builds a new Channel instance based on the
+     *  configuration for the specified id.
+     *
+     *  @param id The id for the configured Channel to build.
+     *
+     *  @return The Channel instance.
+     *
+     *  @throws mx.messaging.errors.InvalidChannelError If no configuration data for the specified
+     *                             id exists.
+     */
+    private static function createChannel(channelId:String):Channel
+    {
+		var message:String;
+
+        var channels:XMLList = xml.channels.channel.(@id == channelId);
+        if (channels.length() == 0)
+        {
+			message = resourceManager.getString(
+				"messaging", "unknownChannelWithId", [ channelId ]);
+            throw new InvalidChannelError(message);
+        }
+
+        var channelConfig:XML = channels[0];
+        var className:String = channelConfig.attribute(CLASS_ATTR).toString();
+        var uri:String = channelConfig.endpoint[0].attribute(URI_ATTR).toString();
+        var channel:Channel = null;
+        try
+        {
+            var channelClass:Class = getDefinitionByName(className) as Class;
+            channel = new channelClass(channelId, uri);
+            channel.applySettings(channelConfig);
+        }
+        catch(e:ReferenceError)
+        {
+			message = resourceManager.getString(
+				"messaging", "unknownChannelClass", [ className ]);
+            throw new InvalidChannelError(message);
+        }
+        return channel;
+    }
+
+   	/**
+   	 * Converts the ConfigMap of properties into XML
+   	 */
+	private static function convertToXML(config:ConfigMap, configXML:XML):void
+	{
+		for (var propertyKey:Object in config)
+		{
+			var propertyValue:Object = config[propertyKey];
+
+			if (propertyValue is String)
+			{
+				if (propertyKey == "")
+				{
+					// Add as a value
+					var name:Object = configXML.localName();
+					var parent:XML = configXML.parent();
+					parent[name] = propertyValue;
+				}
+				else
+				{
+					// Add as an attribute
+					configXML.@[propertyKey] = propertyValue;
+				}
+			}
+			else if (propertyValue is ArrayCollection || propertyValue is Array)
+			{
+				var propertyValueList:Array;
+				if (propertyValue is ArrayCollection)
+					propertyValueList = ArrayCollection(propertyValue).toArray();
+				else
+					propertyValueList = propertyValue as Array;
+
+			    for (var i:int = 0; i < propertyValueList.length; i++)
+	    		{
+   					var propertyXML1:XML = <{propertyKey}></{propertyKey}>
+					configXML.appendChild(propertyXML1);
+					convertToXML(propertyValueList[i] as ConfigMap, propertyXML1);
+	    		}
+			}
+			else // assuming that it is ConfigMap
+			{
+   				var propertyXML2:XML = <{propertyKey}></{propertyKey}>
+				configXML.appendChild(propertyXML2);
+				convertToXML(propertyValue as ConfigMap, propertyXML2);
+			}
+		}
+	}
+
+    private static function getChannelIds(destinationConfig:XML):Array
+    {
+        var result:Array = [];
+        var channels:XMLList = destinationConfig.channels.channel;
+	    var n:int = channels.length();
+	    for (var i:int = 0; i < n; i++)
+	    {
+	        result.push(channels[i].@ref.toString());
+	    }
+        return result;
+    }
+
+    /**
+     * @private
+     * This method returns a list of default channel ids for the application
+     */
+	private static function getDefaultChannelIds():Array
+	{
+		var result:Array = [];
+		var channels:XMLList = xml["default-channels"].channel;
+        var n:int = channels.length();
+        for (var i:int = 0; i < n; i++)
+        {
+            result.push(channels[i].@ref.toString());
+        }
+        return result;
+	}
+
+    /**
+     *  Returns the destination XML data specific to the destination and message
+     *  type specified. Returns null if the destination is not found.
+     */
+    private static function getDestinationConfig(destinationId:String):XML
+    {
+        var destinations:XMLList = xml..destination.(@id == destinationId);
+        var destinationCount:int = destinations.length();
+        if (destinationCount == 0)
+        {
+			return null;
+        }
+        else
+        {
+            // Destination ids are unique among services
+            return destinations[0];
+        }
+    }
+
+    /**
+     *  Helper method to look up and return a cached ChannelSet (and build and
+     *  cache an instance if necessary).
+     *
+     *  @param destinationConfig The configuration for the target destination.
+     *  @param destinatonId The id of the target destination.
+     *
+     *  @return The ChannelSet.
+     */
+    private static function internalGetChannelSet(
+                                        destinationConfig:XML,
+                                        destinationId:String):ChannelSet
+    {
+        var channelIds:Array;
+		var clustered:Boolean;
+
+        if (destinationConfig == null)
+        {
+        	channelIds = getDefaultChannelIds();
+            if (channelIds.length == 0)
+            {
+				var message:String = resourceManager.getString(
+					"messaging", "noChannelForDestination", [ destinationId ]);
+                throw new InvalidDestinationError(message);
+            }
+        	clustered = false;
+        }
+        else
+        {
+			channelIds = getChannelIds(destinationConfig);
+			clustered = (destinationConfig.properties.network.cluster.length() > 0) ? true : false;
+        }
+
+        var channelSetId:String = channelIds.join(",") + ":" + clustered;
+
+        if (channelSetId in _channelSets)
+        {
+            return _channelSets[channelSetId];
+        }
+        else
+        {
+            var channelSet:ChannelSet = new ChannelSet(channelIds, clustered);
+            _channelSets[channelSetId] = channelSet;
+            return channelSet;
+        }
+    }
+
+}
+
+}


Transferred from the Adobe Open Source Subversion Repository

Revision: 10657
Author:   chaase@adobe.com
Date:     2009-09-28T21:03:46.522617Z

Log Message:
-----------
Fixes for 4 unrelated effects bugs.
-	Nested parallel effects were not dealing with targets in children. (CompositeEffect)
-	Composite effects were capturing values for child effects property (need to have child effects only capture values for their targets, not any other targets in the overall effect) (CompositeEffect)
-	3D Transform effects were not correctly dealing with transform centers that were staying in place during the effect. We needed to force the postTranslationX/Y properties to be animated, even though they might be unchanging. (AnimateTransform)
-	Supplying Fade in a trigger for a popupAnchor caused an RTE due to a bad assumption about components vs groups. This fix doesn’t actually made fading work (new effects don’t deal with triggers), but it prevents the crash (EffectManager)

QE notes: None
Doc notes: None
Bugs: SDK-23413, SDK-23381, SDK-23366, SDK-23460
Reviewer: Jason
Tests run: checkintests, Mustella spark/effects, mx/effects
Is noteworthy for integration: Yes (downstream teams asked for 23460 fix)

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/CompositeEffect.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/effects/EffectManager.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/effects/AnimateTransform.as</path>

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

--- frameworks/projects/spark/src/spark/effects/AnimateTransform.as
+++ frameworks/projects/spark/src/spark/effects/AnimateTransform.as
@@ -669,6 +669,7 @@
                     // to transform center changes
                     if (propName in valueMap &&
                         (propName == "translationX" || propName == "translationY" ||
+                         propName == "postLayoutTranslationX" || propName == "postLayoutTranslationY" ||
                          valueMap[propName] != otherValueMap[propName]))
                     {
                         transitionValues[propName] = valueMap[propName];


Transferred from the Adobe Open Source Subversion Repository

Revision: 7979
Author:   aharui@adobe.com
Date:     2009-06-18T21:47:52.364806Z

Log Message:
-----------
ButtonBar PARB changes:

-arrowKeysWrapFocus removed from ButtonBar
-arrowKeysWrapFocus added to ListBase
-arrowKeysWrapFocus added as parameter to LayoutBase.getNavigationDestinationIndex (and subclasses of LayoutBase)
-itemClick event removed from ButtonBar, now uses "change" event like other ListBase components
-ASDoc removed for partAdded/partRemoved

QE Notes: None
Doc Notes: Yes, ASDoc affected by every change listed above
Bugs: N/A
Reviewer: szeto
tests: checkintests mustella/List mustella/ButtonBar

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DropDownList.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/ButtonBar.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ListBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
+++ frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as
@@ -1203,23 +1203,24 @@
     /**
      *  @private
      */
-     override public function getNavigationDestinationIndex(currentIndex:int, navigationUnit:uint):int
-     {
+    override public function getNavigationDestinationIndex(currentIndex:int, navigationUnit:uint, arrowKeysWrapFocus:Boolean):int
+    {
         if (!target || target.numElements < 1)
             return -1;

+        var maxIndex:int = target.numElements - 1;
+
         // Special case when nothing was previously selected
         if (currentIndex == -1)
         {
             if (navigationUnit == NavigationUnit.LEFT)
-                return -1;
+                return arrowKeysWrapFocus ? maxIndex : -1;

             if (navigationUnit == NavigationUnit.RIGHT)
                 return 0;
         }

         // Make sure currentIndex is within range
-        var maxIndex:int = target.numElements - 1;
         currentIndex = Math.max(0, Math.min(maxIndex, currentIndex));

         var newIndex:int;
@@ -1230,13 +1231,19 @@
         {
             case NavigationUnit.LEFT:
             {
-               newIndex = currentIndex - 1;
+               if (arrowKeysWrapFocus && currentIndex == 0)
+                   newIndex = maxIndex;
+               else
+                   newIndex = currentIndex - 1;
                break;
             }

             case NavigationUnit.RIGHT:
             {
-               newIndex = currentIndex + 1;
+               if (arrowKeysWrapFocus && currentIndex == maxIndex)
+                   newIndex = 0;
+               else
+                   newIndex = currentIndex + 1;
                break;
             }

@@ -1328,7 +1335,7 @@
                 break;
             }

-            default: return super.getNavigationDestinationIndex(currentIndex, navigationUnit);
+            default: return super.getNavigationDestinationIndex(currentIndex, navigationUnit, arrowKeysWrapFocus);
         }
         return Math.max(0, Math.min(maxIndex, newIndex));
     }


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@1264855 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/mobilecomponents/src/spark/transitions/SlideViewTransition.as
+++ frameworks/projects/mobilecomponents/src/spark/transitions/SlideViewTransition.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2010 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: 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@1259550 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/core/IUIComponent.as
+++ frameworks/projects/framework/src/mx/core/IUIComponent.as
@@ -0,0 +1,413 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2005-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.core
+{
+
+import flash.display.DisplayObject;
+import flash.display.DisplayObjectContainer;
+import flash.display.Sprite;
+import flash.geom.Rectangle;
+import mx.managers.ISystemManager;
+
+/**
+ *  The IUIComponent interface defines the basic set of APIs
+ *  that you must implement to create a child of a Flex container or list.
+ */
+public interface IUIComponent extends IFlexDisplayObject
+{
+    //--------------------------------------------------------------------------
+    //
+    //  Properties
+    //
+    //--------------------------------------------------------------------------
+
+    //----------------------------------
+    //  baselinePosition
+    //----------------------------------
+
+    /**
+     *  The y-coordinate of the baseline
+     *  of the first line of text of the component.
+     *
+     *
This property is used to implement
+     *  the baseline constraint style.
+     *  It is also used to align the label of a FormItem
+     *  with the controls in the FormItem.

+     */
+    function get baselinePosition():Number;
+
+
+    //----------------------------------
+    //  document
+    //----------------------------------
+
+    /**
+     *  A reference to the document object associated with this component.
+     *  A document object is an Object at the top of the hierarchy
+     *  of a Flex application, MXML component, or ActionScript component.
+     */
+    function get document():Object
+
+    /**
+     *  @private
+     */
+    function set document(value:Object):void
+
+    //----------------------------------
+    //  enabled
+    //----------------------------------
+
+    /**
+     *  Whether the component can accept user interaction.
+     *  If you set the enabled property to false
+     *  for a container, Flex dims the color of the container and of all
+     *  of its children, and blocks user input to the container
+     *  and to all of its children.
+     */
+    function get enabled():Boolean;
+
+    /**
+     *  @private
+     */
+    function set enabled(value:Boolean):void;
+
+    //----------------------------------
+    //  explicitHeight
+    //----------------------------------
+
+    /**
+     *  The explicitly specified height for the component,
+     *  in pixels, as the component's coordinates.
+     *  If no height is explicitly specified, the value is NaN.
+     *
+     *  @see mx.core.UIComponent#explicitHeight
+     */
+    function get explicitHeight():Number;
+
+    /**
+     *  @private
+     */
+    function set explicitHeight(value:Number):void;
+
+    //----------------------------------
+    //  explicitMaxHeight
+    //----------------------------------
+
+    /**
+     *  Number that specifies the maximum height of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#explicitMaxHeight
+     */
+    function get explicitMaxHeight():Number;
+
+    //----------------------------------
+    //  explicitMaxWidth
+    //----------------------------------
+
+    /**
+     *  Number that specifies the maximum width of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#explicitMaxWidth
+     */
+    function get explicitMaxWidth():Number;
+
+    //----------------------------------
+    //  explicitMinHeight
+    //----------------------------------
+
+    /**
+     *  Number that specifies the minimum height of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#explicitMinHeight
+     */
+    function get explicitMinHeight():Number;
+
+    //----------------------------------
+    //  explicitMinWidth
+    //----------------------------------
+
+    /**
+     *  Number that specifies the minimum width of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#explicitMinWidth
+     */
+    function get explicitMinWidth():Number;
+
+    //----------------------------------
+    //  explicitWidth
+    //----------------------------------
+
+    /**
+     *  The explicitly specified width for the component,
+     *  in pixels, as the component's coordinates.
+     *  If no width is explicitly specified, the value is NaN.
+     *
+     *  @see mx.core.UIComponent#explicitWidth
+     */
+    function get explicitWidth():Number;
+
+    /**
+     *  @private
+     */
+    function set explicitWidth(value:Number):void;
+
+    //----------------------------------
+    //  focusPane
+    //----------------------------------
+
+    /**
+     *  A single Sprite object that is shared among components
+     *  and used as an overlay for drawing focus.
+     *  Components share this object if their parent is a focused component,
+     *  not if the component implements the IFocusManagerComponent interface.
+     *
+     *  @see mx.core.UIComponent#focusPane
+     */
+    function get focusPane():Sprite;
+
+    /**
+     *  @private
+     */
+    function set focusPane(value:Sprite):void;
+
+    //----------------------------------
+    //  includeInLayout
+    //----------------------------------
+
+    /**
+     *  @copy mx.core.UIComponent#includeInLayout
+     */
+    function get includeInLayout():Boolean;
+
+    /**
+     *  @private
+     */
+    function set includeInLayout(value:Boolean):void;
+
+    //----------------------------------
+    //  isPopUp
+    //----------------------------------
+
+    /**
+     *  @copy mx.core.UIComponent#isPopUp
+     */
+    function get isPopUp():Boolean;
+
+    /**
+     *  @private
+     */
+    function set isPopUp(value:Boolean):void;
+
+    //----------------------------------
+    //  maxHeight
+    //----------------------------------
+
+    /**
+     *  Number that specifies the maximum height of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#maxHeight
+     */
+    function get maxHeight():Number;
+
+    //----------------------------------
+    //  maxWidth
+    //----------------------------------
+
+    /**
+     *  Number that specifies the maximum width of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#maxWidth
+     */
+    function get maxWidth():Number;
+
+    //----------------------------------
+    //  measuredMinHeight
+    //----------------------------------
+
+    /**
+     *  @copy mx.core.UIComponent#measuredMinHeight
+     */
+    function get measuredMinHeight():Number;
+
+    /**
+     *  @private
+     */
+    function set measuredMinHeight(value:Number):void;
+
+    //----------------------------------
+    //  measuredMinWidth
+    //----------------------------------
+
+    /**
+     *  @copy mx.core.UIComponent#measuredMinWidth
+     */
+    function get measuredMinWidth():Number;
+
+    /**
+     *  @private
+     */
+    function set measuredMinWidth(value:Number):void;
+
+    //----------------------------------
+    //  minHeight
+    //----------------------------------
+
+    /**
+     *  Number that specifies the minimum height of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#minHeight
+     */
+    function get minHeight():Number;
+
+    //----------------------------------
+    //  minWidth
+    //----------------------------------
+
+    /**
+     *  Number that specifies the minimum width of the component,
+     *  in pixels, as the component's coordinates.
+     *
+     *  @see mx.core.UIComponent#minWidth
+     */
+    function get minWidth():Number;
+
+    //----------------------------------
+    //  owner
+    //----------------------------------
+
+    /**
+     *  Typically the parent container of this component.
+     *  However, if this is a popup component, the owner is
+     *  the component that popped it up.
+     *  For example, the owner of a dropdown list of a ComboBox control
+     *  is the ComboBox control itself.
+     *  This property is not managed by Flex, but
+     *  by each component.
+     *  Therefore, if you popup a component,
+     *  you should set this property accordingly.
+     */
+    function get owner():DisplayObjectContainer;
+
+    /**
+     *  @private
+     */
+    function set owner(value:DisplayObjectContainer):void;
+
+    //----------------------------------
+    //  percentHeight
+    //----------------------------------
+
+    /**
+     *  Number that specifies the height of a component as a
+     *  percentage of its parent's size.
+     *  Allowed values are 0 to 100.
+     */
+    function get percentHeight():Number;
+
+    /**
+     *  @private
+     */
+    function set percentHeight(value:Number):void;
+
+    //----------------------------------
+    //  percentWidth
+    //----------------------------------
+
+    /**
+     *  Number that specifies the width of a component as a
+     *  percentage of its parent's size.
+     *  Allowed values are 0 to 100.
+     */
+    function get percentWidth():Number;
+
+    /**
+     *  @private
+     */
+    function set percentWidth(value:Number):void;
+
+    //----------------------------------
+    //  systemManager
+    //----------------------------------
+
+    /**
+     *  A reference to the SystemManager object for this component.
+     */
+    function get systemManager():ISystemManager;
+
+    /**
+     *  @private
+     */
+    function set systemManager(value:ISystemManager):void;
+
+    //----------------------------------
+    //  tweeningProperties
+    //----------------------------------
+
+    /**
+     *  Used by EffectManager.
+     *  Returns non-null if a component
+     *  is not using the EffectManager to execute a Tween.
+     */
+    function get tweeningProperties():Array;
+
+    /**
+     *  @private
+     */
+    function set tweeningProperties(value:Array):void;
+
+    //--------------------------------------------------------------------------
+    //
+    //  Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  Initialize the object.
+     *
+     *  @see mx.core.UIComponent#initialize()
+     */
+    function initialize():void;
+
+    /**
+     *  @copy mx.core.UIComponent#parentChanged()
+     */
+    function parentChanged(p:DisplayObjectContainer):void;
+
+    /**
+     *  @copy mx.core.UIComponent#getExplicitOrMeasuredWidth()
+     */
+    function getExplicitOrMeasuredWidth():Number;
+
+    /**
+     *  @copy mx.core.UIComponent#getExplicitOrMeasuredHeight()
+     */
+    function getExplicitOrMeasuredHeight():Number;
+
+    /**
+     *  @copy mx.core.UIComponent#setVisible()
+     */
+    function setVisible(value:Boolean, noEvent:Boolean = false):void;
+
+    /**
+     *  @copy mx.core.UIComponent#owns()
+     */
+    function owns(displayObject:DisplayObject):Boolean;
+}
+
+}


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@1262822 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/framework/src/mx/utils/DisplayUtil.as
+++ frameworks/projects/framework/src/mx/utils/DisplayUtil.as
@@ -1,11 +1,19 @@
 ////////////////////////////////////////////////////////////////////////////////
 //
-//  ADOBE SYSTEMS INCORPORATED
-//  Copyright 2006 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: 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@1284669 13f79535-47bb-0310-9956-ffa450edef68

--- frameworks/projects/spark/src/spark/filters/BlurFilter.as
+++ frameworks/projects/spark/src/spark/filters/BlurFilter.as
@@ -1,3 +1,13 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  ADOBE SYSTEMS INCORPORATED
+//  Copyright 2008 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.filters
 {


Transferred from the Adobe Open Source Subversion Repository

Revision: 5545
Author:   jimurphy@adobe.com
Date:     2009-03-25T19:00:52.330680Z

Log Message:
-----------
1st pass of rename according to the spec http://opensource.adobe.com/wiki/display/flexsdk/Dropping+the+Fx+Prefix

Flex now requires CSS Style declarations to declare @namespace rules and disambiguate between halo and spark components using CSS 3 namespace prefixes on type selectors. At compile time, this namespace information will be used to map type names to qualified ActionScript class names. At runtime, type selectors are matched on qualified ActionScript class name (for example mx.controls.Button rather than just Button). Flex 3 applications must be compiled with -compatibility-version=3.0.0 to get unqualified CSS type selector behavior.

QE: Yes, this build may help in updating test cases to use the new namespaces and class names.
Dev: Not yet
Doc: Not yet

Modified Paths:
--------------
748 paths were modified

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

--- frameworks/projects/spark/src/spark/filters/GlowFilter.as
+++ frameworks/projects/spark/src/spark/filters/GlowFilter.as
@@ -1,4 +1,4 @@
-package mx.filters
+package spark.filters
 {
 import flash.filters.BitmapFilter;
 import flash.filters.GlowFilter;


Transferred from the Adobe Open Source Subversion Repository

Revision: 6306
Author:   egeorgie@adobe.com
Date:     2009-04-28T01:17:42.359155Z

Log Message:
-----------
Layout PARB changes - rename "layout" package to "layouts"

QE Notes: None
Doc Notes: None
Bugs: None
Reviewer:
tests: checkintests

Modified Paths:
--------------
<path kind="dir" action="D">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/DataGroup.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/BasicLayout.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/BasicLayout.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LayoutElementHelper.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutElementHelper.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/Group.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/RowAlign.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/RowAlign.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/Block.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/Block.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/VerticalAlign.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalAlign.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LinearLayoutVector.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ButtonBarHorizontalLayout.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/HorizontalLayout.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalLayout.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableDataContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/HGroup.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/TileLayout.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileLayout.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/RichEditableText2.as</path>
<path kind="dir" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/SkinnableContainer.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/List.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/ScrollerLayout.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/supportClasses/LayoutBase.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/HorizontalAlign.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/HorizontalAlign.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/supportClasses/GroupBase.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/components/VGroup.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/VerticalLayout.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/VerticalLayout.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/ColumnAlign.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/ColumnAlign.as</path>
<path kind="file" copyfrom-path="/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layout/TileOrientation.as" copyfrom-rev="6301" action="A">/flex/sdk/trunk/frameworks/projects/flex4/src/spark/layouts/TileOrientation.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/TileLayout.as
+++ frameworks/projects/spark/src/spark/layouts/TileLayout.as
@@ -9,19 +9,19 @@
 //
 ////////////////////////////////////////////////////////////////////////////////

-package spark.layout
+package spark.layouts
 {
 import flash.geom.Rectangle;

 import spark.components.supportClasses.GroupBase;
 import mx.core.ILayoutElement;
 import mx.events.PropertyChangeEvent;
-import spark.layout.HorizontalAlign;
-import spark.layout.supportClasses.LayoutBase;
-import spark.layout.ColumnAlign;
-import spark.layout.RowAlign;
-import spark.layout.TileOrientation;
-import spark.layout.VerticalAlign;
+import spark.layouts.HorizontalAlign;
+import spark.layouts.supportClasses.LayoutBase;
+import spark.layouts.ColumnAlign;
+import spark.layouts.RowAlign;
+import spark.layouts.TileOrientation;
+import spark.layouts.VerticalAlign;

 /**
  *  TileLayout arranges the layout elements in columns and rows


Transferred from the Adobe Open Source Subversion Repository

Revision: 19127
Author:   aharui@adobe.com
Date:     2010-12-08T00:17:29.798813Z

Log Message:
-----------
Reset minorSize only in certain situations to prevent looping bug.

QE notes: none
Doc notes: none
Bugs: SDK-28585
Reviewer: Hans, Evtim
Tests run: checkintests mustella full run
Is noteworthy for integration: no

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LayoutBase.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/HorizontalLayout.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/hero_private/frameworks/projects/spark/src/spark/layouts/VerticalLayout.as</path>

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

--- frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as
+++ frameworks/projects/spark/src/spark/layouts/supportClasses/LinearLayoutVector.as
@@ -93,6 +93,9 @@
     // What the length will be after any pending changes are flushed.
     private var pendingLength:int = -1;

+    // true if minorSize was set in cacheDimensions from the layoutBounds minor dimension
+    public var minorSizeBasedOnLayoutSize:Boolean;
+
     public function LinearLayoutVector(majorAxis:uint = VERTICAL)
     {
         super();
@@ -265,6 +268,7 @@
     public function set minorSize(value:Number):void
     {
         _minorSize = value;
+        minorSizeBasedOnLayoutSize = false;
     }

     //----------------------------------
@@ -1061,7 +1065,10 @@
         if (majorAxis == VERTICAL)
         {
             setMajorSize(index, elt.getLayoutBoundsHeight());
-            var w:Number = Math.min(elt.getPreferredBoundsWidth(), elt.getLayoutBoundsWidth());
+            var lw:Number = elt.getLayoutBoundsWidth();
+            var w:Number = Math.min(elt.getPreferredBoundsWidth(), lw);
+            if (lw == w)
+                minorSizeBasedOnLayoutSize = true;

             // Use the _minorSize instead of the getter, since the getter returns maximum
             // of _minorSize and _defaultMinorSize.
@@ -1070,9 +1077,12 @@
         }
         else
         {
-            setMajorSize(index, elt.getLayoutBoundsWidth());
-            var h:Number = Math.min(elt.getPreferredBoundsHeight(), elt.getLayoutBoundsHeight());
-
+            setMajorSize(index, elt.getLayoutBoundsWidth());
+            var lh:Number = elt.getLayoutBoundsHeight();
+            var h:Number = Math.min(elt.getPreferredBoundsHeight(), lh);
+            if (lh == h)
+                minorSizeBasedOnLayoutSize = true;
+
             // Use the _minorSize instead of the getter, since the getter returns maximum
             // of _minorSize and _defaultMinorSize.
             _minorSize = Math.max(_minorSize, h);


Transferred from the Adobe Open Source Subversion Repository

Revision: 22057
Author:   cframpto@adobe.com
Date:     2011-08-17T19:23:31.306738Z

Log Message:
-----------
Last batch of ASdoc edits for StageText.

QE notes:
Doc notes: Matt review TextArea/TextInput/SkinnableTextBase and StyleableStageText particularly the intros and the styles (had to change the format again).
Bugs: SDK-31078, SDK-31205, SDK-31109, SDK-31015
Reviewer:
Tests run:
Is noteworthy for integration:

Modified Paths:
--------------
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/mobilecomponents/src/spark/components/supportClasses/StyleableStageText.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/styles/metadata/BasicInheritingTextStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/TextArea.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/styles/metadata/AdvancedInheritingTextStyles.as</path>
<path kind="file" action="M">/private/flex/sdk/branches/4.y/frameworks/projects/spark/src/spark/components/supportClasses/SkinnableTextBase.as</path>

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

--- frameworks/projects/spark/src/spark/styles/metadata/BasicInheritingTextStyles.as
+++ frameworks/projects/spark/src/spark/styles/metadata/BasicInheritingTextStyles.as
@@ -66,11 +66,14 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.color.

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style color.

+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style color,
+ *  and if using StyleableStageText,
+ *  see spark.components.supportClasses.StyleableStageText Style color.

  *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#color
  *  @see spark.components.supportClasses.StyleableTextField#style:color
+ *  @see spark.components.supportClasses.StyleableStageText#style:color
  *
  *  @default 0x000000
  *
@@ -156,13 +159,16 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.fontFamily.

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style fontFamily.

+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style fontFamily,
+ *  and if using StyleableStageText,
+ *  see spark.components.supportClasses.StyleableStageText Style fontFamily.

  *
  *
The default value for the Spark theme is Arial.
  *  The default value for the Mobile theme is _sans.

  *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#fontFamily
+ *  @see spark.components.supportClasses.StyleableStageText#style:fontFamily
  *  @see spark.components.supportClasses.StyleableTextField#style:fontFamily
  *
  *  @langversion 3.0
@@ -195,13 +201,16 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.fontSize

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style fontSize

+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style fontSize,
+ *  and if using StyleableStageText,
+ *  see spark.components.supportClasses.StyleableStageText Style fontSize.

  *
  *
The default value for the Spark theme is 12.
  *  The default value for the Mobile theme is 24.

  *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#fontSize
+ *  @see spark.components.supportClasses.StyleableStageText#style:fontSize
  *  @see spark.components.supportClasses.StyleableTextField#style:fontSize
  *
  *  @langversion 3.0
@@ -217,10 +226,13 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.fontStyle

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style fontStyle

- *
+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style fontStyle,
+ *  and if using StyleableStageText,
+ *  see spark.components.supportClasses.StyleableStageText Style fontStyle.

+ *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#fontStyle
+ *  @see spark.components.supportClasses.StyleableStageText#style:fontStyle
  *  @see spark.components.supportClasses.StyleableTextField#style:fontStyle
  *
  *  @langversion 3.0
@@ -236,10 +248,13 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.fontWeight

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style fontWeight

- *
+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style fontWeight,
+ *  and if using StyleableStageText,
+ *  see spark.components.supportClasses.StyleableStageText Style fontWeight.

+ *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#fontWeight
+ *  @see spark.components.supportClasses.StyleableStageText#style:fontWeight
  *  @see spark.components.supportClasses.StyleableTextField#style:fontWeight
  *
  *  @langversion 3.0
@@ -309,8 +324,9 @@
  *
  *
For the Spark theme, this is not supported.  See lineHeight.

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField.leading.

+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableStageText Style fontWeight
+ *  and if using StyleableStageText, this is not supported.

  *
  *  @see spark.components.supportClasses.StyleableTextField#style:leading
  *  @see #style:lineHeight
@@ -328,9 +344,10 @@
  *
For the Spark theme, this is not supported.  See trackingLeft
  *  and trackingRight.

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField.letterSpacing.

- *
+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField.letterSpacing
+ *  and if using StyleableStageText, this is not supported.

+ *
  *  @see spark.components.supportClasses.StyleableTextField#style:letterSpacing
  *  @see #style:trackingLeft
  *  @see #style:trackingRight
@@ -395,14 +412,23 @@
 [Style(name="lineThrough", type="Boolean", inherit="yes")]

 /**
- * The locale of the text. Controls case transformations and shaping. Uses standard locale identifiers as described in Unicode Technical Standard #35. For example "en", "en_US" and "en-US" are all English, "ja" is Japanese.
- *
- *
The default value is undefined. This property inherits its value from an ancestor; if still undefined, it inherits from the global locale style.
- * During the application initialization, if the global locale style is undefined, then the default value is set to "en".

- *
- *
When using the Spark formatters and globalization classes, you can set this style on the root application to the value of the LocaleID.DEFAULT constant.
- * Those classes will then use the client operating system's international preferences.

- *
+ *  The locale of the text.
+ *  Controls case transformations and shaping.
+ *  Uses standard locale identifiers as described in Unicode Technical Standard #35.
+ *  For example "en", "en_US" and "en-US" are all English, "ja" is Japanese.
+ *
+ *
The default value is undefined. This property inherits its value from an ancestor; if
+ *  still undefined, it inherits from the global locale style.
+ *  During the application initialization, if the global locale style is undefined,
+ *  then the default value is set to "en".

+ *
+ *
When using the Spark formatters and globalization classes, you can set this style on the
+ *  root application to the value of the LocaleID.DEFAULT constant.
+ *  Those classes will then use the client operating system's international preferences.

+ *
+ *  @default undefined
+ *  @see http://www.unicode.org/reports/tr35/
+ *
  *  @langversion 3.0
  *  @playerversion Flash 10
  *  @playerversion AIR 1.5
@@ -433,10 +459,13 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.textAlign

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style textAlign

- *
+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style textAlign,
+ *  and if using StyleableStageText,
+ *  see spark.components.supportClasses.StyleableStageText Style textAlign.

+ *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#textAlign
+ *  @see spark.components.supportClasses.StyleableStageText#style:textAlign
  *  @see spark.components.supportClasses.StyleableTextField#style:textAlign
  *
  *  @langversion 3.0
@@ -486,8 +515,9 @@
  *
For the Spark theme, see
  *  flashx.textLayout.formats.ITextLayoutFormat.textDecoration

  *
- *
For the Mobile theme, see
- *  spark.components.supportClasses.StyleableTextField Style textDecoration

+ *
For the Mobile theme, if using StyleableTextField,
+ *  see spark.components.supportClasses.StyleableTextField Style textDecoration,
+ *  and if using StyleableStageText, this is not supported.

  *
  *  @see flashx.textLayout.formats.ITextLayoutFormat#textDecoration
  *  @see spark.components.supportClasses.StyleableTextField#style:textDecoration


fixed cast to Extract type error in RemoveExtractVisitor (issue #356)

--- src/aerys/minko/render/shader/compiler/graph/visitors/RemoveExtractsVisitor.as
+++ src/aerys/minko/render/shader/compiler/graph/visitors/RemoveExtractsVisitor.as
@@ -50,11 +50,14 @@
 			var numKills : uint = _shaderGraph.kills.length;
 			for (var killId : uint = 0; killId < numKills; ++killId)
 			{
-				extract = Extract(_shaderGraph.color);
+				while (_shaderGraph.kills[killId] is Extract)
+				{
+					extract = Extract(_shaderGraph.kills[killId]);

-				_shaderGraph.kills[killId] = extract.child;
-				_shaderGraph.killComponents[killId] =
-					Components.applyCombination(_shaderGraph.killComponents[killId], extract.components);
+					_shaderGraph.kills[killId] = extract.child;
+					_shaderGraph.killComponents[killId] =
+						Components.applyCombination(_shaderGraph.killComponents[killId], extract.components);
+				}
 			}
 		}


Transferred from the Adobe Open Source Subversion Repository

Revision: 10138
Author:   jszeto@adobe.com
Date:     2009-09-10T23:51:52.799846Z

Log Message:
-----------
Adding alpha to BitmapFill

http://bugs.adobe.com/jira/browse/SDK-22932 - Border's backgroundAlpha style has no effect when backgroundImage is set

I have added an alpha property to BitmapFill. Since graphics.beginBitmapFill doesn’t have an alpha parameter, I have to clone the bitmapData source and apply to it a colorTransform (which contains the alphaMultipler).

If the source image doesn't support an alpha channel (ex. JPEG), then I need to copy the source into a new bitmapData object that supports transparency. This occurs one time in the source setter.

If the alpha or source has changed, then I need to copy the source into a new bitmapData. The reason is that using the BitmapData.colorTransform function is cumulative. Once I've applied an alphaMultiplier to it, there is no way to restore the alpha. I've optimized the code a bit to only copy the bitmapData if needed. For example, if we have already copied the data to add the transparent pixel border (to prevent the streaking effect on a non-repeating fill), then we forgo the copying.

QE notes: Need new tests for this property
Doc notes: Need docs for this property
Bugs: SDK-22932
Reviewer: Ryan
Tests run: checkintests
Is noteworthy for integration: Yes

Modified Paths:
--------------
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/framework/src/mx/graphics/BitmapFill.as</path>
<path kind="file" action="M">/flex/sdk/trunk/frameworks/projects/spark/src/spark/skins/spark/BorderSkin.as</path>

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

--- frameworks/projects/spark/src/spark/skins/spark/BorderContainerSkin.as
+++ frameworks/projects/spark/src/spark/skins/spark/BorderContainerSkin.as
@@ -190,6 +190,7 @@

                 bitmapFill.source = bgImage;
                 bitmapFill.resizeMode = getStyle("backgroundImageResizeMode");
+                bitmapFill.alpha = getStyle("backgroundAlpha");

                 bgRect.fill = bitmapFill;
             }


Transferred from the Adobe Open Source Subversion Repository

Revision: 20362
Author:   rfrishbe@adobe.com
Date:     2011-02-17T22:52:02.997065Z

Log Message:
-----------
Fixing up some old documentation for LabelItemRenderer's drawBackground() method.  Also adding some @version info for some protected properties.

QE notes: -
Doc notes:
Bugs: SDK-29563
Reviewer: Chiedo
Tests run: -
Is noteworthy for integration: No

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

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

--- frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
+++ frameworks/projects/mobilecomponents/src/spark/components/LabelItemRenderer.as
@@ -407,6 +407,10 @@
      *  Set to true when the user is pressing down on an item renderer.
      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     protected function get down():Boolean
     {
@@ -438,6 +442,10 @@
      *  Set to true when the user is hovered over the item renderer.
      *
      *  @default false
+     *
+     *  @langversion 3.0
+     *  @playerversion AIR 2.5
+     *  @productversion Flex 4.5
      */
     protected function get hovered():Boolean
     {
@@ -788,10 +796,10 @@
      *  by the updateDisplayList() method.

      *
      *
This method draws the background, the outline,
-     *  and the separators for this item renderer.
-     *  When not selected, hovered, or down, the background is transparent.
-     *  However, when alternatingItemColors is set to true,
-     *  the background is drawn by this method.
+     *  and the separators for this item renderer.  It knows how to appropriately
+     *  handle the selected, down, or caretted states.
+     *  However, when alternatingItemColors is set to undefined,
+     *  the default background is transparent.
      *  Override this method to change the appearance of the background of
      *  the item renderer.

      *


Transferred from the Adobe Open Source Subversion Repository

Revision: 12850
Author:   jimurphy@adobe.com
Date:     2009-12-11T14:57:14.623098Z

Log Message:
-----------
add 6 new DMV projects to the SDK:
automation
automation_air
automation_dmv
automation_flashflexkit
automation_spark
datavisualization

These projects are setup to build in an ant main call.  There are currently several warnings in the datavisualization project that will be cleaned up.  No checkintests exist for these projects as of yet.

I also modified the exisitng projects build files for easier management of the localization targets, bundle and fat-swc. If the projects that I updated:airframework,airspark,framework,playerglobal,rpc,and spark.  All the new projects have been implemented this same way.

QE notes: DMV folks should run through their tests
Doc notes: probably
Bugs: nope
Reviewer:
Tests run: ran the following targets: compile,checkintests,other.locales and doc
Is noteworthy for integration: no

Modified Paths:
--------------
1404 paths were modified

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

--- frameworks/projects/advancedgrids/src/mx/olap/aggregators/AverageAggregator.as
+++ frameworks/projects/advancedgrids/src/mx/olap/aggregators/AverageAggregator.as
@@ -0,0 +1,145 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.olap.aggregators
+{
+import mx.olap.IOLAPCustomAggregator;
+
+/**
+ *  The AverageAggregator class  implements the average aggregator.
+ *  The average aggregator returns the average value of the measures.
+ *  Flex uses this aggregator when you set the OLAPMeasure.aggregator property
+ *  to "AVG".
+ *
+ *  @see mx.olap.OLAPMeasure
+ *
+ *  @langversion 3.0
+ *  @playerversion Flash 9
+ *  @playerversion AIR 1.1
+ *  @productversion Flex 3
+ */
+public class AverageAggregator implements IOLAPCustomAggregator
+{
+	//--------------------------------------------------------------------------
+    //
+    // Methods
+    //
+    //--------------------------------------------------------------------------
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function computeBegin(dataField:String):Object
+    {
+    	//to start initialize the sum and count fields to zero.
+        var newObj:Object = {};
+        newObj[dataField] = 0;
+        newObj[dataField + "Count"] = 0;
+        return newObj;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function computeLoop(data:Object, dataField:String, rowData:Object):void
+    {
+    	var value:Number = rowData[dataField];
+    	if (typeof(value) == "xml")
+			value = Number(value.toString());
+
+        if (!data.hasOwnProperty(dataField))
+        {
+            data[dataField] = value;
+            data[dataField + "Count"] = 1;
+        }
+        else
+        {
+            data[dataField] += value;
+            data[dataField + "Count"] = data[dataField + "Count"] + 1;
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function computeEnd(data:Object, dataField:String):Number
+    {
+        return data[dataField]/data[dataField + "Count"];
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function computeObjectBegin(value:Object):Object
+    {
+    	//start accumulating the sum and count values into
+    	//separate properties
+        var newObj:Object = {};
+        for (var p:String in value)
+        {
+            newObj[p] = value[p];
+        }
+        return newObj;
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function computeObjectLoop(oldValue:Object, newValue:Object):void
+    {
+    	//add sum to sum and count to count
+        for (var p:String in newValue)
+        {
+            oldValue[p] += newValue[p];
+        }
+    }
+
+    /**
+     *  @inheritDoc
+     *
+     *  @langversion 3.0
+     *  @playerversion Flash 9
+     *  @playerversion AIR 1.1
+     *  @productversion Flex 3
+     */
+    public function computeObjectEnd(oldValue:Object, dataField:String):Number
+    {
+    	//divide the total sum by the total count to get the avg value
+        return oldValue[dataField]/oldValue[dataField + "Count"];;
+    }
+}
+}