home *** CD-ROM | disk | FTP | other *** search
/ 600 Games / 600games.iso / Nave / sky-chopper.swf / scripts / __Packages / mx / controls / treeclasses / TreeDataProvider.as
Encoding:
Text File  |  2005-09-29  |  5.3 KB  |  190 lines

  1. class mx.controls.treeclasses.TreeDataProvider extends Object
  2. {
  3.    var childNodes;
  4.    var appendChild;
  5.    var insertBefore;
  6.    var parentNode;
  7.    var removeNode;
  8.    static var mixinProps = ["addTreeNode","addTreeNodeAt","getTreeNodeAt","removeTreeNodeAt","getRootNode","getDepth","removeAll","removeTreeNode","updateViews"];
  9.    static var evtDipatcher = mx.events.EventDispatcher;
  10.    static var mixins = new mx.controls.treeclasses.TreeDataProvider();
  11.    static var blankXML = new XML();
  12.    static var largestID = 0;
  13.    function TreeDataProvider()
  14.    {
  15.       super();
  16.    }
  17.    static function Initialize(obj)
  18.    {
  19.       obj = obj.prototype;
  20.       if(obj.addTreeNode != undefined)
  21.       {
  22.          return false;
  23.       }
  24.       var _loc4_ = mx.controls.treeclasses.TreeDataProvider.mixinProps;
  25.       var _loc5_ = _loc4_.length;
  26.       var _loc2_ = 0;
  27.       while(_loc2_ < _loc5_)
  28.       {
  29.          obj[_loc4_[_loc2_]] = mx.controls.treeclasses.TreeDataProvider.mixins[_loc4_[_loc2_]];
  30.          _global.ASSetPropFlags(obj,_loc4_[_loc2_],1);
  31.          _loc2_ = _loc2_ + 1;
  32.       }
  33.       mx.events.EventDispatcher.initialize(obj);
  34.       _global.ASSetPropFlags(obj,"addEventListener",1);
  35.       _global.ASSetPropFlags(obj,"removeEventListener",1);
  36.       _global.ASSetPropFlags(obj,"dispatchEvent",1);
  37.       _global.ASSetPropFlags(obj,"dispatchQueue",1);
  38.       _global.ASSetPropFlags(obj,"createEvent",1);
  39.       return true;
  40.    }
  41.    function createProp(obj, propName, setter)
  42.    {
  43.       var p = propName.charAt(0).toUpperCase() + propName.substr(1);
  44.       var _loc2_ = null;
  45.       var _loc4_ = function(Void)
  46.       {
  47.          return this["get" + p]();
  48.       };
  49.       if(setter)
  50.       {
  51.          _loc2_ = function(val)
  52.          {
  53.             this["set" + p](val);
  54.          };
  55.       }
  56.       obj.addProperty(propName,_loc4_,_loc2_);
  57.    }
  58.    static function convertToNode(tag, arg, data)
  59.    {
  60.       if(typeof arg == "string")
  61.       {
  62.          var _loc2_ = mx.controls.treeclasses.TreeDataProvider.blankXML.createElement(tag);
  63.          _loc2_.attributes.label = arg;
  64.          if(data != undefined)
  65.          {
  66.             _loc2_.attributes.data = data;
  67.          }
  68.          return _loc2_;
  69.       }
  70.       if(arg instanceof XML)
  71.       {
  72.          return arg.firstChild.cloneNode(true);
  73.       }
  74.       if(arg instanceof XMLNode)
  75.       {
  76.          return arg;
  77.       }
  78.       if(typeof arg == "object")
  79.       {
  80.          _loc2_ = mx.controls.treeclasses.TreeDataProvider.blankXML.createElement(tag);
  81.          for(var _loc3_ in arg)
  82.          {
  83.             _loc2_.attributes[_loc3_] = arg[_loc3_];
  84.          }
  85.          if(data != undefined)
  86.          {
  87.             _loc2_.attributes.data = data;
  88.          }
  89.          return _loc2_;
  90.       }
  91.    }
  92.    function addTreeNode(arg, data)
  93.    {
  94.       return this.addTreeNodeAt(this.childNodes.length,arg,data);
  95.    }
  96.    function addTreeNodeAt(index, arg, data)
  97.    {
  98.       if(index > this.childNodes.length)
  99.       {
  100.          return undefined;
  101.       }
  102.       var _loc2_ = undefined;
  103.       if(arg instanceof XMLNode)
  104.       {
  105.          _loc2_ = arg.removeTreeNode();
  106.       }
  107.       else
  108.       {
  109.          _loc2_ = mx.controls.treeclasses.TreeDataProvider.convertToNode("node",arg,data);
  110.       }
  111.       if(index >= this.childNodes.length)
  112.       {
  113.          this.appendChild(_loc2_);
  114.       }
  115.       else
  116.       {
  117.          this.insertBefore(_loc2_,this.childNodes[index]);
  118.       }
  119.       this.updateViews({eventName:"addNode",node:_loc2_,parentNode:this,index:index});
  120.       return _loc2_;
  121.    }
  122.    function getTreeNodeAt(index)
  123.    {
  124.       return this.childNodes[index];
  125.    }
  126.    function removeTreeNodeAt(index)
  127.    {
  128.       var _loc2_ = this.childNodes[index];
  129.       _loc2_.removeNode();
  130.       this.updateViews({eventName:"removeNode",node:_loc2_,parentNode:this,index:index});
  131.       return _loc2_;
  132.    }
  133.    function removeTreeNode()
  134.    {
  135.       var _loc4_ = this.parentNode;
  136.       var _loc7_ = undefined;
  137.       var _loc3_ = 0;
  138.       var _loc2_ = this.parentNode.firstChild;
  139.       while(_loc2_ != undefined)
  140.       {
  141.          if(_loc2_ == this)
  142.          {
  143.             _loc7_ = _loc3_;
  144.             break;
  145.          }
  146.          _loc3_ = _loc3_ + 1;
  147.          _loc2_ = _loc2_.nextSibling;
  148.       }
  149.       if(_loc7_ != undefined)
  150.       {
  151.          var _loc9_ = this.getRootNode();
  152.          this.removeNode();
  153.          _loc4_.updateViews({eventName:"removeNode",node:this,parentNode:_loc4_,index:_loc7_});
  154.       }
  155.       return this;
  156.    }
  157.    function removeAll()
  158.    {
  159.       while(this.childNodes.length > 0)
  160.       {
  161.          this.removeTreeNodeAt(this.childNodes.length - 1);
  162.       }
  163.       var _loc3_ = this.getRootNode();
  164.       this.updateViews({eventName:"updateTree"});
  165.    }
  166.    function getRootNode()
  167.    {
  168.       var _loc2_ = this;
  169.       while(_loc2_.parentNode != undefined && _loc2_.isTreeRoot == undefined)
  170.       {
  171.          _loc2_ = _loc2_.parentNode;
  172.       }
  173.       return _loc2_;
  174.    }
  175.    function updateViews(eventObj)
  176.    {
  177.       var _loc2_ = this;
  178.       eventObj.target = this;
  179.       eventObj.type = "modelChanged";
  180.       while(_loc2_ != undefined)
  181.       {
  182.          if(_loc2_.isTreeRoot || _loc2_.parentNode == undefined)
  183.          {
  184.             _loc2_.dispatchEvent(eventObj);
  185.          }
  186.          _loc2_ = _loc2_.parentNode;
  187.       }
  188.    }
  189. }
  190.