X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/3789b528d8dd8aad4558e38e22d775bcab1cbd36..f562e4c6e5fac7bcb445985b99acbea4d706e6f0:/docs/source/DataViewModel.html?ds=inline
diff --git a/docs/source/DataViewModel.html b/docs/source/DataViewModel.html
index 0b5e13c9..5ac54bef 100644
--- a/docs/source/DataViewModel.html
+++ b/docs/source/DataViewModel.html
@@ -3,8 +3,8 @@
The source code
-
-
+
+
@@ -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.
+ *
+ * Turns on/off keyboard navigation within the DataView.
*/
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,44 +129,46 @@ 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);
}
}
+ },
+
+ destroy: function(){
+ Ext.destroy(this.keyNav);
+ this.callParent();
}
});