flex-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ryan Frishberg <fri...@gmail.com>
Subject Re: svn commit: r1234229 [4/4] - in /incubator/flex/whiteboard/frishy: ./ FastGroupingCollection/ FastGroupingCollection/.settings/ FastGroupingCollection/libs/ FastGroupingCollection/src/ FastGroupingCollection/src/com/ FastGroupingCollection/src/co
Date Sat, 21 Jan 2012 01:51:32 GMT
Errr, will be changing that :-)

-Ryan

On Sat, Jan 21, 2012 at 1:44 AM, Alex Harui <aharui@adobe.com> wrote:

> Adobe header?
>
>
> On 1/20/12 5:33 PM, "frishy@apache.org" <frishy@apache.org> wrote:
>
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/PriorityQueue.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> > ection/src/com/frishy/collections/PriorityQueue.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/PriorityQueue.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/PriorityQueue.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,284 @@
> >
> +////////////////////////////////////////////////////////////////////////////
> > ///
> > +//
> > +//  ADOBE SYSTEMS INCORPORATED
> > +//  Copyright 2003-2006 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 com.frishy.collections
> > +{
> > +
> > +    import flash.display.DisplayObject;
> > +    import flash.display.DisplayObjectContainer;
> > +    import flash.utils.Dictionary;
> > +
> > +
> > +    /**
> > +     *  The PriorityQueue class mx.managrs.layoutClasses.PriorityQueue,
> but
> > it has been
> > +     *  made slightly more general purpose so that it can hold
> > non-ILayoutManagerClients,
> > +     *  removeSmallestChild() and removeLargestChild() have been axed,
> and
> > +     *  so that it can return the current largest or smallest priority
> number
> > +     */
> > +    public class PriorityQueue
> > +    {
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Constructor
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  Constructor.
> > +         */
> > +        public function PriorityQueue()
> > +        {
> > +            super();
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Variables
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        private var priorityBins:Array = [];
> > +
> > +        /**
> > +         *  @private
> > +         *  Thesmallest occupied index in arrayOfDictionaries.
> > +         */
> > +        private var minPriority:int = 0;
> > +
> > +        /**
> > +         *  @private
> > +         *  The largest occupied index in arrayOfDictionaries.
> > +         */
> > +        private var maxPriority:int = -1;
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Methods
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function addObject(obj:Object, priority:int):void
> > +        {
> > +            // Update our min and max priorities.
> > +            if (maxPriority < minPriority)
> > +            {
> > +                minPriority = maxPriority = priority;
> > +            }
> > +            else
> > +            {
> > +                if (priority < minPriority)
> > +                    minPriority = priority;
> > +                if (priority > maxPriority)
> > +                    maxPriority = priority;
> > +            }
> > +
> > +            var bin:PriorityBin = priorityBins[priority];
> > +
> > +            if (!bin)
> > +            {
> > +                // If no hash exists for the specified priority, create
> one.
> > +                bin = new PriorityBin();
> > +                priorityBins[priority] = bin;
> > +                bin.items[obj] = true;
> > +                bin.length++;
> > +            }
> > +            else
> > +            {
> > +                // If we don't already hold the obj in the specified
> hash,
> > add it
> > +                // and update our item count.
> > +                if (bin.items[obj] == null)
> > +                {
> > +                    bin.items[obj] = true;
> > +                    bin.length++;
> > +                }
> > +            }
> > +
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function removeLargest():Object
> > +        {
> > +            var obj:Object = null;
> > +
> > +            if (minPriority <= maxPriority)
> > +            {
> > +                var bin:PriorityBin = priorityBins[maxPriority];
> > +                while (!bin || bin.length == 0)
> > +                {
> > +                    maxPriority--;
> > +                    if (maxPriority < minPriority)
> > +                        return null;
> > +                    bin = priorityBins[maxPriority];
> > +                }
> > +
> > +                // Remove the item with largest priority from our
> priority
> > queue.
> > +                // Must use a for loop here since we're removing a
> specific
> > item
> > +                // from a 'Dictionary' (no means of directly indexing).
> > +                for (var key:Object in bin.items )
> > +                {
> > +                    obj = key;
> > +                    removeItem(key, maxPriority);
> > +                    break;
> > +                }
> > +
> > +                // Update maxPriority if applicable.
> > +                while (!bin || bin.length == 0)
> > +                {
> > +                    maxPriority--;
> > +                    if (maxPriority < minPriority)
> > +                        break;
> > +                    bin = priorityBins[maxPriority];
> > +                }
> > +
> > +            }
> > +
> > +            return obj;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function removeSmallest():Object
> > +        {
> > +            var obj:Object = null;
> > +
> > +            if (minPriority <= maxPriority)
> > +            {
> > +                var bin:PriorityBin = priorityBins[minPriority];
> > +                while (!bin || bin.length == 0)
> > +                {
> > +                    minPriority++;
> > +                    if (minPriority > maxPriority)
> > +                        return null;
> > +                    bin = priorityBins[minPriority];
> > +                }
> > +
> > +                // Remove the item with smallest priority from our
> priority
> > queue.
> > +                // Must use a for loop here since we're removing a
> specific
> > item
> > +                // from a 'Dictionary' (no means of directly indexing).
> > +                for (var key:Object in bin.items )
> > +                {
> > +                    obj = key;
> > +                    removeItem(key, minPriority);
> > +                    break;
> > +                }
> > +
> > +                // Update minPriority if applicable.
> > +                while (!bin || bin.length == 0)
> > +                {
> > +                    minPriority++;
> > +                    if (minPriority > maxPriority)
> > +                        break;
> > +                    bin = priorityBins[minPriority];
> > +                }
> > +            }
> > +
> > +            return obj;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        protected function removeItem(client:Object,
> priority:int):Object
> > +        {
> > +            var bin:PriorityBin = priorityBins[priority];
> > +            if (bin && bin.items[client] != null)
> > +            {
> > +                delete bin.items[client];
> > +                bin.length--;
> > +                return client;
> > +            }
> > +            return null;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function removeAll():void
> > +        {
> > +            priorityBins.length = 0;
> > +            minPriority = 0;
> > +            maxPriority = -1;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function isEmpty():Boolean
> > +        {
> > +            return minPriority > maxPriority;
> > +        }
> > +
> > +        /**
> > +         *  Returns the max priority an item as it or -1 if there is
> none
> > +         */
> > +        public function getMaxPriority():int
> > +        {
> > +            var bin:PriorityBin = priorityBins[maxPriority];
> > +
> > +            // TODO (frishbry): not sure if we need to do this loop
> > +            // since it's done at the end of removeSmallest() and
> > removeLargest()
> > +            // but it's done in the beginning, so perhaps there's a
> reason
> > why it's in there
> > +            while (!bin || bin.length == 0)
> > +            {
> > +                maxPriority--;
> > +                if (maxPriority < minPriority)
> > +                    return -1;
> > +                bin = priorityBins[maxPriority];
> > +            }
> > +
> > +            return maxPriority;
> > +        }
> > +
> > +        /**
> > +         *  Returns the min priority an item as it or -1 if there is
> none
> > +         */
> > +        public function getMinPriority():int
> > +        {
> > +            var bin:PriorityBin = priorityBins[minPriority];
> > +
> > +            // TODO (frishbry): not sure if we need to do this loop
> > +            // since it's done at the end of removeSmallest() and
> > removeLargest()
> > +            // but it's done in the beginning, so perhaps there's a
> reason
> > why it's in there
> > +            while (!bin || bin.length == 0)
> > +            {
> > +                minPriority++;
> > +                if (minPriority > maxPriority)
> > +                    return -1;
> > +                bin = priorityBins[minPriority];
> > +            }
> > +
> > +            return minPriority;
> > +        }
> > +    }
> > +
> > +}
> > +
> > +import flash.utils.Dictionary;
> > +
> > +/**
> > + *  Represents one priority bucket of entries.
> > + *  @private
> > + */
> > +class PriorityBin
> > +{
> > +    public var length:int;
> > +    public var items:Dictionary = new Dictionary();
> > +
> > +}
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/PriorityQueue.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> >
> ection/src/com/frishy/collections/summarycalculators/ReturnArrayOfChildValuesS
> > ummaryCalculator.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as
> (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as Sat
> Jan
> > 21 01:33:26 2012
> > @@ -0,0 +1,133 @@
> > +package com.frishy.collections.summarycalculators
> > +{
> > +    import com.frishy.collections.CollectionUtil;
> > +    import com.frishy.collections.ISummaryCalculator2;
> > +
> > +    import mx.collections.SummaryField2;
> > +
> > +    /**
> > +     *  Special summary calculator for use in FastGroupingCollection
> that
> > creates an array
> > +     *  of values from the children.  This can be useful if you are
> > implementing the composite
> > +     *  pattern.  If the values are themselves arrays, it will
> > +     *  not create an array of arrays, but instead will create a single
> array
> > out of
> > +     *  those values.  This way, multiple levels will still calculate
> > summaries easily.
> > +     */
> > +    public class ReturnArrayOfChildValuesSummaryCalculator implements
> > ISummaryCalculator2
> > +    {
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        // Class Members
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        private static function addUniqueValuesToArray(newValue:Object,
> > currentValueArray:Array):void
> > +        {
> > +            var newValues:Array = newValue as Array;
> > +
> > +            if (newValues)
> > +            {
> > +                for (var i:int = 0; i < newValues.length; i++)
> > +                {
> > +                    if (currentValueArray.indexOf(newValues[i]) == -1)
> > +                    {
> > +                        currentValueArray.push(newValues[i]);
> > +                    }
> > +                }
> > +            }
> > +            else
> > +            {
> > +                if (currentValueArray.indexOf(newValue) == -1)
> > +                {
> > +                    currentValueArray.push(newValue);
> > +                }
> > +            }
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        // Constructor
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        public function ReturnArrayOfChildValuesSummaryCalculator()
> > +        {
> > +            super();
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        // Methods: ISummaryCalculator
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function
> summaryCalculationBegin(field:SummaryField2):Object
> > +        {
> > +            return {value: []};
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function calculateSummary(data:Object,
> field:SummaryField2,
> > rowData:Object):void
> > +        {
> > +            var newValue:Object =
> CollectionUtil.getDataFieldValue(rowData,
> > field.dataField);
> > +            var currentValueArray:Array = data.value;
> > +
> > +            addUniqueValuesToArray(newValue, currentValueArray)
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummary(data:Object,
> > field:SummaryField2):Number
> > +        {
> > +            return returnSummary2(data, field) as Number;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummary2(data:Object,
> > field:SummaryField2):Object
> > +        {
> > +            return data.value;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function summaryOfSummaryCalculationBegin(value:Object,
> > field:SummaryField2):Object
> > +        {
> > +            return {value: value.value.concat()};
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function calculateSummaryOfSummary(value:Object,
> > newValue:Object, field:SummaryField2):void
> > +        {
> > +            var newValue:Object = newValue.value;
> > +            var currentValueArray:Array = value.value;
> > +
> > +            addUniqueValuesToArray(newValue, currentValueArray);
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummaryOfSummary(value:Object,
> > field:SummaryField2):Number
> > +        {
> > +            return returnSummaryOfSummary2(value, field) as Number;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummaryOfSummary2(value:Object,
> > field:SummaryField2):Object
> > +        {
> > +            return value.value;
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnChildValueSummaryCalculator.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> >
> ection/src/com/frishy/collections/summarycalculators/ReturnChildValueSummaryCa
> > lculator.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnChildValueSummaryCalculator.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnChildValueSummaryCalculator.as Sat Jan 21
> > 01:33:26 2012
> > @@ -0,0 +1,99 @@
> > +package com.frishy.collections.summarycalculators
> > +{
> > +    import com.frishy.collections.CollectionUtil;
> > +    import com.frishy.collections.ISummaryCalculator2;
> > +
> > +    import mx.collections.SummaryField2;
> > +
> > +    /**
> > +     *  Special summary calculator for use in FastGroupingCollection
> that
> > returns
> > +     *  the same value as one of its children.  This is useful if you
> are
> > attempting to
> > +     *  implement the composite pattern and all children have the same
> value
> > for a particular
> > +     *  property.  If children have unique values for the property, this
> > class is not as
> > +     *  as useful, and it may return a random children's value.
> > +     */
> > +    public class ReturnChildValueSummaryCalculator implements
> > ISummaryCalculator2
> > +    {
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        // Constructor
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        public function ReturnChildValueSummaryCalculator()
> > +        {
> > +            super();
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        // Methods: ISummaryCalculator
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function
> summaryCalculationBegin(field:SummaryField2):Object
> > +        {
> > +            return {};
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function calculateSummary(data:Object,
> field:SummaryField2,
> > rowData:Object):void
> > +        {
> > +            data.value = CollectionUtil.getDataFieldValue(rowData,
> > field.dataField);
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummary(data:Object,
> > field:SummaryField2):Number
> > +        {
> > +            return returnSummary2(data, field) as Number;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummary2(data:Object,
> > field:SummaryField2):Object
> > +        {
> > +            return data.value;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function summaryOfSummaryCalculationBegin(value:Object,
> > field:SummaryField2):Object
> > +        {
> > +            return {value: value.value};
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function calculateSummaryOfSummary(value:Object,
> > newValue:Object, field:SummaryField2):void
> > +        {
> > +            value.value = newValue.value;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummaryOfSummary(value:Object,
> > field:SummaryField2):Number
> > +        {
> > +            return returnSummaryOfSummary2(value, field) as Number;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function returnSummaryOfSummary2(value:Object,
> > field:SummaryField2):Object
> > +        {
> > +            return value.value;
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collect
> > ions/summarycalculators/ReturnChildValueSummaryCalculator.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/L
> > ayoutManagerClientHelper.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> >
> ection/src/com/frishy/utils/LayoutManagerClientHelper.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/L
> > ayoutManagerClientHelper.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/L
> > ayoutManagerClientHelper.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,310 @@
> > +package com.frishy.utils
> > +{
> > +    import flash.events.EventDispatcher;
> > +    import flash.events.IEventDispatcher;
> > +
> > +    import mx.core.IInvalidating;
> > +    import mx.core.UIComponentGlobals;
> > +    import mx.core.mx_internal;
> > +    import mx.managers.ILayoutManagerClient;
> > +
> > +    use namespace mx_internal;
> > +
> > +    public class LayoutManagerClientHelper extends EventDispatcher
> > +        implements ILayoutManagerClient, IInvalidating
> > +    {
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Constructor
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  Constructor
> > +         */
> > +        public function
> > LayoutManagerClientHelper(validatePropertiesCallback:Function = null,
> > +
> > validateSizeCallback:Function = null,
> > +
> > validateDisplayListCallback:Function = null)
> > +        {
> > +            super();
> > +
> > +            this.validatePropertiesCallback =
> validatePropertiesCallback;
> > +            this.validateSizeCallback = validateSizeCallback;
> > +            this.validateDisplayListCallback =
> validateDisplayListCallback;
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Variables
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         *  Whether validateProperties() needs to be called
> > +         */
> > +        private var invalidatePropertiesFlag:Boolean = false;
> > +
> > +        /**
> > +         *  @private
> > +         *  Whether validateSize() needs to be called
> > +         */
> > +        private var invalidateSizeFlag:Boolean = false;
> > +
> > +        /**
> > +         *  @private
> > +         *  Whether validateDisplayList() needs to be called
> > +         */
> > +        private var invalidateDisplayListFlag:Boolean = false;
> > +
> > +        /**
> > +         *  Callback for the validateProperties() pass
> > +         */
> > +        public var validatePropertiesCallback:Function;
> > +
> > +        /**
> > +         *  Callback for the validateSize() pass
> > +         */
> > +        public var validateSizeCallback:Function;
> > +
> > +        /**
> > +         *  Callback for the validateDisplayList() pass
> > +         */
> > +        public var validateDisplayListCallback:Function;
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Properties
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        //----------------------------------
> > +        //  needsValidation
> > +        //----------------------------------
> > +
> > +        /**
> > +         *  Whether this object is invalid
> > +         */
> > +        public function get needsValidation():Boolean
> > +        {
> > +            // if any of the flags are invalid, then we need validation
> > +            return (invalidatePropertiesFlag || invalidateSizeFlag ||
> > invalidateDisplayListFlag);
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Properties: ILayoutManagerClient
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        //----------------------------------
> > +        //  initialized
> > +        //----------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         *  Storage for the initialized property.
> > +         */
> > +        private var _initialized:Boolean = false;
> > +
> > +        /**
> > +         *  @copy mx.core.UIComponent#initialized
> > +         */
> > +        public function get initialized():Boolean
> > +        {
> > +            return _initialized;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function set initialized(value:Boolean):void
> > +        {
> > +            _initialized = value;
> > +        }
> > +
> > +        //----------------------------------
> > +        //  nestLevel
> > +        //----------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         *  Storage for the nestLevel property.
> > +         */
> > +        private var _nestLevel:int = 1;
> > +
> > +        // no one will likely set nestLevel (but there's a setter in
> case
> > +        // someone wants to.  We default nestLevel to 1 so it's a
> top-level
> > component
> > +
> > +        /**
> > +         *  @copy mx.core.UIComponent#nestLevel
> > +         */
> > +        public function get nestLevel():int
> > +        {
> > +            return _nestLevel;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function set nestLevel(value:int):void
> > +        {
> > +            _nestLevel = value;
> > +        }
> > +
> > +        //----------------------------------
> > +        //  processedDescriptors
> > +        //----------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         *  Storage for the processedDescriptors property.
> > +         */
> > +        private var _processedDescriptors:Boolean = false;
> > +
> > +        /**
> > +         *  @copy mx.core.UIComponent#processedDescriptors
> > +         */
> > +        public function get processedDescriptors():Boolean
> > +        {
> > +            return _processedDescriptors;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function set processedDescriptors(value:Boolean):void
> > +        {
> > +            _processedDescriptors = value;
> > +        }
> > +
> > +        //----------------------------------
> > +        //  updateCompletePendingFlag
> > +        //----------------------------------
> > +
> > +        /**
> > +         *  @private
> > +         *  Storage for the updateCompletePendingFlag property.
> > +         */
> > +        private var _updateCompletePendingFlag:Boolean = false;
> > +
> > +        /**
> > +         *  A flag that determines if an object has been through all
> three
> > phases
> > +         *  of layout validation (provided that any were required).
> > +         */
> > +        public function get updateCompletePendingFlag():Boolean
> > +        {
> > +            return _updateCompletePendingFlag;
> > +        }
> > +
> > +        /**
> > +         *  @private
> > +         */
> > +        public function set
> updateCompletePendingFlag(value:Boolean):void
> > +        {
> > +            _updateCompletePendingFlag = value;
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Methods: IInvalidating
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @copy mx.core.IInvalidating#invalidateProperties()
> > +         */
> > +        public function invalidateProperties():void
> > +        {
> > +            // Don't try to add the object to the display list queue
> until
> > we've
> > +            // been assigned a nestLevel, or we'll get added at the
> wrong
> > place in
> > +            // the LayoutManager's priority queue.
> > +            if (!invalidatePropertiesFlag && nestLevel > 0)
> > +            {
> > +                invalidatePropertiesFlag = true;
> > +
>  UIComponentGlobals.layoutManager.invalidateProperties(this);
> > +            }
> > +        }
> > +
> > +        /**
> > +         *  @copy mx.core.IInvalidating#invalidateSize()
> > +         */
> > +        public function invalidateSize():void
> > +        {
> > +            // Don't try to add the object to the display list queue
> until
> > we've
> > +            // been assigned a nestLevel, or we'll get added at the
> wrong
> > place in
> > +            // the LayoutManager's priority queue.
> > +            if (!invalidateSizeFlag && nestLevel > 0)
> > +            {
> > +                invalidateSizeFlag = true;
> > +                UIComponentGlobals.layoutManager.invalidateSize(this);
> > +            }
> > +        }
> > +
> > +        /**
> > +         *  @copy mx.core.IInvalidating#invalidateDisplayList()
> > +         */
> > +        public function invalidateDisplayList():void
> > +        {
> > +            // Don't try to add the object to the display list queue
> until
> > we've
> > +            // been assigned a nestLevel, or we'll get added at the
> wrong
> > place in
> > +            // the LayoutManager's priority queue.
> > +            if (!invalidateDisplayListFlag && nestLevel > 0)
> > +            {
> > +                invalidateDisplayListFlag = true;
> > +
>  UIComponentGlobals.layoutManager.invalidateDisplayList(this);
> > +            }
> > +        }
> > +
> > +        /**
> > +         *  @copy mx.core.IInvalidating#validateNow()
> > +         */
> > +        public function validateNow():void
> > +        {
> > +            if (invalidatePropertiesFlag)
> > +                validateProperties();
> > +
> > +            if (invalidateSizeFlag)
> > +                validateSize();
> > +
> > +            if (invalidateDisplayListFlag)
> > +                validateDisplayList();
> > +        }
> > +
> > +
> >
> //--------------------------------------------------------------------------
> > +        //
> > +        //  Methods: Validation
> > +        //
> > +
> >
> //--------------------------------------------------------------------------
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function validateProperties():void
> > +        {
> > +            if (validatePropertiesCallback != null)
> > +                validatePropertiesCallback();
> > +
> > +            invalidatePropertiesFlag = false;
> > +        }
> > +
> > +        /**
> > +         *  @inheritDoc
> > +         */
> > +        public function validateSize(recursive:Boolean=false):void
> > +        {
> > +            if (validateSizeCallback != null)
> > +                validateSizeCallback(recursive);
> > +
> > +            invalidateSizeFlag = false;
> > +        }
> > +
> > +        public function validateDisplayList():void
> > +        {
> > +            if (validateDisplayListCallback != null)
> > +                validateDisplayListCallback();
> > +
> > +            invalidateDisplayListFlag = false;
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/L
> > ayoutManagerClientHelper.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/ChangeWatcherAdvancedDataGridItemRenderer.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> >
> ection/src/fastdatagridhelpers/ChangeWatcherAdvancedDataGridItemRenderer.as?re
> > v=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/ChangeWatcherAdvancedDataGridItemRenderer.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/ChangeWatcherAdvancedDataGridItemRenderer.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,109 @@
> > +package fastdatagridhelpers
> > +{
> > +    import flash.events.Event;
> > +
> > +    import mx.binding.utils.ChangeWatcher;
> > +    import
> mx.controls.advancedDataGridClasses.AdvancedDataGridItemRenderer;
> > +    import mx.controls.advancedDataGridClasses.AdvancedDataGridListData;
> > +    import mx.core.UIComponentGlobals;
> > +    import mx.core.mx_internal;
> > +
> > +    use namespace mx_internal;
> > +
> > +    public class ChangeWatcherAdvancedDataGridItemRenderer extends
> > AdvancedDataGridItemRenderer
> > +    {
> > +        public function ChangeWatcherAdvancedDataGridItemRenderer()
> > +        {
> > +            super();
> > +        }
> > +
> > +        private var invalidatePropertiesFlag:Boolean = false;
> > +
> > +        private var invalidateSizeFlag:Boolean = false;
> > +
> > +        private var changeWatcher:ChangeWatcher;
> > +
> > +        override public function set data(value:Object):void
> > +        {
> > +            if (data)
> > +            {
> > +                removeChangeWatcher();
> > +            }
> > +
> > +            super.data = value;
> > +
> > +            if (data)
> > +            {
> > +                addChangeWatcher();
> > +            }
> > +        }
> > +
> > +        protected function addChangeWatcher():void
> > +        {
> > +            var adgListData:AdvancedDataGridListData =
> > AdvancedDataGridListData(listData);
> > +            if (adgListData.dataField)
> > +            {
> > +                changeWatcher = ChangeWatcher.watch(data,
> > adgListData.dataField.split("."), dataHasUpdated);
> > +            }
> > +        }
> > +
> > +        protected function removeChangeWatcher():void
> > +        {
> > +            if (changeWatcher)
> > +            {
> > +                changeWatcher.unwatch();
> > +                changeWatcher = null;
> > +            }
> > +        }
> > +
> > +        protected function dataHasUpdated(event:Event = null):void
> > +        {
> > +            if (nestLevel && !invalidatePropertiesFlag)
> > +            {
> > +
>  UIComponentGlobals.layoutManager.invalidateProperties(this);
> > +                invalidatePropertiesFlag = true;
> > +//                UIComponentGlobals.layoutManager.invalidateSize(this);
> > +//                invalidateSizeFlag = true;
> > +            }
> > +        }
> > +
> > +        override public function validateProperties():void
> > +        {
> > +            invalidatePropertiesFlag = false;
> > +
> > +            // update listData.label so super.validateProperties() will
> > update the text correctly
> > +            var _listData:AdvancedDataGridListData = listData as
> > AdvancedDataGridListData;
> > +            if (_listData)
> > +            {
> > +                var label:String;
> > +                try
> > +                {
> > +                    var isComplexDataField:Boolean =
> > (_listData.dataField.indexOf(".") >= 0);
> > +                    if (isComplexDataField)
> > +                    {
> > +                        var pathElements:Array =
> > _listData.dataField.split(".");
> > +                        var currentItemData:Object = data;
> > +
> > +                        for each (var pathElement:String in
> pathElements)
> > +                        {
> > +                            currentItemData =
> currentItemData[pathElement];
> > +                        }
> > +
> > +                        if (currentItemData != null)
> > +                            label = currentItemData.toString();
> > +                    }
> > +                    else if (data.hasOwnProperty(_listData.dataField))
> > +                    {
> > +                        label = data[_listData.dataField];
> > +                    }
> > +                }
> > +                catch(ignored:Error)
> > +                {
> > +                }
> > +
> > +                _listData.label = label;
> > +            }
> > +            super.validateProperties();
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/ChangeWatcherAdvancedDataGridItemRenderer.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/FastAdvancedDataGrid.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> >
> ection/src/fastdatagridhelpers/FastAdvancedDataGrid.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/FastAdvancedDataGrid.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/FastAdvancedDataGrid.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,25 @@
> > +package fastdatagridhelpers
> > +{
> > +    import flash.events.Event;
> > +
> > +    import mx.controls.AdvancedDataGrid;
> > +    import mx.events.CollectionEvent;
> > +    import mx.events.CollectionEventKind;
> > +
> > +    public class FastAdvancedDataGrid extends AdvancedDataGrid
> > +    {
> > +        public function FastAdvancedDataGrid()
> > +        {
> > +            super();
> > +        }
> > +
> > +        override protected function
> collectionChangeHandler(event:Event):void
> > +        {
> > +            var ce:CollectionEvent = CollectionEvent(event);
> > +            if (ce.kind != CollectionEventKind.UPDATE)
> > +            {
> > +                super.collectionChangeHandler(event);
> > +            }
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelper
> > s/FastAdvancedDataGrid.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedProper
> > tyObject.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> > ection/src/model/NestedPropertyObject.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedProper
> > tyObject.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedProper
> > tyObject.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,15 @@
> > +package model
> > +{
> > +    public class NestedPropertyObject
> > +    {
> > +        public function NestedPropertyObject()
> > +        {
> > +        }
> > +
> > +        [Bindable]
> > +        public var
> propertyChangeBindableObject:PropertyChangeBindableObject;
> > +
> > +        [Bindable]
> > +        public var uniqueEventBindableObject:UniqueEventBindableObject;
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedProper
> > tyObject.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableO
> > bject.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> > ection/src/model/NonBindableObject.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableO
> > bject.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableO
> > bject.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,109 @@
> > +package model
> > +{
> > +    import flash.events.EventDispatcher;
> > +
> > +    public class NonBindableObject extends EventDispatcher
> > +    {
> > +        public function NonBindableObject()
> > +        {
> > +            super();
> > +        }
> > +
> > +        public static const NUM_PROPERTIES:int = 30;
> > +
> > +        public function fillAllProperties():void
> > +        {
> > +            for (var i:int = 0; i < NUM_PROPERTIES; i++)
> > +            {
> > +                fillProperty(i);
> > +            }
> > +        }
> > +
> > +        public function
> fillNRandomProperties(numPropertiesToUpdate:int):void
> > +        {
> > +            for (var j:int = 0; j < numPropertiesToUpdate; j++)
> > +            {
> > +                fillARandomProperty();
> > +            }
> > +        }
> > +
> > +        private function fillARandomProperty():void
> > +        {
> > +            var propertyIndex:int = Math.floor(Math.random() *
> > NUM_PROPERTIES);
> > +            fillProperty(propertyIndex);
> > +        }
> > +
> > +        private function fillProperty(propertyIndex:int):void
> > +        {
> > +            if (propertyIndex % 3 == 0)
> > +            {
> > +                // Number
> > +                this["property" + propertyIndex] = Math.random();
> > +            }
> > +            else
> > +            {
> > +                this["property" + propertyIndex] =
> Math.random().toString();
> > +            }
> > +        }
> > +
> > +        public var property0:Number;
> > +
> > +        public var property1:String;
> > +
> > +        public var property2:String;
> > +
> > +        public var property3:Number;
> > +
> > +        public var property4:String;
> > +
> > +        public var property5:String;
> > +
> > +        public var property6:Number;
> > +
> > +        public var property7:String;
> > +
> > +        public var property8:String;
> > +
> > +        public var property9:Number;
> > +
> > +        public var property10:String;
> > +
> > +        public var property11:String;
> > +
> > +        public var property12:Number;
> > +
> > +        public var property13:String;
> > +
> > +        public var property14:String;
> > +
> > +        public var property15:Number;
> > +
> > +        public var property16:String;
> > +
> > +        public var property17:String;
> > +
> > +        public var property18:Number;
> > +
> > +        public var property19:String;
> > +
> > +        public var property20:String;
> > +
> > +        public var property21:Number;
> > +
> > +        public var property22:String;
> > +
> > +        public var property23:String;
> > +
> > +        public var property24:Number;
> > +
> > +        public var property25:String;
> > +
> > +        public var property26:String;
> > +
> > +        public var property27:Number;
> > +
> > +        public var property28:String;
> > +
> > +        public var property29:String;
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableO
> > bject.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChan
> > geBindableObject.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> > ection/src/model/PropertyChangeBindableObject.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChan
> > geBindableObject.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChan
> > geBindableObject.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,159 @@
> > +package model
> > +{
> > +    import flash.events.EventDispatcher;
> > +
> > +    import mx.events.PropertyChangeEvent;
> > +
> > +    public class PropertyChangeBindableObject extends EventDispatcher
> > +    {
> > +        public function PropertyChangeBindableObject()
> > +        {
> > +            super();
> > +        }
> > +
> > +        public static const NUM_PROPERTIES:int = 30;
> > +
> > +        public function fillAllProperties():void
> > +        {
> > +            for (var i:int = 0; i < NUM_PROPERTIES; i++)
> > +            {
> > +                fillProperty(i);
> > +            }
> > +        }
> > +
> > +        public function
> fillNRandomProperties(numPropertiesToUpdate:int):void
> > +        {
> > +            for (var j:int = 0; j < numPropertiesToUpdate; j++)
> > +            {
> > +                fillARandomProperty();
> > +            }
> > +        }
> > +
> > +        private function fillARandomProperty():void
> > +        {
> > +            var propertyIndex:int = Math.floor(Math.random() *
> > NUM_PROPERTIES);
> > +            fillProperty(propertyIndex);
> > +        }
> > +
> > +        private function fillProperty(propertyIndex:int):void
> > +        {
> > +            if (propertyIndex % 3 == 0)
> > +            {
> > +                // Number
> > +                this["property" + propertyIndex] = Math.random();
> > +            }
> > +            else
> > +            {
> > +                this["property" + propertyIndex] =
> Math.random().toString();
> > +            }
> > +        }
> > +
> > +        [Bindable]
> > +        public var property0:Number;
> > +
> > +        [Bindable]
> > +        public var property1:String;
> > +
> > +        [Bindable]
> > +        public var property2:String;
> > +
> > +//        [Bindable]
> > +//        public var property3:Number;
> > +        private var _property3:Number;
> > +
> > +        [Bindable("propertyChange")]
> > +        public function get property3():Number
> > +        {
> > +            return _property3;
> > +        }
> > +
> > +        public function set property3(value:Number):void
> > +        {
> > +            if (value == _property3)
> > +                return;
> > +
> > +            var oldValue:Number = _property3;
> > +            _property3 = value;
> > +
> > +            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property3", oldValue, _property3));
> > +        }
> > +
> > +        [Bindable]
> > +        public var property4:String;
> > +
> > +        [Bindable]
> > +        public var property5:String;
> > +
> > +        [Bindable]
> > +        public var property6:Number;
> > +
> > +        [Bindable]
> > +        public var property7:String;
> > +
> > +        [Bindable]
> > +        public var property8:String;
> > +
> > +        [Bindable]
> > +        public var property9:Number;
> > +
> > +        [Bindable]
> > +        public var property10:String;
> > +
> > +        [Bindable]
> > +        public var property11:String;
> > +
> > +        [Bindable]
> > +        public var property12:Number;
> > +
> > +        [Bindable]
> > +        public var property13:String;
> > +
> > +        [Bindable]
> > +        public var property14:String;
> > +
> > +        [Bindable]
> > +        public var property15:Number;
> > +
> > +        [Bindable]
> > +        public var property16:String;
> > +
> > +        [Bindable]
> > +        public var property17:String;
> > +
> > +        [Bindable]
> > +        public var property18:Number;
> > +
> > +        [Bindable]
> > +        public var property19:String;
> > +
> > +        [Bindable]
> > +        public var property20:String;
> > +
> > +        [Bindable]
> > +        public var property21:Number;
> > +
> > +        [Bindable]
> > +        public var property22:String;
> > +
> > +        [Bindable]
> > +        public var property23:String;
> > +
> > +        [Bindable]
> > +        public var property24:Number;
> > +
> > +        [Bindable]
> > +        public var property25:String;
> > +
> > +        [Bindable]
> > +        public var property26:String;
> > +
> > +        [Bindable]
> > +        public var property27:Number;
> > +
> > +        [Bindable]
> > +        public var property28:String;
> > +
> > +        [Bindable]
> > +        public var property29:String;
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChan
> > geBindableObject.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersio
> > nEventBindableObject.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> >
> ection/src/model/SingleVersionEventBindableObject.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersio
> > nEventBindableObject.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersio
> > nEventBindableObject.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,503 @@
> > +package model
> > +{
> > +    import flash.events.Event;
> > +    import flash.events.EventDispatcher;
> > +
> > +    import mx.events.PropertyChangeEvent;
> > +
> > +    public class SingleVersionEventBindableObject extends
> EventDispatcher
> > +    {
> > +        public function SingleVersionEventBindableObject()
> > +        {
> > +            super();
> > +        }
> > +
> > +        public static function createProperties(start:int, end:int):void
> > +        {
> > +            for (var i:int = start; i <= end; i++)
> > +            {
> > +                var type:String = (i % 3 == 0 ? "Number" : "String");
> > +
> > +                trace('private var _property' + i + ':' + type + ';');
> > +                trace('');
> > +                trace('[Bindable("versionNumberChanged")]');
> > +                trace('public function get property' + i + '():' + type
> +
> > '');
> > +                trace('{');
> > +                    trace('return _property' + i + ';');
> > +                trace('}');
> > +                trace('');
> > +                trace('public function set property' + i + '(value:' +
> type +
> > '):void');
> > +                trace('{');
> > +                    trace('_property' + i + ' = value;');
> > +                trace('}');
> > +                trace('');
> > +            }
> > +
> > +        }
> > +
> > +        public static const NUM_PROPERTIES:int = 30;
> > +
> > +        public function fillAllProperties():void
> > +        {
> > +            for (var i:int = 0; i < NUM_PROPERTIES; i++)
> > +            {
> > +                fillProperty(i);
> > +            }
> > +
> > +            versionNumber++;
> > +        }
> > +
> > +        public function
> fillNRandomProperties(numPropertiesToUpdate:int):void
> > +        {
> > +            for (var j:int = 0; j < numPropertiesToUpdate; j++)
> > +            {
> > +                fillARandomProperty();
> > +            }
> > +
> > +            versionNumber++;
> > +        }
> > +
> > +        // doesn't update version.... so no binding here
> > +        private function fillARandomProperty():void
> > +        {
> > +            var propertyIndex:int = Math.floor(Math.random() *
> > NUM_PROPERTIES);
> > +            fillProperty(propertyIndex);
> > +        }
> > +
> > +        private function fillProperty(propertyIndex:int):void
> > +        {
> > +            if (propertyIndex % 3 == 0)
> > +            {
> > +                // Number
> > +                this["property" + propertyIndex] = Math.random();
> > +            }
> > +            else
> > +            {
> > +                this["property" + propertyIndex] =
> Math.random().toString();
> > +            }
> > +        }
> > +
> > +        private var _versionNumber:Number = 0;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get versionNumber():int
> > +        {
> > +            return _versionNumber;
> > +        }
> > +
> > +        public function set versionNumber(value:int):void
> > +        {
> > +            if (_versionNumber == value)
> > +                return;
> > +
> > +            var oldValue:Number = _versionNumber;
> > +
> > +            _versionNumber = value;
> > +
> > +            dispatchEvent(new Event("versionNumberChanged"));
> > +
> > +//            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "versionNumber", oldValue, _versionNumber));
> > +
> > +            // prop0 is filter
> > +            // prop1 is sort
> > +            // prop3 is grouping
> > +//            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property0", property0, property0));
> > +//            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property1", property1, property1));
> > +            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property3", property3, property3));
> > +        }
> > +
> > +
> > +
> > +
> > +
> > +        private var _property0:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property0():Number
> > +        {
> > +            return _property0;
> > +        }
> > +
> > +        public function set property0(value:Number):void
> > +        {
> > +            _property0 = value;
> > +        }
> > +
> > +        private var _property1:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property1():String
> > +        {
> > +            return _property1;
> > +        }
> > +
> > +        public function set property1(value:String):void
> > +        {
> > +            _property1 = value;
> > +        }
> > +
> > +        private var _property2:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property2():String
> > +        {
> > +            return _property2;
> > +        }
> > +
> > +        public function set property2(value:String):void
> > +        {
> > +            _property2 = value;
> > +        }
> > +
> > +        private var _property3:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property3():Number
> > +        {
> > +            return _property3;
> > +        }
> > +
> > +        public function set property3(value:Number):void
> > +        {
> > +            _property3 = value;
> > +        }
> > +
> > +        private var _property4:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property4():String
> > +        {
> > +            return _property4;
> > +        }
> > +
> > +        public function set property4(value:String):void
> > +        {
> > +            _property4 = value;
> > +        }
> > +
> > +        private var _property5:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property5():String
> > +        {
> > +            return _property5;
> > +        }
> > +
> > +        public function set property5(value:String):void
> > +        {
> > +            _property5 = value;
> > +        }
> > +
> > +        private var _property6:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property6():Number
> > +        {
> > +            return _property6;
> > +        }
> > +
> > +        public function set property6(value:Number):void
> > +        {
> > +            _property6 = value;
> > +        }
> > +
> > +        private var _property7:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property7():String
> > +        {
> > +            return _property7;
> > +        }
> > +
> > +        public function set property7(value:String):void
> > +        {
> > +            _property7 = value;
> > +        }
> > +
> > +        private var _property8:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property8():String
> > +        {
> > +            return _property8;
> > +        }
> > +
> > +        public function set property8(value:String):void
> > +        {
> > +            _property8 = value;
> > +        }
> > +
> > +        private var _property9:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property9():Number
> > +        {
> > +            return _property9;
> > +        }
> > +
> > +        public function set property9(value:Number):void
> > +        {
> > +            _property9 = value;
> > +        }
> > +
> > +        private var _property10:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property10():String
> > +        {
> > +            return _property10;
> > +        }
> > +
> > +        public function set property10(value:String):void
> > +        {
> > +            _property10 = value;
> > +        }
> > +
> > +        private var _property11:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property11():String
> > +        {
> > +            return _property11;
> > +        }
> > +
> > +        public function set property11(value:String):void
> > +        {
> > +            _property11 = value;
> > +        }
> > +
> > +        private var _property12:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property12():Number
> > +        {
> > +            return _property12;
> > +        }
> > +
> > +        public function set property12(value:Number):void
> > +        {
> > +            _property12 = value;
> > +        }
> > +
> > +        private var _property13:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property13():String
> > +        {
> > +            return _property13;
> > +        }
> > +
> > +        public function set property13(value:String):void
> > +        {
> > +            _property13 = value;
> > +        }
> > +
> > +        private var _property14:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property14():String
> > +        {
> > +            return _property14;
> > +        }
> > +
> > +        public function set property14(value:String):void
> > +        {
> > +            _property14 = value;
> > +        }
> > +
> > +        private var _property15:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property15():Number
> > +        {
> > +            return _property15;
> > +        }
> > +
> > +        public function set property15(value:Number):void
> > +        {
> > +            _property15 = value;
> > +        }
> > +
> > +        private var _property16:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property16():String
> > +        {
> > +            return _property16;
> > +        }
> > +
> > +        public function set property16(value:String):void
> > +        {
> > +            _property16 = value;
> > +        }
> > +
> > +        private var _property17:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property17():String
> > +        {
> > +            return _property17;
> > +        }
> > +
> > +        public function set property17(value:String):void
> > +        {
> > +            _property17 = value;
> > +        }
> > +
> > +        private var _property18:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property18():Number
> > +        {
> > +            return _property18;
> > +        }
> > +
> > +        public function set property18(value:Number):void
> > +        {
> > +            _property18 = value;
> > +        }
> > +
> > +        private var _property19:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property19():String
> > +        {
> > +            return _property19;
> > +        }
> > +
> > +        public function set property19(value:String):void
> > +        {
> > +            _property19 = value;
> > +        }
> > +
> > +        private var _property20:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property20():String
> > +        {
> > +            return _property20;
> > +        }
> > +
> > +        public function set property20(value:String):void
> > +        {
> > +            _property20 = value;
> > +        }
> > +
> > +        private var _property21:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property21():Number
> > +        {
> > +            return _property21;
> > +        }
> > +
> > +        public function set property21(value:Number):void
> > +        {
> > +            _property21 = value;
> > +        }
> > +
> > +        private var _property22:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property22():String
> > +        {
> > +            return _property22;
> > +        }
> > +
> > +        public function set property22(value:String):void
> > +        {
> > +            _property22 = value;
> > +        }
> > +
> > +        private var _property23:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property23():String
> > +        {
> > +            return _property23;
> > +        }
> > +
> > +        public function set property23(value:String):void
> > +        {
> > +            _property23 = value;
> > +        }
> > +
> > +        private var _property24:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property24():Number
> > +        {
> > +            return _property24;
> > +        }
> > +
> > +        public function set property24(value:Number):void
> > +        {
> > +            _property24 = value;
> > +        }
> > +
> > +        private var _property25:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property25():String
> > +        {
> > +            return _property25;
> > +        }
> > +
> > +        public function set property25(value:String):void
> > +        {
> > +            _property25 = value;
> > +        }
> > +
> > +        private var _property26:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property26():String
> > +        {
> > +            return _property26;
> > +        }
> > +
> > +        public function set property26(value:String):void
> > +        {
> > +            _property26 = value;
> > +        }
> > +
> > +        private var _property27:Number;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property27():Number
> > +        {
> > +            return _property27;
> > +        }
> > +
> > +        public function set property27(value:Number):void
> > +        {
> > +            _property27 = value;
> > +        }
> > +
> > +        private var _property28:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property28():String
> > +        {
> > +            return _property28;
> > +        }
> > +
> > +        public function set property28(value:String):void
> > +        {
> > +            _property28 = value;
> > +        }
> > +
> > +        private var _property29:String;
> > +
> > +        [Bindable("versionNumberChanged")]
> > +        public function get property29():String
> > +        {
> > +            return _property29;
> > +        }
> > +
> > +        public function set property29(value:String):void
> > +        {
> > +            _property29 = value;
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersio
> > nEventBindableObject.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> > Added:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventB
> > indableObject.as
> > URL:
> >
> http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingColl
> > ection/src/model/UniqueEventBindableObject.as?rev=1234229&view=auto
> >
> ==============================================================================
> > ---
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventB
> > indableObject.as (added)
> > +++
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventB
> > indableObject.as Sat Jan 21 01:33:26 2012
> > @@ -0,0 +1,626 @@
> > +package model
> > +{
> > +    import flash.events.Event;
> > +    import flash.events.EventDispatcher;
> > +
> > +    import mx.events.PropertyChangeEvent;
> > +
> > +    public class UniqueEventBindableObject extends EventDispatcher
> > +    {
> > +        public function UniqueEventBindableObject()
> > +        {
> > +            super();
> > +        }
> > +
> > +        public static function createProperties(start:int, end:int):void
> > +        {
> > +            for (var i:int = start; i <= end; i++)
> > +            {
> > +                var type:String = (i % 3 == 0 ? "Number" : "String");
> > +
> > +                trace('private var _property' + i + ':' + type + ';');
> > +                trace('');
> > +                trace('[Bindable("property' + i + 'Changed")]');
> > +                trace('public function get property' + i + '():' + type
> +
> > '');
> > +                trace('{');
> > +                    trace('return _property' + i + ';');
> > +                trace('}');
> > +                trace('');
> > +                trace('public function set property' + i + '(value:' +
> type +
> > '):void');
> > +                trace('{');
> > +                    trace('if (_property' + i + ' == value)');
> > +                        trace('return;');
> > +                    trace('');
> > +                    trace('_property' + i + ' = value;');
> > +                    trace('if (hasEventListener("property' + i +
> > 'Changed"))');
> > +                        trace('dispatchEvent(new Event("property' + i +
> > 'Changed"));');
> > +                trace('}');
> > +                trace('');
> > +            }
> > +
> > +        }
> > +
> > +        public static const NUM_PROPERTIES:int = 30;
> > +
> > +        public function fillAllProperties():void
> > +        {
> > +            for (var i:int = 0; i < NUM_PROPERTIES; i++)
> > +            {
> > +                fillProperty(i);
> > +            }
> > +        }
> > +
> > +        public function
> fillNRandomProperties(numPropertiesToUpdate:int):void
> > +        {
> > +            for (var j:int = 0; j < numPropertiesToUpdate; j++)
> > +            {
> > +                fillARandomProperty();
> > +            }
> > +        }
> > +
> > +        private function fillARandomProperty():void
> > +        {
> > +            var propertyIndex:int = Math.floor(Math.random() *
> > NUM_PROPERTIES);
> > +            fillProperty(propertyIndex);
> > +        }
> > +
> > +        private function fillProperty(propertyIndex:int):void
> > +        {
> > +            if (propertyIndex % 3 == 0)
> > +            {
> > +                // Number
> > +                this["property" + propertyIndex] = Math.random();
> > +            }
> > +            else
> > +            {
> > +                this["property" + propertyIndex] =
> Math.random().toString();
> > +            }
> > +        }
> > +
> > +        private var _property0:Number;
> > +
> > +        [Bindable("property0Changed")]
> > +        public function get property0():Number
> > +        {
> > +            return _property0;
> > +        }
> > +
> > +        public function set property0(value:Number):void
> > +        {
> > +            if (_property0 == value)
> > +                return;
> > +
> > +            _property0 = value;
> > +            if (hasEventListener("property0Changed"))
> > +                dispatchEvent(new Event("property0Changed"));
> > +
> > +            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property0", property0, property0));
> > +        }
> > +
> > +        private var _property1:String;
> > +
> > +        [Bindable("property1Changed")]
> > +        public function get property1():String
> > +        {
> > +            return _property1;
> > +        }
> > +
> > +        public function set property1(value:String):void
> > +        {
> > +            if (_property1 == value)
> > +                return;
> > +
> > +            _property1 = value;
> > +            if (hasEventListener("property1Changed"))
> > +                dispatchEvent(new Event("property1Changed"));
> > +
> > +            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property1", property1, property1));
> > +        }
> > +
> > +        private var _property2:String;
> > +
> > +        [Bindable("property2Changed")]
> > +        public function get property2():String
> > +        {
> > +            return _property2;
> > +        }
> > +
> > +        public function set property2(value:String):void
> > +        {
> > +            if (_property2 == value)
> > +                return;
> > +
> > +            _property2 = value;
> > +            if (hasEventListener("property2Changed"))
> > +                dispatchEvent(new Event("property2Changed"));
> > +        }
> > +
> > +        private var _property3:Number;
> > +
> > +        [Bindable("property3Changed")]
> > +        public function get property3():Number
> > +        {
> > +            return _property3;
> > +        }
> > +
> > +        public function set property3(value:Number):void
> > +        {
> > +            if (_property3 == value)
> > +                return;
> > +
> > +            _property3 = value;
> > +            if (hasEventListener("property3Changed"))
> > +                dispatchEvent(new Event("property3Changed"));
> > +
> > +            dispatchEvent(PropertyChangeEvent.createUpdateEvent(this,
> > "property3", property3, property3));
> > +        }
> > +
> > +        private var _property4:String;
> > +
> > +        [Bindable("property4Changed")]
> > +        public function get property4():String
> > +        {
> > +            return _property4;
> > +        }
> > +
> > +        public function set property4(value:String):void
> > +        {
> > +            if (_property4 == value)
> > +                return;
> > +
> > +            _property4 = value;
> > +            if (hasEventListener("property4Changed"))
> > +                dispatchEvent(new Event("property4Changed"));
> > +        }
> > +
> > +        private var _property5:String;
> > +
> > +        [Bindable("property5Changed")]
> > +        public function get property5():String
> > +        {
> > +            return _property5;
> > +        }
> > +
> > +        public function set property5(value:String):void
> > +        {
> > +            if (_property5 == value)
> > +                return;
> > +
> > +            _property5 = value;
> > +            if (hasEventListener("property5Changed"))
> > +                dispatchEvent(new Event("property5Changed"));
> > +        }
> > +
> > +        private var _property6:Number;
> > +
> > +        [Bindable("property6Changed")]
> > +        public function get property6():Number
> > +        {
> > +            return _property6;
> > +        }
> > +
> > +        public function set property6(value:Number):void
> > +        {
> > +            if (_property6 == value)
> > +                return;
> > +
> > +            _property6 = value;
> > +            if (hasEventListener("property6Changed"))
> > +                dispatchEvent(new Event("property6Changed"));
> > +        }
> > +
> > +        private var _property7:String;
> > +
> > +        [Bindable("property7Changed")]
> > +        public function get property7():String
> > +        {
> > +            return _property7;
> > +        }
> > +
> > +        public function set property7(value:String):void
> > +        {
> > +            if (_property7 == value)
> > +                return;
> > +
> > +            _property7 = value;
> > +            if (hasEventListener("property7Changed"))
> > +                dispatchEvent(new Event("property7Changed"));
> > +        }
> > +
> > +        private var _property8:String;
> > +
> > +        [Bindable("property8Changed")]
> > +        public function get property8():String
> > +        {
> > +            return _property8;
> > +        }
> > +
> > +        public function set property8(value:String):void
> > +        {
> > +            if (_property8 == value)
> > +                return;
> > +
> > +            _property8 = value;
> > +            if (hasEventListener("property8Changed"))
> > +                dispatchEvent(new Event("property8Changed"));
> > +        }
> > +
> > +        private var _property9:Number;
> > +
> > +        [Bindable("property9Changed")]
> > +        public function get property9():Number
> > +        {
> > +            return _property9;
> > +        }
> > +
> > +        public function set property9(value:Number):void
> > +        {
> > +            if (_property9 == value)
> > +                return;
> > +
> > +            _property9 = value;
> > +            if (hasEventListener("property9Changed"))
> > +                dispatchEvent(new Event("property9Changed"));
> > +        }
> > +
> > +        private var _property10:String;
> > +
> > +        [Bindable("property10Changed")]
> > +        public function get property10():String
> > +        {
> > +            return _property10;
> > +        }
> > +
> > +        public function set property10(value:String):void
> > +        {
> > +            if (_property10 == value)
> > +                return;
> > +
> > +            _property10 = value;
> > +            if (hasEventListener("property10Changed"))
> > +                dispatchEvent(new Event("property10Changed"));
> > +        }
> > +
> > +        private var _property11:String;
> > +
> > +        [Bindable("property11Changed")]
> > +        public function get property11():String
> > +        {
> > +            return _property11;
> > +        }
> > +
> > +        public function set property11(value:String):void
> > +        {
> > +            if (_property11 == value)
> > +                return;
> > +
> > +            _property11 = value;
> > +            if (hasEventListener("property11Changed"))
> > +                dispatchEvent(new Event("property11Changed"));
> > +        }
> > +
> > +        private var _property12:Number;
> > +
> > +        [Bindable("property12Changed")]
> > +        public function get property12():Number
> > +        {
> > +            return _property12;
> > +        }
> > +
> > +        public function set property12(value:Number):void
> > +        {
> > +            if (_property12 == value)
> > +                return;
> > +
> > +            _property12 = value;
> > +            if (hasEventListener("property12Changed"))
> > +                dispatchEvent(new Event("property12Changed"));
> > +        }
> > +
> > +        private var _property13:String;
> > +
> > +        [Bindable("property13Changed")]
> > +        public function get property13():String
> > +        {
> > +            return _property13;
> > +        }
> > +
> > +        public function set property13(value:String):void
> > +        {
> > +            if (_property13 == value)
> > +                return;
> > +
> > +            _property13 = value;
> > +            if (hasEventListener("property13Changed"))
> > +                dispatchEvent(new Event("property13Changed"));
> > +        }
> > +
> > +        private var _property14:String;
> > +
> > +        [Bindable("property14Changed")]
> > +        public function get property14():String
> > +        {
> > +            return _property14;
> > +        }
> > +
> > +        public function set property14(value:String):void
> > +        {
> > +            if (_property14 == value)
> > +                return;
> > +
> > +            _property14 = value;
> > +            if (hasEventListener("property14Changed"))
> > +                dispatchEvent(new Event("property14Changed"));
> > +        }
> > +
> > +        private var _property15:Number;
> > +
> > +        [Bindable("property15Changed")]
> > +        public function get property15():Number
> > +        {
> > +            return _property15;
> > +        }
> > +
> > +        public function set property15(value:Number):void
> > +        {
> > +            if (_property15 == value)
> > +                return;
> > +
> > +            _property15 = value;
> > +            if (hasEventListener("property15Changed"))
> > +                dispatchEvent(new Event("property15Changed"));
> > +        }
> > +
> > +        private var _property16:String;
> > +
> > +        [Bindable("property16Changed")]
> > +        public function get property16():String
> > +        {
> > +            return _property16;
> > +        }
> > +
> > +        public function set property16(value:String):void
> > +        {
> > +            if (_property16 == value)
> > +                return;
> > +
> > +            _property16 = value;
> > +            if (hasEventListener("property16Changed"))
> > +                dispatchEvent(new Event("property16Changed"));
> > +        }
> > +
> > +        private var _property17:String;
> > +
> > +        [Bindable("property17Changed")]
> > +        public function get property17():String
> > +        {
> > +            return _property17;
> > +        }
> > +
> > +        public function set property17(value:String):void
> > +        {
> > +            if (_property17 == value)
> > +                return;
> > +
> > +            _property17 = value;
> > +            if (hasEventListener("property17Changed"))
> > +                dispatchEvent(new Event("property17Changed"));
> > +        }
> > +
> > +        private var _property18:Number;
> > +
> > +        [Bindable("property18Changed")]
> > +        public function get property18():Number
> > +        {
> > +            return _property18;
> > +        }
> > +
> > +        public function set property18(value:Number):void
> > +        {
> > +            if (_property18 == value)
> > +                return;
> > +
> > +            _property18 = value;
> > +            if (hasEventListener("property18Changed"))
> > +                dispatchEvent(new Event("property18Changed"));
> > +        }
> > +
> > +        private var _property19:String;
> > +
> > +        [Bindable("property19Changed")]
> > +        public function get property19():String
> > +        {
> > +            return _property19;
> > +        }
> > +
> > +        public function set property19(value:String):void
> > +        {
> > +            if (_property19 == value)
> > +                return;
> > +
> > +            _property19 = value;
> > +            if (hasEventListener("property19Changed"))
> > +                dispatchEvent(new Event("property19Changed"));
> > +        }
> > +
> > +        private var _property20:String;
> > +
> > +        [Bindable("property20Changed")]
> > +        public function get property20():String
> > +        {
> > +            return _property20;
> > +        }
> > +
> > +        public function set property20(value:String):void
> > +        {
> > +            if (_property20 == value)
> > +                return;
> > +
> > +            _property20 = value;
> > +            if (hasEventListener("property20Changed"))
> > +                dispatchEvent(new Event("property20Changed"));
> > +        }
> > +
> > +        private var _property21:Number;
> > +
> > +        [Bindable("property21Changed")]
> > +        public function get property21():Number
> > +        {
> > +            return _property21;
> > +        }
> > +
> > +        public function set property21(value:Number):void
> > +        {
> > +            if (_property21 == value)
> > +                return;
> > +
> > +            _property21 = value;
> > +            if (hasEventListener("property21Changed"))
> > +                dispatchEvent(new Event("property21Changed"));
> > +        }
> > +
> > +        private var _property22:String;
> > +
> > +        [Bindable("property22Changed")]
> > +        public function get property22():String
> > +        {
> > +            return _property22;
> > +        }
> > +
> > +        public function set property22(value:String):void
> > +        {
> > +            if (_property22 == value)
> > +                return;
> > +
> > +            _property22 = value;
> > +            if (hasEventListener("property22Changed"))
> > +                dispatchEvent(new Event("property22Changed"));
> > +        }
> > +
> > +        private var _property23:String;
> > +
> > +        [Bindable("property23Changed")]
> > +        public function get property23():String
> > +        {
> > +            return _property23;
> > +        }
> > +
> > +        public function set property23(value:String):void
> > +        {
> > +            if (_property23 == value)
> > +                return;
> > +
> > +            _property23 = value;
> > +            if (hasEventListener("property23Changed"))
> > +                dispatchEvent(new Event("property23Changed"));
> > +        }
> > +
> > +        private var _property24:Number;
> > +
> > +        [Bindable("property24Changed")]
> > +        public function get property24():Number
> > +        {
> > +            return _property24;
> > +        }
> > +
> > +        public function set property24(value:Number):void
> > +        {
> > +            if (_property24 == value)
> > +                return;
> > +
> > +            _property24 = value;
> > +            if (hasEventListener("property24Changed"))
> > +                dispatchEvent(new Event("property24Changed"));
> > +        }
> > +
> > +        private var _property25:String;
> > +
> > +        [Bindable("property25Changed")]
> > +        public function get property25():String
> > +        {
> > +            return _property25;
> > +        }
> > +
> > +        public function set property25(value:String):void
> > +        {
> > +            if (_property25 == value)
> > +                return;
> > +
> > +            _property25 = value;
> > +            if (hasEventListener("property25Changed"))
> > +                dispatchEvent(new Event("property25Changed"));
> > +        }
> > +
> > +        private var _property26:String;
> > +
> > +        [Bindable("property26Changed")]
> > +        public function get property26():String
> > +        {
> > +            return _property26;
> > +        }
> > +
> > +        public function set property26(value:String):void
> > +        {
> > +            if (_property26 == value)
> > +                return;
> > +
> > +            _property26 = value;
> > +            if (hasEventListener("property26Changed"))
> > +                dispatchEvent(new Event("property26Changed"));
> > +        }
> > +
> > +        private var _property27:Number;
> > +
> > +        [Bindable("property27Changed")]
> > +        public function get property27():Number
> > +        {
> > +            return _property27;
> > +        }
> > +
> > +        public function set property27(value:Number):void
> > +        {
> > +            if (_property27 == value)
> > +                return;
> > +
> > +            _property27 = value;
> > +            if (hasEventListener("property27Changed"))
> > +                dispatchEvent(new Event("property27Changed"));
> > +        }
> > +
> > +        private var _property28:String;
> > +
> > +        [Bindable("property28Changed")]
> > +        public function get property28():String
> > +        {
> > +            return _property28;
> > +        }
> > +
> > +        public function set property28(value:String):void
> > +        {
> > +            if (_property28 == value)
> > +                return;
> > +
> > +            _property28 = value;
> > +            if (hasEventListener("property28Changed"))
> > +                dispatchEvent(new Event("property28Changed"));
> > +        }
> > +
> > +        private var _property29:String;
> > +
> > +        [Bindable("property29Changed")]
> > +        public function get property29():String
> > +        {
> > +            return _property29;
> > +        }
> > +
> > +        public function set property29(value:String):void
> > +        {
> > +            if (_property29 == value)
> > +                return;
> > +
> > +            _property29 = value;
> > +            if (hasEventListener("property29Changed"))
> > +                dispatchEvent(new Event("property29Changed"));
> > +        }
> > +    }
> > +}
> > \ No newline at end of file
> >
> > Propchange:
> >
> incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventB
> > indableObject.as
> >
> ------------------------------------------------------------------------------
> >     svn:eol-style = native
> >
> >
>
> --
> Alex Harui
> Flex SDK Team
> Adobe Systems, Inc.
> http://blogs.adobe.com/aharui
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message