Updated Branches:
  refs/heads/develop 9084f8164 -> ec1ac280b

FLEX-33526: Added the findRowIndices method to allow array values.


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

Branch: refs/heads/develop
Commit: ec1ac280b7f0124169fd4efe82191bd170c7ae7c
Parents: 9084f81
Author: Mark Kessler <kesslerconsult...@gmail.com>
Authored: Sat Apr 27 21:58:40 2013 -0400
Committer: Mark Kessler <kesslerconsult...@gmail.com>
Committed: Sat Apr 27 21:59:58 2013 -0400

----------------------------------------------------------------------
 .../spark/src/spark/components/DataGrid.as         |   21 +++++
 .../projects/spark/src/spark/components/Grid.as    |   60 +++++++++++++++
 .../supportClasses/IDataProviderEnhance.as         |   11 +++
 .../spark/components/supportClasses/ListBase.as    |   60 +++++++++++++++
 4 files changed, 152 insertions(+), 0 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ec1ac280/frameworks/projects/spark/src/spark/components/DataGrid.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/DataGrid.as 
b/frameworks/projects/spark/src/spark/components/DataGrid.as
index 85e4b43..933935c 100644
--- a/frameworks/projects/spark/src/spark/components/DataGrid.as
+++ b/frameworks/projects/spark/src/spark/components/DataGrid.as
@@ -3983,6 +3983,27 @@ public class DataGrid extends SkinnableContainerBase
 
 
     /**
+    *  @copy spark.components.Grid#findRowIndices()
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 11.1
+    *  @playerversion AIR 3.4
+    *  @productversion Flex 4.10
+    */
+    public function findRowIndices(field:String, values:Array, 
patternType:String = RegExPatterns.EXACT):Array
+    {
+        if (grid)
+        {
+            return grid.findRowIndices(field, values, patternType);
+        }
+        else
+        {
+            return [];
+        }
+    }
+
+
+    /**
      *  @copy spark.components.Grid#invalidateCell()
      *  
      *  @langversion 3.0

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ec1ac280/frameworks/projects/spark/src/spark/components/Grid.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/spark/src/spark/components/Grid.as 
b/frameworks/projects/spark/src/spark/components/Grid.as
index 94a16fe..be40673 100644
--- a/frameworks/projects/spark/src/spark/components/Grid.as
+++ b/frameworks/projects/spark/src/spark/components/Grid.as
@@ -4809,6 +4809,66 @@ public class Grid extends Group implements 
IDataGridElement, IDataProviderEnhanc
 
 
     /**
+    *  This will search through a dataprovider checking the given field and 
for the given values and return an array of indices that matched.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 11.1
+    *  @playerversion AIR 3.4
+    *  @productversion Flex 4.10
+    */
+    public function findRowIndices(field:String, values:Array, 
patternType:String = RegExPatterns.EXACT):Array
+    {
+        var currentObject:Object = null;
+        var regexList:Array = [];
+        var matchedIndices:Array = [];
+        var dataProviderTotal:uint = 0;
+        var valuesTotal:uint = values.length;
+        var loopingDataProviderIndex:uint = 0;
+        var loopingValuesIndex:uint = 0;
+
+
+        if (dataProvider && dataProvider.length > 0 && valuesTotal > 0)
+        {
+            dataProviderTotal = dataProvider.length;
+
+
+            //Set the regex patterns in an array once.
+            for (loopingValuesIndex = 0; loopingValuesIndex < valuesTotal; 
loopingValuesIndex++)
+            {
+                
regexList.push(RegExPatterns.createRegExp(values[loopingValuesIndex], 
patternType));
+            }
+
+
+            //Loop through dataprovider
+            for (loopingDataProviderIndex; loopingDataProviderIndex < 
dataProviderTotal; loopingDataProviderIndex++)
+            {
+                currentObject = 
dataProvider.getItemAt(loopingDataProviderIndex);
+
+                if (currentObject.hasOwnProperty(field) == false)
+                {
+                    continue;
+                }
+
+                //Loop through regex patterns from the values array.
+                for (loopingValuesIndex = 0; loopingValuesIndex < valuesTotal; 
loopingValuesIndex++)
+                {
+                    if 
(currentObject[field].search(regexList[loopingValuesIndex]) != -1)
+                    {
+                        matchedIndices.push(loopingDataProviderIndex);
+
+                        break;
+                    }
+                }
+            }
+
+        }
+
+
+        return matchedIndices;
+    }
+
+
+    /**
     *  This will search through a dataprovider checking the given field and 
will set the selectedIndex to a matching value.
     *  It can start the search from the startingIndex;
     *

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ec1ac280/frameworks/projects/spark/src/spark/components/supportClasses/IDataProviderEnhance.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/spark/src/spark/components/supportClasses/IDataProviderEnhance.as
 
b/frameworks/projects/spark/src/spark/components/supportClasses/IDataProviderEnhance.as
index 45dba4f..456bdeb 100644
--- 
a/frameworks/projects/spark/src/spark/components/supportClasses/IDataProviderEnhance.as
+++ 
b/frameworks/projects/spark/src/spark/components/supportClasses/IDataProviderEnhance.as
@@ -89,6 +89,17 @@ package spark.components.supportClasses
 
 
         /**
+        *  This will search through a dataprovider checking the given field 
and for the given values and return an array of indexes that matched.
+        *
+        *  @langversion 3.0
+        *  @playerversion Flash 11.1
+        *  @playerversion AIR 3.4
+        *  @productversion Flex 4.10
+        */
+        function findRowIndices(field:String, values:Array, patternType:String 
= RegExPatterns.EXACT):Array;
+
+
+        /**
         *  Changes the selectedIndex to the first row of the dataProvider.
         *
         *  @langversion 3.0

http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/ec1ac280/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as 
b/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
index 37e3233..5f737f4 100644
--- a/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
+++ b/frameworks/projects/spark/src/spark/components/supportClasses/ListBase.as
@@ -1271,6 +1271,66 @@ public class ListBase extends SkinnableDataContainer 
implements IDataProviderEnh
 
 
     /**
+    *  This will search through a dataprovider checking the given field and 
for the given values and return an array of indices that matched.
+    *
+    *  @langversion 3.0
+    *  @playerversion Flash 11.1
+    *  @playerversion AIR 3.4
+    *  @productversion Flex 4.10
+    */
+    public function findRowIndices(field:String, values:Array, 
patternType:String = RegExPatterns.EXACT):Array
+    {
+        var currentObject:Object = null;
+        var regexList:Array = [];
+        var matchedIndices:Array = [];
+        var dataProviderTotal:uint = 0;
+        var valuesTotal:uint = values.length;
+        var loopingDataProviderIndex:uint = 0;
+        var loopingValuesIndex:uint = 0;
+
+
+        if (dataProvider && dataProvider.length > 0 && valuesTotal > 0)
+        {
+            dataProviderTotal = dataProvider.length;
+
+
+            //Set the regex patterns in an array once.
+            for (loopingValuesIndex = 0; loopingValuesIndex < valuesTotal; 
loopingValuesIndex++)
+            {
+                
regexList.push(RegExPatterns.createRegExp(values[loopingValuesIndex], 
patternType));
+            }
+
+
+            //Loop through dataprovider
+            for (loopingDataProviderIndex; loopingDataProviderIndex < 
dataProviderTotal; loopingDataProviderIndex++)
+            {
+                currentObject = 
dataProvider.getItemAt(loopingDataProviderIndex);
+
+                if (currentObject.hasOwnProperty(field) == false)
+                {
+                    continue;
+                }
+
+                //Loop through regex patterns from the values array.
+                for (loopingValuesIndex = 0; loopingValuesIndex < valuesTotal; 
loopingValuesIndex++)
+                {
+                    if 
(currentObject[field].search(regexList[loopingValuesIndex]) != -1)
+                    {
+                        matchedIndices.push(loopingDataProviderIndex);
+
+                        break;
+                    }
+                }
+            }
+
+        }
+
+
+        return matchedIndices;
+    }
+
+
+    /**
      *  Called when an item is selected or deselected. 
      *  Subclasses must override this method to display the selection.
      *

Reply via email to