TreeSelection.js 3.7 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.grid.TreeSelection"]){dojo._hasResource["dojox.grid.TreeSelection"]=true;dojo.provide("dojox.grid.TreeSelection");dojo.require("dojox.grid.DataSelection");dojo.declare("dojox.grid.TreeSelection",dojox.grid.DataSelection,{setMode:function(_1){this.selected={};this.sorted_sel=[];this.sorted_ltos={};this.sorted_stol={};dojox.grid.DataSelection.prototype.setMode.call(this,_1);},addToSelection:function(_2){if(this.mode=="none"){return;}var _3=null;if(typeof _2=="number"||typeof _2=="string"){_3=_2;}else{_3=this.grid.getItemIndex(_2);}if(this.selected[_3]){this.selectedIndex=_3;}else{if(this.onCanSelect(_3)!==false){this.selectedIndex=_3;var _4=dojo.query("tr[dojoxTreeGridPath='"+_3+"']",this.grid.domNode);if(_4.length){dojo.attr(_4[0],"aria-selected","true");}this._beginUpdate();this.selected[_3]=true;this._insertSortedSelection(_3);this.onSelected(_3);this._endUpdate();}}},deselect:function(_5){if(this.mode=="none"){return;}var _6=null;if(typeof _5=="number"||typeof _5=="string"){_6=_5;}else{_6=this.grid.getItemIndex(_5);}if(this.selectedIndex==_6){this.selectedIndex=-1;}if(this.selected[_6]){if(this.onCanDeselect(_6)===false){return;}var _7=dojo.query("tr[dojoxTreeGridPath='"+_6+"']",this.grid.domNode);if(_7.length){dojo.attr(_7[0],"aria-selected","false");}this._beginUpdate();delete this.selected[_6];this._removeSortedSelection(_6);this.onDeselected(_6);this._endUpdate();}},getSelected:function(){var _8=[];for(var i in this.selected){if(this.selected[i]){_8.push(this.grid.getItem(i));}}return _8;},getSelectedCount:function(){var c=0;for(var i in this.selected){if(this.selected[i]){c++;}}return c;},_bsearch:function(v){var o=this.sorted_sel;var h=o.length-1,l=0,m;while(l<=h){var _9=this._comparePaths(o[m=(l+h)>>1],v);if(_9<0){l=m+1;continue;}if(_9>0){h=m-1;continue;}return m;}return _9<0?m-_9:m;},_comparePaths:function(a,b){for(var i=0,l=(a.length<b.length?a.length:b.length);i<l;i++){if(a[i]<b[i]){return -1;}if(a[i]>b[i]){return 1;}}if(a.length<b.length){return -1;}if(a.length>b.length){return 1;}return 0;},_insertSortedSelection:function(_a){_a=String(_a);var s=this.sorted_sel;var sl=this.sorted_ltos;var ss=this.sorted_stol;var _b=_a.split("/");_b=dojo.map(_b,function(_c){return parseInt(_c,10);});sl[_b]=_a;ss[_a]=_b;if(s.length===0){s.push(_b);return;}if(s.length==1){var _d=this._comparePaths(s[0],_b);if(_d==1){s.unshift(_b);}else{s.push(_b);}return;}var _e=this._bsearch(_b);this.sorted_sel.splice(_e,0,_b);},_removeSortedSelection:function(_f){_f=String(_f);var s=this.sorted_sel;var sl=this.sorted_ltos;var ss=this.sorted_stol;if(s.length===0){return;}var _10=ss[_f];if(!_10){return;}var idx=this._bsearch(_10);if(idx>-1){delete sl[_10];delete ss[_f];s.splice(idx,1);}},getFirstSelected:function(){if(!this.sorted_sel.length||this.mode=="none"){return -1;}var _11=this.sorted_sel[0];if(!_11){return -1;}_11=this.sorted_ltos[_11];if(!_11){return -1;}return _11;},getNextSelected:function(_12){if(!this.sorted_sel.length||this.mode=="none"){return -1;}_12=String(_12);var _13=this.sorted_stol[_12];if(!_13){return -1;}var idx=this._bsearch(_13);var _14=this.sorted_sel[idx+1];if(!_14){return -1;}return this.sorted_ltos[_14];},_range:function(_15,_16,_17){if(!dojo.isString(_15)&&_15<0){_15=_16;}var _18=this.grid.layout.cells,_19=this.grid.store,_1a=this.grid;_15=new dojox.grid.TreePath(String(_15),_1a);_16=new dojox.grid.TreePath(String(_16),_1a);if(_15.compare(_16)>0){var tmp=_15;_15=_16;_16=tmp;}var _1b=_15._str,_1c=_16._str;_17(_1b);var p=_15;while((p=p.next())){if(p._str==_1c){break;}_17(p._str);}_17(_1c);}});}