home *** CD-ROM | disk | FTP | other *** search
/ ftp.novell.com / 2014.06.ftp.novell.com.tar / ftp.novell.com / forge / camtasia.msi / Cabs.w1.cab / fp8_controller.swf2202 / scripts / __Packages / mx / controls / treeclasses / TreeDataProvider.as next >
Text File  |  2009-08-19  |  5KB  |  185 lines

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