home *** CD-ROM | disk | FTP | other *** search
/ PCGUIA 2010 Software/Programs / PCGuia_programas.iso / Software / Utils / Livebrush / Install-LivebrushLite.air / livebrush.swf / scripts / fl / data / DataProvider.as next >
Encoding:
Text File  |  2009-10-26  |  9.1 KB  |  288 lines

  1. package fl.data
  2. {
  3.    import fl.events.DataChangeEvent;
  4.    import fl.events.DataChangeType;
  5.    import flash.events.EventDispatcher;
  6.    
  7.    public class DataProvider extends EventDispatcher
  8.    {
  9.       protected var data:Array;
  10.       
  11.       public function DataProvider(param1:Object = null)
  12.       {
  13.          super();
  14.          if(param1 == null)
  15.          {
  16.             data = [];
  17.          }
  18.          else
  19.          {
  20.             data = getDataFromObject(param1);
  21.          }
  22.       }
  23.       
  24.       public function invalidateItemAt(param1:int) : void
  25.       {
  26.          checkIndex(param1,data.length - 1);
  27.          dispatchChangeEvent(DataChangeType.INVALIDATE,[data[param1]],param1,param1);
  28.       }
  29.       
  30.       protected function dispatchPreChangeEvent(param1:String, param2:Array, param3:int, param4:int) : void
  31.       {
  32.          dispatchEvent(new DataChangeEvent(DataChangeEvent.PRE_DATA_CHANGE,param1,param2,param3,param4));
  33.       }
  34.       
  35.       public function getItemIndex(param1:Object) : int
  36.       {
  37.          return data.indexOf(param1);
  38.       }
  39.       
  40.       public function removeItemAt(param1:uint) : Object
  41.       {
  42.          checkIndex(param1,data.length - 1);
  43.          dispatchPreChangeEvent(DataChangeType.REMOVE,data.slice(param1,param1 + 1),param1,param1);
  44.          var _loc2_:Array = data.splice(param1,1);
  45.          dispatchChangeEvent(DataChangeType.REMOVE,_loc2_,param1,param1);
  46.          return _loc2_[0];
  47.       }
  48.       
  49.       protected function getDataFromObject(param1:Object) : Array
  50.       {
  51.          var _loc2_:Array = null;
  52.          var _loc3_:Array = null;
  53.          var _loc4_:uint = 0;
  54.          var _loc5_:Object = null;
  55.          var _loc6_:XML = null;
  56.          var _loc7_:XMLList = null;
  57.          var _loc8_:XML = null;
  58.          var _loc9_:XMLList = null;
  59.          var _loc10_:XML = null;
  60.          var _loc11_:XMLList = null;
  61.          var _loc12_:XML = null;
  62.          if(param1 is Array)
  63.          {
  64.             _loc3_ = param1 as Array;
  65.             if(_loc3_.length > 0)
  66.             {
  67.                if(_loc3_[0] is String || _loc3_[0] is Number)
  68.                {
  69.                   _loc2_ = [];
  70.                   _loc4_ = 0;
  71.                   while(_loc4_ < _loc3_.length)
  72.                   {
  73.                      _loc5_ = {
  74.                         "label":String(_loc3_[_loc4_]),
  75.                         "data":_loc3_[_loc4_]
  76.                      };
  77.                      _loc2_.push(_loc5_);
  78.                      _loc4_++;
  79.                   }
  80.                   return _loc2_;
  81.                }
  82.             }
  83.             return param1.concat();
  84.          }
  85.          if(param1 is DataProvider)
  86.          {
  87.             return param1.toArray();
  88.          }
  89.          if(param1 is XML)
  90.          {
  91.             _loc6_ = param1 as XML;
  92.             _loc2_ = [];
  93.             _loc7_ = _loc6_.*;
  94.             for each(_loc8_ in _loc7_)
  95.             {
  96.                param1 = {};
  97.                _loc9_ = _loc8_.attributes();
  98.                for each(_loc10_ in _loc9_)
  99.                {
  100.                   param1[_loc10_.localName()] = _loc10_.toString();
  101.                }
  102.                _loc11_ = _loc8_.*;
  103.                for each(_loc12_ in _loc11_)
  104.                {
  105.                   if(_loc12_.hasSimpleContent())
  106.                   {
  107.                      param1[_loc12_.localName()] = _loc12_.toString();
  108.                   }
  109.                }
  110.                _loc2_.push(param1);
  111.             }
  112.             return _loc2_;
  113.          }
  114.          throw new TypeError("Error: Type Coercion failed: cannot convert " + param1 + " to Array or DataProvider.");
  115.       }
  116.       
  117.       public function addItem(param1:Object) : void
  118.       {
  119.          dispatchPreChangeEvent(DataChangeType.ADD,[param1],data.length - 1,data.length - 1);
  120.          data.push(param1);
  121.          dispatchChangeEvent(DataChangeType.ADD,[param1],data.length - 1,data.length - 1);
  122.       }
  123.       
  124.       public function concat(param1:Object) : void
  125.       {
  126.          addItems(param1);
  127.       }
  128.       
  129.       public function getItemAt(param1:uint) : Object
  130.       {
  131.          checkIndex(param1,data.length - 1);
  132.          return data[param1];
  133.       }
  134.       
  135.       public function sortOn(param1:Object, param2:Object = null) : *
  136.       {
  137.          dispatchPreChangeEvent(DataChangeType.SORT,data.concat(),0,data.length - 1);
  138.          var _loc3_:Array = data.sortOn(param1,param2);
  139.          dispatchChangeEvent(DataChangeType.SORT,data.concat(),0,data.length - 1);
  140.          return _loc3_;
  141.       }
  142.       
  143.       public function toArray() : Array
  144.       {
  145.          return data.concat();
  146.       }
  147.       
  148.       public function addItems(param1:Object) : void
  149.       {
  150.          addItemsAt(param1,data.length);
  151.       }
  152.       
  153.       public function clone() : DataProvider
  154.       {
  155.          return new DataProvider(data);
  156.       }
  157.       
  158.       public function sort(... rest) : *
  159.       {
  160.          dispatchPreChangeEvent(DataChangeType.SORT,data.concat(),0,data.length - 1);
  161.          var _loc2_:Array = data.sort.apply(data,rest);
  162.          dispatchChangeEvent(DataChangeType.SORT,data.concat(),0,data.length - 1);
  163.          return _loc2_;
  164.       }
  165.       
  166.       public function get length() : uint
  167.       {
  168.          return data.length;
  169.       }
  170.       
  171.       public function addItemAt(param1:Object, param2:uint) : void
  172.       {
  173.          checkIndex(param2,data.length);
  174.          dispatchPreChangeEvent(DataChangeType.ADD,[param1],param2,param2);
  175.          data.splice(param2,0,param1);
  176.          dispatchChangeEvent(DataChangeType.ADD,[param1],param2,param2);
  177.       }
  178.       
  179.       override public function toString() : String
  180.       {
  181.          return "DataProvider [" + data.join(" , ") + "]";
  182.       }
  183.       
  184.       public function invalidateItem(param1:Object) : void
  185.       {
  186.          var _loc2_:uint = uint(getItemIndex(param1));
  187.          if(_loc2_ == -1)
  188.          {
  189.             return;
  190.          }
  191.          invalidateItemAt(_loc2_);
  192.       }
  193.       
  194.       protected function dispatchChangeEvent(param1:String, param2:Array, param3:int, param4:int) : void
  195.       {
  196.          dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE,param1,param2,param3,param4));
  197.       }
  198.       
  199.       protected function checkIndex(param1:int, param2:int) : void
  200.       {
  201.          if(param1 > param2 || param1 < 0)
  202.          {
  203.             throw new RangeError("DataProvider index (" + param1 + ") is not in acceptable range (0 - " + param2 + ")");
  204.          }
  205.       }
  206.       
  207.       public function addItemsAt(param1:Object, param2:uint) : void
  208.       {
  209.          checkIndex(param2,data.length);
  210.          var _loc3_:Array = getDataFromObject(param1);
  211.          dispatchPreChangeEvent(DataChangeType.ADD,_loc3_,param2,param2 + _loc3_.length - 1);
  212.          data.splice.apply(data,[param2,0].concat(_loc3_));
  213.          dispatchChangeEvent(DataChangeType.ADD,_loc3_,param2,param2 + _loc3_.length - 1);
  214.       }
  215.       
  216.       public function replaceItem(param1:Object, param2:Object) : Object
  217.       {
  218.          var _loc3_:int = getItemIndex(param2);
  219.          if(_loc3_ != -1)
  220.          {
  221.             return replaceItemAt(param1,_loc3_);
  222.          }
  223.          return null;
  224.       }
  225.       
  226.       public function removeItem(param1:Object) : Object
  227.       {
  228.          var _loc2_:int = getItemIndex(param1);
  229.          if(_loc2_ != -1)
  230.          {
  231.             return removeItemAt(_loc2_);
  232.          }
  233.          return null;
  234.       }
  235.       
  236.       public function merge(param1:Object) : void
  237.       {
  238.          var _loc6_:Object = null;
  239.          var _loc2_:Array = getDataFromObject(param1);
  240.          var _loc3_:uint = _loc2_.length;
  241.          var _loc4_:uint = data.length;
  242.          dispatchPreChangeEvent(DataChangeType.ADD,data.slice(_loc4_,data.length),_loc4_,this.data.length - 1);
  243.          var _loc5_:uint = 0;
  244.          while(_loc5_ < _loc3_)
  245.          {
  246.             _loc6_ = _loc2_[_loc5_];
  247.             if(getItemIndex(_loc6_) == -1)
  248.             {
  249.                data.push(_loc6_);
  250.             }
  251.             _loc5_++;
  252.          }
  253.          if(data.length > _loc4_)
  254.          {
  255.             dispatchChangeEvent(DataChangeType.ADD,data.slice(_loc4_,data.length),_loc4_,this.data.length - 1);
  256.          }
  257.          else
  258.          {
  259.             dispatchChangeEvent(DataChangeType.ADD,[],-1,-1);
  260.          }
  261.       }
  262.       
  263.       public function replaceItemAt(param1:Object, param2:uint) : Object
  264.       {
  265.          checkIndex(param2,data.length - 1);
  266.          var _loc3_:Array = [data[param2]];
  267.          dispatchPreChangeEvent(DataChangeType.REPLACE,_loc3_,param2,param2);
  268.          data[param2] = param1;
  269.          dispatchChangeEvent(DataChangeType.REPLACE,_loc3_,param2,param2);
  270.          return _loc3_[0];
  271.       }
  272.       
  273.       public function invalidate() : void
  274.       {
  275.          dispatchEvent(new DataChangeEvent(DataChangeEvent.DATA_CHANGE,DataChangeType.INVALIDATE_ALL,data.concat(),0,data.length));
  276.       }
  277.       
  278.       public function removeAll() : void
  279.       {
  280.          var _loc1_:Array = data.concat();
  281.          dispatchPreChangeEvent(DataChangeType.REMOVE_ALL,_loc1_,0,_loc1_.length);
  282.          data = [];
  283.          dispatchChangeEvent(DataChangeType.REMOVE_ALL,_loc1_,0,_loc1_.length);
  284.       }
  285.    }
  286. }
  287.  
  288.