CheckList.as

Go to the documentation of this file.
00001 import gugga.collections.ArrayList;
00002 import gugga.debug.Assertion;
00003 import gugga.events.EventDispatcher;
00004 import gugga.collections.IIterable;
00005 import gugga.collections.IIterator;
00006 import gugga.collections.ArrayListIterator;
00007 
00008 [Event("completed")]
00009 
00047 class  gugga.collections.CheckList 
00048         extends EventDispatcher implements IIterable
00049 {
00050         private var mRegisteredObjects:ArrayList;
00051         private var mCheckedObjects:ArrayList;
00052         
00053         public function get RegisteredObjects() : ArrayList
00054         {
00055                 return mRegisteredObjects.clone();
00056         }
00057         
00058         public function get CheckedObjects() : ArrayList
00059         {
00060                 return mCheckedObjects.clone();
00061         }
00062         
00063         public function get UncheckedObjects() : ArrayList
00064         {
00065                 var result : ArrayList = new ArrayList();
00066                 for (var i : Number = 0; i < mRegisteredObjects.length; i++)
00067                 {
00068                         var item : Object = mRegisteredObjects[i];
00069                         if(!isObjectChecked(item))
00070                         {
00071                                 result.addItem(item);
00072                         }
00073                 }
00074                 
00075                 return result;
00076         }
00077         
00078         public function CheckList()
00079         {
00080                 mRegisteredObjects = new ArrayList();
00081                 mCheckedObjects = new ArrayList();
00082         }
00083         
00084         public function add(aObject:Object):Void
00085         {
00086                 Assertion.failIfReturnsTrue(
00087                         this, isObjectRegistered, [aObject], 
00088                         "Object already added", this, arguments);
00089                 
00090                 mRegisteredObjects.push(aObject);
00091         }
00092         
00093         public function remove(aObject : Object) : Void
00094         {
00095                 mRegisteredObjects.removeItem(aObject);
00096                 mCheckedObjects.removeItem(aObject);
00097         }
00098                 
00099         public function check(aObject:Object):Void
00100         {
00101                 Assertion.failIfReturnsFalse(
00102                         this, isObjectRegistered, [aObject], 
00103                         "Trying to check unregistered object", this, arguments);
00104                 
00105                 if(!isObjectChecked(aObject))
00106                 {
00107                         mCheckedObjects.push(aObject);  
00108                         
00109                         //TODO: Should be tested
00110                         if(isCompleted())
00111                         {
00112                                 dispatchEvent({type: "completed", target: this});
00113                         }
00114                 }
00115         }
00116         
00117         public function reset():Void
00118         {
00119                 mCheckedObjects = new ArrayList();
00120         }
00121         
00122         public function isObjectRegistered(aObject:Object):Boolean
00123         {       
00124                 var isRegistered:Boolean = mRegisteredObjects.containsItem(aObject);
00125                 return isRegistered;
00126         }
00127         
00128         public function isObjectChecked(aObject:Object):Boolean
00129         {       
00130                 var isChecked:Boolean = mCheckedObjects.containsItem(aObject);
00131                 return isChecked;
00132         }
00133                 
00134         public function isCompleted():Boolean
00135         {
00136                 if(mCheckedObjects.length == mRegisteredObjects.length)
00137                 {
00138                         return true;
00139                 }
00140                 else
00141                 {
00142                         return false;
00143                 }
00144         }
00145         
00149         public function getIterator () : IIterator
00150         {
00151                 return new ArrayListIterator(this.RegisteredObjects);
00152         }
00153         
00157         public function getCheckedObjectsIterator () : IIterator
00158         {
00159                 return new ArrayListIterator(this.CheckedObjects);
00160         }
00161         
00165         public function getUncheckedObjectsIterator () : IIterator
00166         {
00167                 return new ArrayListIterator(this.UncheckedObjects);
00168         }
00169 }

Generated on Fri May 11 17:12:42 2007 for GuggaFramework by  doxygen 1.5.2