Blame | Last modification | View Log | RSS feed
/** Ext JS Library 2.0.2* Copyright(c) 2006-2008, Ext JS, LLC.* licensing@extjs.com** http://extjs.com/license*//*** @class Ext.menu.BaseItem* @extends Ext.Component* The base class for all items that render into menus. BaseItem provides default rendering, activated state* management and base configuration options shared by all menu components.* @constructor* Creates a new BaseItem* @param {Object} config Configuration options*/Ext.menu.BaseItem = function(config){Ext.menu.BaseItem.superclass.constructor.call(this, config);this.addEvents(/*** @event click* Fires when this item is clicked* @param {Ext.menu.BaseItem} this* @param {Ext.EventObject} e*/'click',/*** @event activate* Fires when this item is activated* @param {Ext.menu.BaseItem} this*/'activate',/*** @event deactivate* Fires when this item is deactivated* @param {Ext.menu.BaseItem} this*/'deactivate');if(this.handler){this.on("click", this.handler, this.scope);}};Ext.extend(Ext.menu.BaseItem, Ext.Component, {/*** @cfg {Function} handler* A function that will handle the click event of this menu item (defaults to undefined)*//*** @cfg {Object} scope* The scope in which the handler function will be called.*//*** @cfg {Boolean} canActivate True if this item can be visually activated (defaults to false)*/canActivate : false,/*** @cfg {String} activeClass The CSS class to use when the item becomes activated (defaults to "x-menu-item-active")*/activeClass : "x-menu-item-active",/*** @cfg {Boolean} hideOnClick True to hide the containing menu after this item is clicked (defaults to true)*/hideOnClick : true,/*** @cfg {Number} hideDelay Length of time in milliseconds to wait before hiding after a click (defaults to 100)*/hideDelay : 100,// privatectype: "Ext.menu.BaseItem",// privateactionMode : "container",// privaterender : function(container, parentMenu){this.parentMenu = parentMenu;Ext.menu.BaseItem.superclass.render.call(this, container);this.container.menuItemId = this.id;},// privateonRender : function(container, position){this.el = Ext.get(this.el);container.dom.appendChild(this.el.dom);},/*** Sets the function that will handle click events for this item (equivalent to passing in the {@link #handler}* config property). If an existing handler is already registered, it will be unregistered for you.* @param {Function} handler The function that should be called on click* @param {Object} scope The scope that should be passed to the handler*/setHandler : function(handler, scope){if(this.handler){this.un("click", this.handler, this.scope);}this.on("click", this.handler = handler, this.scope = scope);},// privateonClick : function(e){if(!this.disabled && this.fireEvent("click", this, e) !== false&& this.parentMenu.fireEvent("itemclick", this, e) !== false){this.handleClick(e);}else{e.stopEvent();}},// privateactivate : 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;},// privatedeactivate : function(){this.container.removeClass(this.activeClass);this.fireEvent("deactivate", this);},// privateshouldDeactivate : function(e){return !this.region || !this.region.contains(e.getPoint());},// privatehandleClick : function(e){if(this.hideOnClick){this.parentMenu.hide.defer(this.hideDelay, this.parentMenu, [true]);}},// privateexpandMenu : function(autoActivate){// do nothing},// privatehideMenu : function(){// do nothing}});