X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/6e39d509471fe9b4e2660e0d1631b350d0c66f40..e9397f91ede62d446aed37d23256e8938fc4c335:/docs/source/RowSelectionModel.html?ds=sidebyside diff --git a/docs/source/RowSelectionModel.html b/docs/source/RowSelectionModel.html index 07fad07c..1822e9c6 100644 --- a/docs/source/RowSelectionModel.html +++ b/docs/source/RowSelectionModel.html @@ -1,12 +1,18 @@ - -
- -/** + + + ++ \ No newline at end of fileThe source code + + + + +/*! + * Ext JS Library 3.3.1 + * Copyright(c) 2006-2010 Sencha Inc. + * licensing@sencha.com + * http://www.sencha.com/license + */ +/** * @class Ext.grid.RowSelectionModel * @extends Ext.grid.AbstractSelectionModel * The default SelectionModel used by {@link Ext.grid.GridPanel}. @@ -83,34 +89,8 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { } this.rowNav = new Ext.KeyNav(this.grid.getGridEl(), { - 'up' : function(e){ - if(!e.shiftKey || this.singleSelect){ - this.selectPrevious(false); - }else if(this.last !== false && this.lastActive !== false){ - var last = this.last; - this.selectRange(this.last, this.lastActive-1); - this.grid.getView().focusRow(this.lastActive); - if(last !== false){ - this.last = last; - } - }else{ - this.selectFirstRow(); - } - }, - 'down' : function(e){ - if(!e.shiftKey || this.singleSelect){ - this.selectNext(false); - }else if(this.last !== false && this.lastActive !== false){ - var last = this.last; - this.selectRange(this.last, this.lastActive+1); - this.grid.getView().focusRow(this.lastActive); - if(last !== false){ - this.last = last; - } - }else{ - this.selectFirstRow(); - } - }, + up: this.onKeyPress, + down: this.onKeyPress, scope: this }); @@ -121,14 +101,38 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { rowremoved: this.onRemove }); }, + + onKeyPress : function(e, name){ + var up = name == 'up', + method = up ? 'selectPrevious' : 'selectNext', + add = up ? -1 : 1, + last; + if(!e.shiftKey || this.singleSelect){ + this[method](false); + }else if(this.last !== false && this.lastActive !== false){ + last = this.last; + this.selectRange(this.last, this.lastActive + add); + this.grid.getView().focusRow(this.lastActive); + if(last !== false){ + this.last = last; + } + }else{ + this.selectFirstRow(); + } + }, // private onRefresh : function(){ - var ds = this.grid.store, index; - var s = this.getSelections(); + var ds = this.grid.store, + s = this.getSelections(), + i = 0, + len = s.length, + index, r; + + this.silent = true; this.clearSelections(true); - for(var i = 0, len = s.length; i < len; i++){ - var r = s[i]; + for(; i < len; i++){ + r = s[i]; if((index = ds.indexOfId(r.id)) != -1){ this.selectRow(index, true); } @@ -136,6 +140,7 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { if(s.length != this.selections.getCount()){ this.fireEvent('selectionchange', this); } + this.silent = false; }, // private @@ -161,8 +166,10 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { if(!keepExisting){ this.clearSelections(); } - var ds = this.grid.store; - for(var i = 0, len = records.length; i < len; i++){ + var ds = this.grid.store, + i = 0, + len = records.length; + for(; i < len; i++){ this.selectRow(ds.indexOf(records[i]), true); } }, @@ -260,8 +267,11 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { * @return {Boolean} true if all selections were iterated */ each : function(fn, scope){ - var s = this.getSelections(); - for(var i = 0, len = s.length; i < len; i++){ + var s = this.getSelections(), + i = 0, + len = s.length; + + for(; i < len; i++){ if(fn.call(scope || this, s[i], i) === false){ return false; } @@ -280,8 +290,8 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { return; } if(fast !== true){ - var ds = this.grid.store; - var s = this.selections; + var ds = this.grid.store, + s = this.selections; s.each(function(r){ this.deselectRow(ds.indexOfId(r.id)); }, this); @@ -439,8 +449,10 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { if(!preventViewNotify){ this.grid.getView().onRowSelect(index); } - this.fireEvent('rowselect', this, index, r); - this.fireEvent('selectionchange', this); + if(!this.silent){ + this.fireEvent('rowselect', this, index, r); + this.fireEvent('selectionchange', this); + } } }, @@ -474,13 +486,6 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { } }, - // private - restoreLast : function(){ - if(this._last){ - this.last = this._last; - } - }, - // private acceptsNav : function(row, col, cm){ return !cm.isHidden(col) && cm.isCellEditable(col, row); @@ -493,8 +498,9 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { g = this.grid, last = g.lastEdit, ed = g.activeEditor, + shift = e.shiftKey, ae, last, r, c; - var shift = e.shiftKey; + if(k == e.TAB){ e.stopEvent(); ed.completeEdit(); @@ -516,9 +522,7 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { r = newCell[0]; c = newCell[1]; - if(last.row != r){ - this.selectRow(r); // *** highlight newly-selected cell and update selection - } + this.onEditorSelect(r, last.row); if(g.isEditor && g.editing){ // *** handle tabbing while editorgrid is in edit mode ae = g.activeEditor; @@ -531,13 +535,18 @@ Ext.grid.RowSelectionModel = Ext.extend(Ext.grid.AbstractSelectionModel, { } }, - destroy : function(){ - if(this.rowNav){ - this.rowNav.disable(); - this.rowNav = null; + onEditorSelect: function(row, lastRow){ + if(lastRow != row){ + this.selectRow(row); // *** highlight newly-selected cell and update selection } + }, + + destroy : function(){ + Ext.destroy(this.rowNav); + this.rowNav = null; Ext.grid.RowSelectionModel.superclass.destroy.call(this); } -});- +}); +