BaseItem.js

/**
 * @class Ext.menu.BaseItem
 * @constructor
 * @param {Object} config
 */
Ext.menu.BaseItem = function(config){
    Ext.menu.BaseItem.superclass.constructor.call(this, config);

    this.addEvents({
        click: true,
        activate : true,
        deactivate : true
    });

    if(this.handler){
        this.on('click', this.handler, this.scope, true);
    }
};

Ext.extend(Ext.menu.BaseItem, Ext.Component, {
    canActivate : false,
    activeClass : 'x-menu-item-active',
    hideOnClick : true,
    hideDelay : 100,
    ctype: 'Ext.menu.BaseItem',
    actionMode : 'container',

    render : function(container, parentMenu){
        this.parentMenu = parentMenu;
        Ext.menu.BaseItem.superclass.render.call(this, container);
        this.container.menuItemId = this.id;
    },

    onRender : function(container){
        this.el = Ext.get(this.el);
        container.dom.appendChild(this.el.dom);
    },

    onClick : function(e){
        if(!this.disabled && this.fireEvent('click', this, e) !== false
                && this.parentMenu.fireEvent('itemclick', this, e) !== false){
            this.handleClick(e);
        }else{
            e.stopEvent();
        }
    },

    activate : function(){
        if(this.disabled){
            return false;
        }
        var li = this.container;
        li.addClass(this.activeClass);
        this.region = li.getRegion().adjust(2, 2, -2, -2);
        this.fireEvent('activate', this);
        return true;
    },

    deactivate : function(){
        this.container.removeClass(this.activeClass);
        this.fireEvent('deactivate', this);
    },

    shouldDeactivate : function(e){
        return !this.region || !this.region.contains(e.getPoint());
    },

    handleClick : function(e){
        if(this.hideOnClick){
            this.parentMenu.hide.defer(this.hideDelay, this.parentMenu, [true]);
        }
    },

    expandMenu : function(autoActivate){
        // do nothing
    },

    hideMenu : function(){
        // do nothing
    }
});

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