You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by mi...@apache.org on 2015/06/21 23:16:04 UTC

[6/6] git commit: [flex-sdk] [refs/heads/develop] - FLEX-34854 spark.collections.Sort.sort() was very similar to mx.collections.Sort.sort(), with the only difference in the fact that the latter tried to use Array.sortOn when appropriate. So, to remove th

FLEX-34854
spark.collections.Sort.sort() was very similar to mx.collections.Sort.sort(), with the only difference in the fact that the latter tried to use Array.sortOn when appropriate. So, to remove the duplication I introduced a new flag to the mx version called useSortOn, which the spark version defaults to false. This way I could completely remove spark.collections.Sort.sort() and reset a few members of the mx version as private, as before.


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

Branch: refs/heads/develop
Commit: ece249f87ce2b9c605b4222ce65c4f8e754697b3
Parents: 3aacd76
Author: Mihai Chira <mi...@apache.org>
Authored: Sun Jun 21 21:29:42 2015 +0100
Committer: Mihai Chira <mi...@apache.org>
Committed: Sun Jun 21 21:29:42 2015 +0100

----------------------------------------------------------------------
 .../framework/src/mx/collections/Sort.as        | 21 +++--
 .../spark/src/spark/collections/Sort.as         | 94 +-------------------
 2 files changed, 18 insertions(+), 97 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ece249f8/frameworks/projects/framework/src/mx/collections/Sort.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/framework/src/mx/collections/Sort.as b/frameworks/projects/framework/src/mx/collections/Sort.as
index 02cb41e..6348691 100644
--- a/frameworks/projects/framework/src/mx/collections/Sort.as
+++ b/frameworks/projects/framework/src/mx/collections/Sort.as
@@ -24,10 +24,13 @@ package mx.collections
     import flash.events.EventDispatcher;
 
     import mx.collections.errors.SortError;
+    import mx.core.mx_internal;
     import mx.resources.IResourceManager;
     import mx.resources.ResourceManager;
     import mx.utils.ObjectUtil;
 
+    use namespace mx_internal;
+
     [DefaultProperty("fields")]
 [ResourceBundle("collections")]
 [Alternative(replacement="spark.collections.Sort", since="4.5")]
@@ -211,9 +214,15 @@ public class Sort extends EventDispatcher implements ISort
      *  @private
      *  Used for accessing localized Error messages.
      */
-    protected var resourceManager:IResourceManager =
+    private var resourceManager:IResourceManager =
                                     ResourceManager.getInstance();
 
+    /**
+     *  @private
+     *  True if we should attempt to use Array.sortOn when possible.
+     */
+    mx_internal var useSortOn:Boolean = true;
+
     //--------------------------------------------------------------------------
     //
     //  Properties
@@ -233,7 +242,7 @@ public class Sort extends EventDispatcher implements ISort
     /**
      *  @private
      */
-    protected var usingCustomCompareFunction:Boolean;
+    private var usingCustomCompareFunction:Boolean;
 
     [Inspectable(category="General")]
 
@@ -655,7 +664,7 @@ public class Sort extends EventDispatcher implements ISort
                 if (unique)
                 {
                     var uniqueRet2:Object;
-                    if (sortArgs && fields.length == 1)
+                    if (useSortOn && sortArgs && fields.length == 1)
                     {
                         uniqueRet2 = items.sortOn(sortArgs.fields[0], sortArgs.options[0] | Array.UNIQUESORT);
                     }
@@ -672,7 +681,7 @@ public class Sort extends EventDispatcher implements ISort
                 }
                 else
                 {
-                    if (sortArgs)
+                    if (useSortOn && sortArgs)
                     {
                         items.sortOn(sortArgs.fields, sortArgs.options);
                     }
@@ -699,7 +708,7 @@ public class Sort extends EventDispatcher implements ISort
      *  @private
      *  Make sure all SortFields are ready to execute their comparators.
      */
-    protected function initSortFields(item:Object, buildArraySortArgs:Boolean = false):Object
+    private function initSortFields(item:Object, buildArraySortArgs:Boolean = false):Object
     {
         var arraySortArgs:Object = null;
         var i:int;
@@ -736,7 +745,7 @@ public class Sort extends EventDispatcher implements ISort
      *  number of fields to check.  We don't look at the actual values
      *  to see if they match the actual sort.
      */
-    protected function internalCompare(a:Object, b:Object, fields:Array = null):int
+    private function internalCompare(a:Object, b:Object, fields:Array = null):int
     {
         var result:int = 0;
         if (!_fields)

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ece249f8/frameworks/projects/spark/src/spark/collections/Sort.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/collections/Sort.as b/frameworks/projects/spark/src/spark/collections/Sort.as
index e0f1447..912e2dd 100644
--- a/frameworks/projects/spark/src/spark/collections/Sort.as
+++ b/frameworks/projects/spark/src/spark/collections/Sort.as
@@ -21,6 +21,8 @@ package spark.collections
 {
 
     import flash.events.Event;
+
+    import mx.core.mx_internal;
     import mx.styles.IAdvancedStyleClient;
     import mx.collections.ISortField;
     import mx.collections.errors.SortError;
@@ -254,6 +256,7 @@ public class Sort extends mx.collections.Sort implements IAdvancedStyleClient
     public function Sort(fields:Array = null, customCompareFunction:Function = null, unique:Boolean = false)
     {
         super(fields, customCompareFunction, unique);
+        mx_internal::useSortOn = false;
     }
 
     //--------------------------------------------------------------------------
@@ -352,97 +355,6 @@ public class Sort extends mx.collections.Sort implements IAdvancedStyleClient
         _advancedStyleClient.styleChanged(styleProp);
     }
 
-
-    //--------------------------------------------------------------------------
-    //
-    //  Methods
-    //
-    //--------------------------------------------------------------------------
-
-    /**
-     *  @inheritDoc
-     *
-     *  @langversion 3.0
-     *  @playerversion Flash 10.1
-     *  @playerversion AIR 2.5
-     *  @productversion Flex 4.5
-     */
-    override public function sort(items:Array):void
-    {
-        if (!items || items.length <= 1)
-        {
-            return;
-        }
-
-        if (usingCustomCompareFunction)
-        {
-            // bug 185872
-            // the Sort.internalCompare function knows to use Sort._fields; that same logic
-            // needs to be part of calling a custom compareFunction. Of course, a user shouldn't
-            // be doing this -- so I wrap calls to compareFunction with _fields as the last parameter
-            const fixedCompareFunction:Function =
-                function (a:Object, b:Object):int
-                {
-                    // append our fields to the call, since items.sort() won't
-                    return compareFunction(a, b, fields);
-                };
-
-            var message:String;
-
-            if (unique)
-            {
-                var uniqueRet1:Object = items.sort(fixedCompareFunction, Array.UNIQUESORT);
-                if (uniqueRet1 == 0)
-                {
-                    message = resourceManager.getString(
-                        "collections", "nonUnique");
-                    throw new SortError(message);
-                }
-            }
-            else
-            {
-                items.sort(fixedCompareFunction);
-            }
-        }
-        else
-        {
-            if (fields && fields.length > 0)
-            {
-                //doing the init value each time may be a little inefficient
-                //but allows for the data to change and the comparators
-                //to update correctly
-                //the sortArgs is an object that if non-null means
-                //we can use Array.sortOn which will be much faster
-                //than going through internalCompare.  However
-                //if the Sort is supposed to be unique and fields.length > 1
-                //we cannot use sortOn since it only tests uniqueness
-                //on the first field
-                initSortFields(items[0], true);
-
-                if (unique)
-                {
-                    var uniqueRet2:Object;
-                    uniqueRet2 = items.sort(internalCompare,
-                                            Array.UNIQUESORT);
-                    if (uniqueRet2 == 0)
-                    {
-                        message = resourceManager.getString(
-                            "collections", "nonUnique");
-                        throw new SortError(message);
-                    }
-                }
-                else
-                {
-                    items.sort(internalCompare);
-                }
-            }
-            else
-            {
-                items.sort(internalCompare);
-            }
-        }
-    }
-
     //--------------------------------------------------------------------------
     //
     //  Private Methods