/**
* @class Ext.menu.CheckItem
* @extends Ext.menu.Item
*/
Ext.define('Ext.menu.CheckItem', {
extend: 'Ext.menu.Item',
alias: 'widget.menucheckitem',
checkedCls: Ext.baseCSSPrefix + 'menu-item-checked',
groupCls: Ext.baseCSSPrefix + 'menu-group-item',
hideOnClick: false,
uncheckedCls: Ext.baseCSSPrefix + 'menu-item-unchecked',
afterRender: function() {
var me = this;
Ext.menu.CheckItem.superclass.afterRender.call(me);
me.checked = !me.checked;
me.setChecked(!me.checked, true);
},
initComponent: function() {
var me = this;
me.addEvents(
/**
* @event beforecheckchange
* Fires before a change event. Return false to cancel.
* @param {Ext.menu.CheckItem} this
* @param {Boolean} checked
*/
'beforecheckchange',
/**
* @event beforecheckchange
* Fires after a change event.
* @param {Ext.menu.CheckItem} this
* @param {Boolean} checked
*/
'checkchange'
);
Ext.menu.MenuMgr.registerCheckable(me);
if (me.group) {
me.baseCls += ' ' + me.groupCls;
if (me.initialConfig.hideOnClick !== false) {
me.hideOnClick = true;
}
}
Ext.menu.CheckItem.superclass.initComponent.call(me);
if (me.checkHandler) {
me.on('checkchange', me.checkHandler, me.scope);
}
},
onClick: function(e) {
var me = this;
if(!me.disabled && !(me.checked && me.group)) {
me.setChecked(!me.checked);
}
Ext.menu.CheckItem.superclass.onClick.call(me, e);
},
onDestroy: function() {
Ext.menu.MenuMgr.unregisterCheckable(this);
Ext.menu.CheckItem.superclass.onDestroy.call(this);
},
setChecked: function(checked, suppressEvents) {
var me = this;
if (me.checked !== checked && (suppressEvents || me.fireEvent('beforecheckchange', me, checked) !== false)) {
me.setIconClass(me[(checked ? '' : 'un') + 'checkedCls']);
me.checked = checked;
Ext.menu.MenuMgr.onCheckChange(me, checked);
if (!suppressEvents) {
me.fireEvent('checkchange', me, checked);
}
}
}
});