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 / camtasia_player.swf83 / scripts / __Packages / mx / controls / listclasses / DataSelector.as < prev    next >
Text File  |  2009-08-17  |  10KB  |  350 lines

  1. class mx.controls.listclasses.DataSelector extends Object
  2. {
  3.    static var mixins = new mx.controls.listclasses.DataSelector();
  4.    static var mixinProps = ["setDataProvider","getDataProvider","addItem","addItemAt","removeAll","removeItemAt","replaceItemAt","sortItemsBy","sortItems","getLength","getItemAt","modelChanged","calcPreferredWidthFromData","calcPreferredHeightFromData","getValue","getSelectedIndex","getSelectedItem","getSelectedIndices","getSelectedItems","selectItem","isSelected","clearSelected","setSelectedIndex","setSelectedIndices"];
  5.    function DataSelector()
  6.    {
  7.       super();
  8.    }
  9.    static function Initialize(obj)
  10.    {
  11.       var _loc3_ = mx.controls.listclasses.DataSelector.mixinProps;
  12.       var _loc4_ = _loc3_.length;
  13.       obj = obj.prototype;
  14.       var _loc1_ = 0;
  15.       while(_loc1_ < _loc4_)
  16.       {
  17.          obj[_loc3_[_loc1_]] = mx.controls.listclasses.DataSelector.mixins[_loc3_[_loc1_]];
  18.          _loc1_ = _loc1_ + 1;
  19.       }
  20.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"dataProvider",true);
  21.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"length",false);
  22.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"value",false);
  23.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"selectedIndex",true);
  24.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"selectedIndices",true);
  25.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"selectedItems",false);
  26.       mx.controls.listclasses.DataSelector.mixins.createProp(obj,"selectedItem",true);
  27.       return true;
  28.    }
  29.    function createProp(obj, propName, setter)
  30.    {
  31.       var p = propName.charAt(0).toUpperCase() + propName.substr(1);
  32.       var _loc2_ = null;
  33.       var _loc4_ = function(Void)
  34.       {
  35.          return this["get" + p]();
  36.       };
  37.       if(setter)
  38.       {
  39.          _loc2_ = function(val)
  40.          {
  41.             this["set" + p](val);
  42.          };
  43.       }
  44.       obj.addProperty(propName,_loc4_,_loc2_);
  45.    }
  46.    function setDataProvider(dP)
  47.    {
  48.       if(this.__vPosition != 0)
  49.       {
  50.          this.setVPosition(0);
  51.       }
  52.       this.clearSelected();
  53.       this.__dataProvider.removeEventListener(this);
  54.       this.__dataProvider = dP;
  55.       dP.addEventListener("modelChanged",this);
  56.       dP.addView(this);
  57.       this.modelChanged({eventName:"updateAll"});
  58.    }
  59.    function getDataProvider(Void)
  60.    {
  61.       return this.__dataProvider;
  62.    }
  63.    function addItemAt(index, label, data)
  64.    {
  65.       if(index < 0 || !this.enabled)
  66.       {
  67.          return undefined;
  68.       }
  69.       var _loc2_ = this.__dataProvider;
  70.       if(_loc2_ == undefined)
  71.       {
  72.          var _loc0_ = null;
  73.          _loc2_ = this.__dataProvider = new Array();
  74.          _loc2_.addEventListener("modelChanged",this);
  75.          index = 0;
  76.       }
  77.       if(typeof label == "object" || typeof _loc2_.getItemAt(0) == "string")
  78.       {
  79.          _loc2_.addItemAt(index,label);
  80.       }
  81.       else
  82.       {
  83.          _loc2_.addItemAt(index,{label:label,data:data});
  84.       }
  85.    }
  86.    function addItem(label, data)
  87.    {
  88.       this.addItemAt(this.__dataProvider.length,label,data);
  89.    }
  90.    function removeItemAt(index)
  91.    {
  92.       return this.__dataProvider.removeItemAt(index);
  93.    }
  94.    function removeAll(Void)
  95.    {
  96.       this.__dataProvider.removeAll();
  97.    }
  98.    function replaceItemAt(index, newLabel, newData)
  99.    {
  100.       if(typeof newLabel == "object")
  101.       {
  102.          this.__dataProvider.replaceItemAt(index,newLabel);
  103.       }
  104.       else
  105.       {
  106.          this.__dataProvider.replaceItemAt(index,{label:newLabel,data:newData});
  107.       }
  108.    }
  109.    function sortItemsBy(fieldName, order)
  110.    {
  111.       this.lastSelID = this.__dataProvider.getItemID(this.lastSelected);
  112.       this.__dataProvider.sortItemsBy(fieldName,order);
  113.    }
  114.    function sortItems(compareFunc, order)
  115.    {
  116.       this.lastSelID = this.__dataProvider.getItemID(this.lastSelected);
  117.       this.__dataProvider.sortItems(compareFunc,order);
  118.    }
  119.    function getLength(Void)
  120.    {
  121.       return this.__dataProvider.length;
  122.    }
  123.    function getItemAt(index)
  124.    {
  125.       return this.__dataProvider.getItemAt(index);
  126.    }
  127.    function modelChanged(eventObj)
  128.    {
  129.       var _loc3_ = eventObj.firstItem;
  130.       var _loc6_ = eventObj.lastItem;
  131.       var _loc7_ = eventObj.eventName;
  132.       if(_loc7_ == undefined)
  133.       {
  134.          _loc7_ = eventObj.event;
  135.          _loc3_ = eventObj.firstRow;
  136.          _loc6_ = eventObj.lastRow;
  137.          if(_loc7_ == "addRows")
  138.          {
  139.             var _loc0_ = null;
  140.             _loc7_ = eventObj.eventName = "addItems";
  141.          }
  142.          else if(_loc7_ == "deleteRows")
  143.          {
  144.             var _loc0_ = null;
  145.             _loc7_ = eventObj.eventName = "removeItems";
  146.          }
  147.          else if(_loc7_ == "updateRows")
  148.          {
  149.             var _loc0_ = null;
  150.             _loc7_ = eventObj.eventName = "updateItems";
  151.          }
  152.       }
  153.       if(_loc7_ == "addItems")
  154.       {
  155.          for(var _loc2_ in this.selected)
  156.          {
  157.             var _loc5_ = this.selected[_loc2_];
  158.             if(_loc5_ != undefined && _loc5_ >= _loc3_)
  159.             {
  160.                this.selected[_loc2_] += _loc6_ - _loc3_ + 1;
  161.             }
  162.          }
  163.       }
  164.       else if(_loc7_ == "removeItems")
  165.       {
  166.          if(this.__dataProvider.length == 0)
  167.          {
  168.             delete this.selected;
  169.          }
  170.          else
  171.          {
  172.             var _loc9_ = eventObj.removedIDs;
  173.             var _loc10_ = _loc9_.length;
  174.             _loc2_ = 0;
  175.             while(_loc2_ < _loc10_)
  176.             {
  177.                var _loc4_ = _loc9_[_loc2_];
  178.                if(this.selected[_loc4_] != undefined)
  179.                {
  180.                   delete this.selected[_loc4_];
  181.                }
  182.                _loc2_ = _loc2_ + 1;
  183.             }
  184.             for(_loc2_ in this.selected)
  185.             {
  186.                if(this.selected[_loc2_] >= _loc3_)
  187.                {
  188.                   this.selected[_loc2_] -= _loc6_ - _loc3_ + 1;
  189.                }
  190.             }
  191.          }
  192.       }
  193.       else if(_loc7_ == "sort")
  194.       {
  195.          if(typeof this.__dataProvider.getItemAt(0) != "object")
  196.          {
  197.             delete this.selected;
  198.          }
  199.          else
  200.          {
  201.             _loc10_ = this.__dataProvider.length;
  202.             _loc2_ = 0;
  203.             while(_loc2_ < _loc10_)
  204.             {
  205.                if(this.isSelected(_loc2_))
  206.                {
  207.                   _loc4_ = this.__dataProvider.getItemID(_loc2_);
  208.                   if(_loc4_ == this.lastSelID)
  209.                   {
  210.                      this.lastSelected = _loc2_;
  211.                   }
  212.                   this.selected[_loc4_] = _loc2_;
  213.                }
  214.                _loc2_ = _loc2_ + 1;
  215.             }
  216.          }
  217.       }
  218.       else if(_loc7_ == "filterModel")
  219.       {
  220.          this.setVPosition(0);
  221.       }
  222.       this.invUpdateControl = true;
  223.       this.invalidate();
  224.    }
  225.    function getValue(Void)
  226.    {
  227.       var _loc2_ = this.getSelectedItem();
  228.       if(typeof _loc2_ != "object")
  229.       {
  230.          return _loc2_;
  231.       }
  232.       return _loc2_.data != undefined ? _loc2_.data : _loc2_.label;
  233.    }
  234.    function getSelectedIndex(Void)
  235.    {
  236.       for(var _loc3_ in this.selected)
  237.       {
  238.          var _loc2_ = this.selected[_loc3_];
  239.          if(_loc2_ != undefined)
  240.          {
  241.             return _loc2_;
  242.          }
  243.       }
  244.    }
  245.    function setSelectedIndex(index)
  246.    {
  247.       if(index >= 0 && index < this.__dataProvider.length && this.enabled)
  248.       {
  249.          delete this.selected;
  250.          this.selectItem(index,true);
  251.          this.lastSelected = index;
  252.          this.invUpdateControl = true;
  253.          this.invalidate();
  254.       }
  255.       else if(index == undefined)
  256.       {
  257.          this.clearSelected();
  258.       }
  259.    }
  260.    function getSelectedIndices(Void)
  261.    {
  262.       var _loc2_ = new Array();
  263.       for(var _loc3_ in this.selected)
  264.       {
  265.          _loc2_.push(this.selected[_loc3_]);
  266.       }
  267.       _loc2_.reverse();
  268.       return _loc2_.length <= 0 ? undefined : _loc2_;
  269.    }
  270.    function setSelectedIndices(indexArray)
  271.    {
  272.       if(this.multipleSelection != true)
  273.       {
  274.          return undefined;
  275.       }
  276.       delete this.selected;
  277.       var _loc3_ = 0;
  278.       while(_loc3_ < indexArray.length)
  279.       {
  280.          var _loc2_ = indexArray[_loc3_];
  281.          if(_loc2_ >= 0 && _loc2_ < this.__dataProvider.length)
  282.          {
  283.             this.selectItem(_loc2_,true);
  284.          }
  285.          _loc3_ = _loc3_ + 1;
  286.       }
  287.       this.invUpdateControl = true;
  288.       this.updateControl();
  289.    }
  290.    function getSelectedItems(Void)
  291.    {
  292.       var _loc3_ = this.getSelectedIndices();
  293.       var _loc4_ = new Array();
  294.       var _loc2_ = 0;
  295.       while(_loc2_ < _loc3_.length)
  296.       {
  297.          _loc4_.push(this.getItemAt(_loc3_[_loc2_]));
  298.          _loc2_ = _loc2_ + 1;
  299.       }
  300.       return _loc4_.length <= 0 ? undefined : _loc4_;
  301.    }
  302.    function getSelectedItem(Void)
  303.    {
  304.       return this.__dataProvider.getItemAt(this.getSelectedIndex());
  305.    }
  306.    function selectItem(index, selectedFlag)
  307.    {
  308.       if(this.selected == undefined)
  309.       {
  310.          this.selected = new Object();
  311.       }
  312.       var _loc2_ = this.__dataProvider.getItemID(index);
  313.       if(_loc2_ == undefined)
  314.       {
  315.          return undefined;
  316.       }
  317.       if(selectedFlag && !this.isSelected(index))
  318.       {
  319.          this.selected[_loc2_] = index;
  320.       }
  321.       else if(!selectedFlag)
  322.       {
  323.          delete this.selected[_loc2_];
  324.       }
  325.    }
  326.    function isSelected(index)
  327.    {
  328.       var _loc2_ = this.__dataProvider.getItemID(index);
  329.       if(_loc2_ == undefined)
  330.       {
  331.          return false;
  332.       }
  333.       return this.selected[_loc2_] != undefined;
  334.    }
  335.    function clearSelected(transition)
  336.    {
  337.       var _loc3_ = 0;
  338.       for(var _loc4_ in this.selected)
  339.       {
  340.          var _loc2_ = this.selected[_loc4_];
  341.          if(_loc2_ != undefined && this.__vPosition <= _loc2_ && _loc2_ < this.__vPosition + this.__rowCount)
  342.          {
  343.             this.rows[_loc2_ - this.__vPosition].drawRow(this.rows[_loc2_ - this.__vPosition].item,"normal",transition && _loc3_ % 3 == 0);
  344.          }
  345.          _loc3_ = _loc3_ + 1;
  346.       }
  347.       delete this.selected;
  348.    }
  349. }
  350.