CheckItem.js

/**
 * @class Ext.menu.CheckItem
 * @extends Ext.menu.Item
 * @constructor
 */
Ext.menu.CheckItem = function(config){
    Ext.menu.CheckItem.superclass.constructor.call(this, config);
    this.addEvents({
        'beforecheckchange' : true,
        'checkchange' : true
    });
};
Ext.extend(Ext.menu.CheckItem, Ext.menu.Item, {
    itemCls : 'x-menu-item x-menu-check-item',
    groupClass : 'x-menu-group-item',
    checked: false,
    ctype: 'Ext.menu.CheckItem',
    
    onRender : function(c){
        Ext.menu.CheckItem.superclass.onRender.apply(this, arguments);
        if(this.group){
            this.el.addClass(this.groupClass);
        }
        Ext.menu.MenuMgr.registerCheckable(this);
        if(this.checked){
            this.checked = false;
            this.setChecked(true);
        }
    },

    destroy : function(){
        if(this.rendered){
            Ext.menu.MenuMgr.unregisterCheckable(this);
        }
        Ext.menu.CheckItem.superclass.destroy.apply(this, arguments);
    },

    /**
     * Set the checked state of this item
     */
    setChecked : function(state){
        if(this.checked != state && this.fireEvent('beforecheckchange', this, state) !== false){
            if(this.container){
                this.container[state ? 'addClass' : 'removeClass']('x-menu-item-checked');
            }
            this.checked = state;
            this.fireEvent('checkchange', this, state);
        }
    },

    handleClick : function(e){
       if(!this.disabled && !(this.checked && this.group)){// disable unselect on radio item
           this.setChecked(!this.checked);
       }
       Ext.menu.CheckItem.superclass.handleClick.apply(this, arguments);
    }
});

yui-ext - Copyright © 2006 Jack Slocum. | Yahoo! UI - Copyright © 2006 Yahoo! Inc.
All rights reserved.