/**
 * @class Ext.layout.MenuLayout
 * @extends Ext.layout.ContainerLayout
 *

Layout manager used by {@link Ext.menu.Menu}. Generally this class should not need to be used directly.


 */

 
Ext.layout.MenuLayout = Ext.extend(Ext.layout.ContainerLayout, {
    monitorResize
: true,

    setContainer
: function(ct){
       
this.monitorResize = !ct.floating;
       
Ext.layout.MenuLayout.superclass.setContainer.call(this, ct);
   
},

    renderItem
: function(c, position, target){
       
if (!this.itemTpl) {
           
this.itemTpl = Ext.layout.MenuLayout.prototype.itemTpl = new Ext.XTemplate(
               
'
  • ',
                       
    '',
                           
    '',
                       
    '
    ',
                   
    '
  • '
               
    );
           
    }

           
    if(c && !c.rendered){
               
    if(Ext.isNumber(position)){
                    position
    = target.dom.childNodes[position];
               
    }
               
    var a = this.getItemArgs(c);

    //          The Component's positionEl is the
  •  it is rendered into
                c
    .render(c.positionEl = position ?
                   
    this.itemTpl.insertBefore(position, a, true) :
                   
    this.itemTpl.append(target, a, true));

    //          Link the containing
  •  to the item.
                c
    .positionEl.menuItemId = c.itemId || c.id;

    //          If rendering a regular Component, and it needs an icon,
    //          move the Component rightwards.
               
    if (!a.isMenuItem && a.needsIcon) {
                    c
    .positionEl.addClass('x-menu-list-item-indent');
               
    }
           
    }else if(c && !this.isValidParent(c, target)){
               
    if(Ext.isNumber(position)){
                    position
    = target.dom.childNodes[position];
               
    }
                target
    .dom.insertBefore(c.getActionEl().dom, position || null);
           
    }
       
    },

        getItemArgs
    : function(c) {
           
    var isMenuItem = c instanceof Ext.menu.Item;
           
    return {
                isMenuItem
    : isMenuItem,
                needsIcon
    : !isMenuItem && (c.icon || c.iconCls),
                icon
    : c.icon || Ext.BLANK_IMAGE_URL,
                iconCls
    : 'x-menu-item-icon ' + (c.iconCls || ''),
                itemId
    : 'x-menu-el-' + c.id,
                itemCls
    : 'x-menu-list-item ' + (this.extraCls || '')
           
    };
       
    },

    //  Valid if the Component is in a
  •  which is part of our target