The source code

    /**
     * @class Ext.ux.StartMenu
     * @extends Ext.menu.Menu
     * A start menu object.
     * @constructor
     * Creates a new StartMenu
     * @param {Object} config Configuration options
     *
     * SAMPLE USAGE:
     *
     * this.startMenu = new Ext.ux.StartMenu({
     *		iconCls: 'user',
     *		height: 300,
     *		shadow: true,
     *		title: get_cookie('memberName'),
     *		width: 300
     *	});
     *
     * this.startMenu.add({
     *		text: 'Grid Window',
     *		iconCls:'icon-grid',
     *		handler : this.createWindow,
     *		scope: this
     *	});
     *
     * this.startMenu.addTool({
     *		text:'Logout',
     *		iconCls:'logout',
     *		handler:function(){ window.location = "logout.php"; },
     *		scope:this
     *	});
     */

    Ext.namespace("Ext.ux");

    Ext.ux.StartMenu = Ext.extend(Ext.menu.Menu, {
        initComponent: function(config) {
        	Ext.ux.StartMenu.superclass.initComponent.call(this, config);

            var tools = this.toolItems;
            this.toolItems = new Ext.util.MixedCollection();
            if(tools){
                this.addTool.apply(this, tools);
            }
        },

        // private
        onRender : function(ct, position){
            Ext.ux.StartMenu.superclass.onRender.call(this, ct, position);
            var el = this.el.addClass('ux-start-menu');

            var header = el.createChild({
            	tag: "div",
            	cls: "x-window-header x-unselectable x-panel-icon "+this.iconCls
            });

    		this.header = header;

    		var headerText = header.createChild({
    			tag: "span",
    			cls: "x-window-header-text"
    		});
    		var tl = header.wrap({
    			cls: "ux-start-menu-tl"
    		});
    		var tr = header.wrap({
    			cls: "ux-start-menu-tr"
    		});
    		var tc = header.wrap({
    			cls: "ux-start-menu-tc"
    		});

    		this.menuBWrap = el.createChild({
    			tag: "div",
    			cls: "x-window-body x-border-layout-ct ux-start-menu-body"
    		});
    		var ml = this.menuBWrap.wrap({
    			cls: "ux-start-menu-ml"
    		});
    		var mc = this.menuBWrap.wrap({
    			cls: "x-window-mc ux-start-menu-bwrap"
    		});

    		this.menuPanel = this.menuBWrap.createChild({
    			tag: "div",
    			cls: "x-panel x-border-panel ux-start-menu-apps-panel"
    		});
    		this.toolsPanel = this.menuBWrap.createChild({
    			tag: "div",
    			cls: "x-panel x-border-panel ux-start-menu-tools-panel"
    		});

    		var bwrap = ml.wrap({cls: "x-window-bwrap"});
    		var bc = bwrap.createChild({
    			tag: "div",
    			cls: "ux-start-menu-bc"
    		});
    		var bl = bc.wrap({
    			cls: "ux-start-menu-bl x-panel-nofooter"
    		});
    		var br = bc.wrap({
    			cls: "ux-start-menu-br"
    		});

            this.ul.appendTo(this.menuPanel);

            var toolsUl = this.toolsPanel.createChild({
            	tag: "ul",
            	cls: "x-menu-list"
            });

            this.mon(toolsUl, 'click', this.onClick, this);
            this.mon(toolsUl, 'mouseover', this.onMouseOver, this);
            this.mon(toolsUl, 'mouseout', this.onMouseOut, this);

            this.items.each(function(item){
                item.parentMenu = this;
            }, this);

            this.toolItems.each(
            	function(item){
    	            var li = document.createElement("li");
    	            li.className = "x-menu-list-item";
    	            toolsUl.dom.appendChild(li);
    	            item.render(li);
                    item.parentMenu = this;
    	        }, this);

            this.toolsUl = toolsUl;

            this.menuBWrap.setStyle('position', 'relative');
            this.menuBWrap.setHeight(this.height - 28);

            this.menuPanel.setStyle({
            	padding: '2px',
            	position: 'absolute',
            	overflow: 'auto'
            });

            this.toolsPanel.setStyle({
            	padding: '2px 4px 2px 2px',
            	position: 'absolute',
            	overflow: 'auto'
            });

            this.setTitle(this.title);
        },

        // private
        findTargetItem : function(e){
            var t = e.getTarget(".x-menu-list-item", this.ul,  true);
            if(t && t.menuItemId){
            	if(this.items.get(t.menuItemId)){
                	return this.items.get(t.menuItemId);
                }else{
                	return this.toolItems.get(t.menuItemId);
                }
            }
        },

        /**
         * Displays this menu relative to another element
         * @param {Mixed} element The element to align to
         * @param {String} position (optional) The {@link Ext.Element#alignTo} anchor position to use in aligning to
         * the element (defaults to this.defaultAlign)
         * @param {Ext.ux.StartMenu} parentMenu (optional) This menu's parent menu, if applicable (defaults to undefined)
         */
        show : function(el, pos, parentMenu){
            this.parentMenu = parentMenu;
            if(!this.el){
                this.render();
            }

            this.fireEvent("beforeshow", this);
            this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign), parentMenu, false);
            var tPanelWidth = 100;
            var box = this.menuBWrap.getBox();
            this.menuPanel.setWidth(box.width-tPanelWidth);
            this.menuPanel.setHeight(box.height);

            this.toolsPanel.setWidth(tPanelWidth);
            this.toolsPanel.setX(box.x+box.width-tPanelWidth);
            this.toolsPanel.setHeight(box.height);
        },

        addTool : function(){
            var a = arguments, l = a.length, item;
            for(var i = 0; i < l; i++){
                var el = a[i];
                if(el.render){ // some kind of Item
                    item = this.addToolItem(el);
                }else if(typeof el == "string"){ // string
                    if(el == "separator" || el == "-"){
                        item = this.addToolSeparator();
                    }else{
                        item = this.addText(el);
                    }
                }else if(el.tagName || el.el){ // element
                    item = this.addElement(el);
                }else if(typeof el == "object"){ // must be menu item config?
                    item = this.addToolMenuItem(el);
                }
            }
            return item;
        },

        /**
         * Adds a separator bar to the Tools
         * @return {Ext.menu.Item} The menu item that was added
         */
        addToolSeparator : function(){
            return this.addToolItem(new Ext.menu.Separator({itemCls: 'ux-toolmenu-sep'}));
        },

        addToolItem : function(item){
            this.toolItems.add(item);
            if(this.ul){
                var li = document.createElement("li");
                li.className = "x-menu-list-item";
                this.ul.dom.appendChild(li);
                item.render(li, this);
                this.delayAutoWidth();
            }
            return item;
        },

        addToolMenuItem : function(config){
            if(!(config instanceof Ext.menu.Item)){
                if(typeof config.checked == "boolean"){ // must be check menu item config?
                    config = new Ext.menu.CheckItem(config);
                }else{
                    config = new Ext.menu.Item(config);
                }
            }
            return this.addToolItem(config);
        },

        setTitle : function(title, iconCls){
            this.title = title;
            this.header.child('span').update(title);
            return this;
        }
    });