Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource['dojox.grid._grid.selection']){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource['dojox.grid._grid.selection'] = true;dojo.provide('dojox.grid._grid.selection');dojo.declare("dojox.grid.selection", null, {// summary:// Manages row selection for grid. Owned by grid and used internally// for selection. Override to implement custom selection.constructor: function(inGrid){this.grid = inGrid;this.selected = [];},multiSelect: true,selected: null,updating: 0,selectedIndex: -1,onCanSelect: function(inIndex){return this.grid.onCanSelect(inIndex);},onCanDeselect: function(inIndex){return this.grid.onCanDeselect(inIndex);},onSelected: function(inIndex){return this.grid.onSelected(inIndex);},onDeselected: function(inIndex){return this.grid.onDeselected(inIndex);},//onSetSelected: function(inIndex, inSelect) { };onChanging: function(){},onChanged: function(){return this.grid.onSelectionChanged();},isSelected: function(inIndex){return this.selected[inIndex];},getFirstSelected: function(){for(var i=0, l=this.selected.length; i<l; i++){if(this.selected[i]){return i;}}return -1;},getNextSelected: function(inPrev){for(var i=inPrev+1, l=this.selected.length; i<l; i++){if(this.selected[i]){return i;}}return -1;},getSelected: function(){var result = [];for(var i=0, l=this.selected.length; i<l; i++){if(this.selected[i]){result.push(i);}}return result;},getSelectedCount: function(){var c = 0;for(var i=0; i<this.selected.length; i++){if(this.selected[i]){c++;}}return c;},beginUpdate: function(){if(this.updating == 0){this.onChanging();}this.updating++;},endUpdate: function(){this.updating--;if(this.updating == 0){this.onChanged();}},select: function(inIndex){this.unselectAll(inIndex);this.addToSelection(inIndex);},addToSelection: function(inIndex){inIndex = Number(inIndex);if(this.selected[inIndex]){this.selectedIndex = inIndex;}else{if(this.onCanSelect(inIndex) !== false){this.selectedIndex = inIndex;this.beginUpdate();this.selected[inIndex] = true;this.grid.onSelected(inIndex);//this.onSelected(inIndex);//this.onSetSelected(inIndex, true);this.endUpdate();}}},deselect: function(inIndex){inIndex = Number(inIndex);if(this.selectedIndex == inIndex){this.selectedIndex = -1;}if(this.selected[inIndex]){if(this.onCanDeselect(inIndex) === false){return;}this.beginUpdate();delete this.selected[inIndex];this.grid.onDeselected(inIndex);//this.onDeselected(inIndex);//this.onSetSelected(inIndex, false);this.endUpdate();}},setSelected: function(inIndex, inSelect){this[(inSelect ? 'addToSelection' : 'deselect')](inIndex);},toggleSelect: function(inIndex){this.setSelected(inIndex, !this.selected[inIndex])},insert: function(inIndex){this.selected.splice(inIndex, 0, false);if(this.selectedIndex >= inIndex){this.selectedIndex++;}},remove: function(inIndex){this.selected.splice(inIndex, 1);if(this.selectedIndex >= inIndex){this.selectedIndex--;}},unselectAll: function(inExcept){for(var i in this.selected){if((i!=inExcept)&&(this.selected[i]===true)){this.deselect(i);}}},shiftSelect: function(inFrom, inTo){var s = (inFrom >= 0 ? inFrom : inTo), e = inTo;if(s > e){e = s;s = inTo;}for(var i=s; i<=e; i++){this.addToSelection(i);}},clickSelect: function(inIndex, inCtrlKey, inShiftKey){this.beginUpdate();if(!this.multiSelect){this.select(inIndex);}else{var lastSelected = this.selectedIndex;if(!inCtrlKey){this.unselectAll(inIndex);}if(inShiftKey){this.shiftSelect(lastSelected, inIndex);}else if(inCtrlKey){this.toggleSelect(inIndex);}else{this.addToSelection(inIndex)}}this.endUpdate();},clickSelectEvent: function(e){this.clickSelect(e.rowIndex, e.ctrlKey, e.shiftKey);},clear: function(){this.beginUpdate();this.unselectAll();this.endUpdate();}});}