You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by fr...@apache.org on 2012/01/21 02:33:28 UTC
svn commit: r1234229 [4/4] - in /incubator/flex/whiteboard/frishy: ./
FastGroupingCollection/ FastGroupingCollection/.settings/
FastGroupingCollection/libs/ FastGroupingCollection/src/
FastGroupingCollection/src/com/ FastGroupingCollection/src/com/fris...
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/PriorityQueue.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/PriorityQueue.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/PriorityQueue.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/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.managers.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
+ * The smallest 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/collections/PriorityQueue.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/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/collections/summarycalculators/ReturnArrayOfChildValuesSummaryCalculator.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/summarycalculators/ReturnChildValueSummaryCalculator.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/summarycalculators/ReturnChildValueSummaryCalculator.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/summarycalculators/ReturnChildValueSummaryCalculator.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/collections/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/collections/summarycalculators/ReturnChildValueSummaryCalculator.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/LayoutManagerClientHelper.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/LayoutManagerClientHelper.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/LayoutManagerClientHelper.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/com/frishy/utils/LayoutManagerClientHelper.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/LayoutManagerClientHelper.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/ChangeWatcherAdvancedDataGridItemRenderer.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/ChangeWatcherAdvancedDataGridItemRenderer.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/ChangeWatcherAdvancedDataGridItemRenderer.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/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/fastdatagridhelpers/ChangeWatcherAdvancedDataGridItemRenderer.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/FastAdvancedDataGrid.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/FastAdvancedDataGrid.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/FastAdvancedDataGrid.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/fastdatagridhelpers/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/fastdatagridhelpers/FastAdvancedDataGrid.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedPropertyObject.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedPropertyObject.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedPropertyObject.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NestedPropertyObject.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/NestedPropertyObject.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableObject.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableObject.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableObject.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/NonBindableObject.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/NonBindableObject.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChangeBindableObject.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChangeBindableObject.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChangeBindableObject.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/PropertyChangeBindableObject.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/PropertyChangeBindableObject.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersionEventBindableObject.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersionEventBindableObject.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersionEventBindableObject.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/SingleVersionEventBindableObject.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/SingleVersionEventBindableObject.as
------------------------------------------------------------------------------
svn:eol-style = native
Added: incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventBindableObject.as
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventBindableObject.as?rev=1234229&view=auto
==============================================================================
--- incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventBindableObject.as (added)
+++ incubator/flex/whiteboard/frishy/FastGroupingCollection/src/model/UniqueEventBindableObject.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/UniqueEventBindableObject.as
------------------------------------------------------------------------------
svn:eol-style = native
Re: svn commit: r1234229 [4/4] - in
/incubator/flex/whiteboard/frishy: ./ FastGroupingCollection/
FastGroupingCollection/.settings/ FastGroupingCollection/libs/
FastGroupingCollection/src/ FastGroupingCollection/src/com/
FastGroupingCollection/src/com/...
Posted by Alex Harui <ah...@adobe.com>.
Adobe header?
On 1/20/12 5:33 PM, "frishy@apache.org" <fr...@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