telegramhangoutsslackgmailskypefacebook-workplaceoutlookemailmicrosoft-teamsdiscordmessengercustom-servicesmacoslinuxwindowsinboxwhatsappicloudtweetdeckhipchat
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
129 lines
3.7 KiB
129 lines
3.7 KiB
9 years ago
|
/**
|
||
|
* @private
|
||
|
*/
|
||
|
Ext.define('Ext.selection.DataViewModel', {
|
||
|
extend: 'Ext.selection.Model',
|
||
|
|
||
|
alias: 'selection.dataviewmodel',
|
||
|
|
||
|
requires: ['Ext.util.KeyNav'],
|
||
|
|
||
|
deselectOnContainerClick: true,
|
||
|
|
||
|
/**
|
||
|
* @cfg {Boolean} [enableKeyNav=true]
|
||
|
*
|
||
|
* @deprecated 5.1.0 Keyboard navigation is a function of the view's {@link Ext.view.NavigationModel navigation model},
|
||
|
* and is enabled for accessibilty purposes.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @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.
|
||
|
* @param {Number} The index within the store of the deselected record.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @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.
|
||
|
* @param {Number} The index within the store of the selected record.
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @event deselect
|
||
|
* Fired after a record is deselected
|
||
|
* @param {Ext.selection.DataViewModel} this
|
||
|
* @param {Ext.data.Model} record The deselected record
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* @event select
|
||
|
* Fired after a record is selected
|
||
|
* @param {Ext.selection.DataViewModel} this
|
||
|
* @param {Ext.data.Model} record The selected record.
|
||
|
* @param {Number} The index within the store of the selected record.
|
||
|
*/
|
||
|
|
||
|
bindComponent: function(view) {
|
||
|
var me = this,
|
||
|
viewListeners;
|
||
|
|
||
|
if (me.view !== view) {
|
||
|
if (me.view) {
|
||
|
me.navigationModel = null;
|
||
|
Ext.destroy(me.viewListeners, me.navigationListeners);
|
||
|
}
|
||
|
me.view = view;
|
||
|
if (view) {
|
||
|
viewListeners = me.getViewListeners();
|
||
|
viewListeners.scope = me;
|
||
|
viewListeners.destroyable = true;
|
||
|
me.navigationModel = view.getNavigationModel();
|
||
|
me.viewListeners = view.on(viewListeners);
|
||
|
me.navigationListeners = me.navigationModel.on({
|
||
|
navigate: me.onNavigate,
|
||
|
scope: me,
|
||
|
destroyable: true
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
getViewListeners: function() {
|
||
|
var me = this,
|
||
|
eventListeners = {};
|
||
|
|
||
|
eventListeners[me.view.triggerCtEvent] = me.onContainerClick;
|
||
|
return eventListeners;
|
||
|
},
|
||
|
|
||
|
onUpdate: function(record){
|
||
|
var view = this.view;
|
||
|
if (view && this.isSelected(record)) {
|
||
|
view.onItemSelect(record);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
onContainerClick: function() {
|
||
|
if (this.deselectOnContainerClick) {
|
||
|
this.deselectAll();
|
||
|
}
|
||
|
},
|
||
|
|
||
|
// Allow the DataView to update the ui
|
||
|
onSelectChange: function(record, isSelected, suppressEvent, commitFn) {
|
||
|
var me = this,
|
||
|
view = me.view,
|
||
|
eventName = isSelected ? 'select' : 'deselect',
|
||
|
recordIndex = me.store.indexOf(record);
|
||
|
|
||
|
if ((suppressEvent || me.fireEvent('before' + eventName, me, record, recordIndex)) !== false &&
|
||
|
commitFn() !== false) {
|
||
|
|
||
|
if (view) {
|
||
|
if (isSelected) {
|
||
|
view.onItemSelect(record);
|
||
|
} else {
|
||
|
view.onItemDeselect(record);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if (!suppressEvent) {
|
||
|
me.fireEvent(eventName, me, record, recordIndex);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
destroy: function() {
|
||
|
this.bindComponent();
|
||
|
Ext.destroy(this.keyNav);
|
||
|
this.callParent();
|
||
|
}
|
||
|
});
|