The source code

    /**
     * @class Ext.ButtonGroup
     * @extends Ext.Panel
     * Container for a group of buttons. Example usage:
     *
    var p = new Ext.Panel({
        title: 'Panel with Button Group',
        width: 300,
        height:200,
        renderTo: document.body,
        html: 'whatever',
        tbar: [{
            xtype: 'buttongroup',
            {@link #columns}: 3,
            title: 'Clipboard',
            items: [{
                text: 'Paste',
                scale: 'large',
                rowspan: 3, iconCls: 'add',
                iconAlign: 'top',
                cls: 'x-btn-as-arrow'
            },{
                xtype:'splitbutton',
                text: 'Menu Button',
                scale: 'large',
                rowspan: 3,
                iconCls: 'add',
                iconAlign: 'top',
                arrowAlign:'bottom',
                menu: [{text: 'Menu Item 1'}]
            },{
                xtype:'splitbutton', text: 'Cut', iconCls: 'add16', menu: [{text: 'Cut Menu Item'}]
            },{
                text: 'Copy', iconCls: 'add16'
            },{
                text: 'Format', iconCls: 'add16'
            }]
        }]
    });
     *
     * @xtype buttongroup
     */
    Ext.ButtonGroup = Ext.extend(Ext.Panel, {
        /**
         * @cfg {Number} columns The columns configuration property passed to the
         * {@link #layout configured layout manager}. See {@link Ext.layout.TableLayout#columns}.
         */
        /**
         * @cfg {String} baseCls  Defaults to 'x-btn-group'.  See {@link Ext.Panel#baseCls}.
         */
        baseCls: 'x-btn-group',
        /**
         * @cfg {String} layout  Defaults to 'table'.  See {@link Ext.Container#layout}.
         */
        layout:'table',
        defaultType: 'button',
        /**
         * @cfg {Boolean} frame  Defaults to true.  See {@link Ext.Panel#frame}.
         */
        frame: true,
        internalDefaults: {removeMode: 'container', hideParent: true},

        initComponent : function(){
            this.layoutConfig = this.layoutConfig || {};
            Ext.applyIf(this.layoutConfig, {
                columns : this.columns
            });
            if(!this.title){
                this.addClass('x-btn-group-notitle');
            }
            this.on('afterlayout', this.onAfterLayout, this);
            Ext.ButtonGroup.superclass.initComponent.call(this);
        },

        applyDefaults : function(c){
            c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);
            var d = this.internalDefaults;
            if(c.events){
                Ext.applyIf(c.initialConfig, d);
                Ext.apply(c, d);
            }else{
                Ext.applyIf(c, d);
            }
            return c;
        },

        onAfterLayout : function(){
            var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;
            this.body.setWidth(bodyWidth);
            this.el.setWidth(bodyWidth + this.getFrameWidth());
        }
        /**
         * @cfg {Array} tools  @hide
         */
    });

    Ext.reg('buttongroup', Ext.ButtonGroup);