Source: control/MenuList.js

Rsd.define('Rsd.control.MenuList', {
    extend: 'Rsd.control.List',
    xtype: 'menu-list',
    requires: ['Rsd.data.Menu',
        'Rsd.control.Svg',
        'Rsd.form.Link',
        'Rsd.form.ComboBox',
        'Rsd.form.Button'],
    margin: '0 0 0 0',
    width: 120,
    itemClick:'menuclick',
    cls: 'R',
    /**
     * 被选中时样式
     */
    itemSelectedCls:'x-selected',
    itemHover:true,
    /**
     * label文字宽度
     */
     itemLabelWidth:50,
     itemWidth:null,
     itemHeight:null,
    //菜单根节点
    //menu:null,
    //logo图片
    //logo
    /**
     *
     * */
    constructor: function MenuList(config) {

       var _layout =config.layout||this.layout;
        if(_layout == 'vbox')
        {
            this.itemStyle={"height":'50px',"width":'100%',"lineHeight": '30px'};
        }
        if(_layout == 'hbox')
        {
            this.itemStyle={"height":'100%',"lineHeight": '30px',"float":'left'};
        }

        this.apply(config);

        if(this.logo)
        {
            this.label.content = this.logo;
            this.label.visible = false;
        }
      
    },
  
    /*
    *
    * */
    loadData:function loadData(menu,callback)
    {
        var me = this;
        var _menu = menu||me.menu;
        if(Rsd.isArray(_menu))
        {
            _menu = Rsd.create('Rsd.data.Menu',{children:_menu});
        }
        if(_menu)
        {
            if(!(_menu instanceof Rsd.data.Menu)) {
                console.error(_menu);
                throw new Error('argumeng data is not Rsd.data.Menu object when it call Rsd.control.MenuList loadData.');
            }

            me.menu = _menu;
            var _nodeList=[];
            var _list = _menu.children||[];
            for(var i in _list) {
                var m = _list[i];
                var _w = m.width || me.itemWidth || '100%';// 内部控件宽度
                var _h = m.height || me.itemHeight || 'auto';// 内部控件高度
                  
                _nodeList.push({
                    xtype: 'svg',
                    id:m.id,
                    label: {width:m.labelWidth||me.itemLabelWidth||65,  align:'left',content: m.text, position: 'right',space:0},
                    ctrlStyle:{height:null},
                    width: _w,
                    height: _h,
                    //margin: '10 5 10 15',
                    click:m.click||me.itemClick,
                    menu: m,
                    dsTagName: m.icon,
                    tip:m.tip||''
                });
            }

            me.callParent(_nodeList,callback);
        }

        return this;
    }, 
    /*
    *
    * */
    menuclick:function menuclick() {
        alert('未设置ListMenu.itemClick属性。')
    }


},function(type) {

    var _menuGetter = function () {
        return this.__menu;

    };

    var _menuSetter = function (value) {

        this.__menu = value;
    };


    this.defineProperty(type, "menu", _menuGetter, _menuSetter, true);
});