X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/3789b528d8dd8aad4558e38e22d775bcab1cbd36..6746dc89c47ed01b165cc1152533605f97eb8e8d:/docs/source/DataViewModel.html diff --git a/docs/source/DataViewModel.html b/docs/source/DataViewModel.html index 0b5e13c9..9a8c026b 100644 --- a/docs/source/DataViewModel.html +++ b/docs/source/DataViewModel.html @@ -21,20 +21,38 @@ */ Ext.define('Ext.selection.DataViewModel', { extend: 'Ext.selection.Model', - + requires: ['Ext.util.KeyNav'], deselectOnContainerClick: true, - + /** * @cfg {Boolean} enableKeyNav - * + * * Turns on/off keyboard navigation within the DataView. Defaults to true. */ enableKeyNav: true, - + constructor: function(cfg){ this.addEvents( + /** + * @event beforedeselect + * Fired before a record is deselected. If any listener returns false, the + * deselection is cancelled. + * @param {Ext.selection.DataViewModel} this + * @param {Ext.data.Model} record The deselected record + */ + 'beforedeselect', + + /** + * @event beforeselect + * Fired before a record is selected. If any listener returns false, the + * selection is cancelled. + * @param {Ext.selection.DataViewModel} this + * @param {Ext.data.Model} record The selected record + */ + 'beforeselect', + /** * @event deselect * Fired after a record is deselected @@ -42,7 +60,7 @@ Ext.define('Ext.selection.DataViewModel', { * @param {Ext.data.Model} record The deselected record */ 'deselect', - + /** * @event select * Fired after a record is selected @@ -53,7 +71,7 @@ Ext.define('Ext.selection.DataViewModel', { ); this.callParent(arguments); }, - + bindComponent: function(view) { var me = this, eventListeners = { @@ -83,15 +101,15 @@ Ext.define('Ext.selection.DataViewModel', { this.deselectAll(); } }, - + initKeyNav: function(view) { var me = this; - + if (!view.rendered) { view.on('render', Ext.Function.bind(me.initKeyNav, me, [view], 0), me, {single: true}); return; } - + view.el.set({ tabIndex: -1 }); @@ -103,7 +121,7 @@ Ext.define('Ext.selection.DataViewModel', { scope: me }); }, - + onNavKey: function(step) { step = step || 1; var me = this, @@ -111,42 +129,39 @@ Ext.define('Ext.selection.DataViewModel', { selected = me.getSelection()[0], numRecords = me.view.store.getCount(), idx; - + if (selected) { idx = view.indexOf(view.getNode(selected)) + step; } else { idx = 0; } - + if (idx < 0) { idx = numRecords - 1; } else if (idx >= numRecords) { idx = 0; } - + me.select(idx); }, // Allow the DataView to update the ui - onSelectChange: function(record, isSelected, suppressEvent) { + onSelectChange: function(record, isSelected, suppressEvent, commitFn) { var me = this, view = me.view, - allowSelect = true; - - if (isSelected) { - if (!suppressEvent) { - allowSelect = me.fireEvent('beforeselect', me, record) !== false; - } - if (allowSelect) { + eventName = isSelected ? 'select' : 'deselect'; + + if ((suppressEvent || me.fireEvent('before' + eventName, me, record)) !== false && + commitFn() !== false) { + + if (isSelected) { view.onItemSelect(record); - if (!suppressEvent) { - me.fireEvent('select', me, record); - } + } else { + view.onItemDeselect(record); } - } else { - view.onItemDeselect(record); + if (!suppressEvent) { - me.fireEvent('deselect', me, record); + me.fireEvent(eventName, me, record); } } }