Upgrade to ExtJS 3.0.0 - Released 07/06/2009
[extjs.git] / src / widgets / ButtonGroup.js
diff --git a/src/widgets/ButtonGroup.js b/src/widgets/ButtonGroup.js
new file mode 100644 (file)
index 0000000..4928846
--- /dev/null
@@ -0,0 +1,103 @@
+/*!
+ * Ext JS Library 3.0.0
+ * Copyright(c) 2006-2009 Ext JS, LLC
+ * licensing@extjs.com
+ * http://www.extjs.com/license
+ */
+/**\r
+ * @class Ext.ButtonGroup\r
+ * @extends Ext.Panel\r
+ * Container for a group of buttons. Example usage:\r
+ * <pre><code>\r
+var p = new Ext.Panel({\r
+    title: 'Panel with Button Group',\r
+    width: 300,\r
+    height:200,\r
+    renderTo: document.body,\r
+    html: 'whatever',\r
+    tbar: [{\r
+        xtype: 'buttongroup',\r
+        {@link #columns}: 3,\r
+        title: 'Clipboard',\r
+        items: [{\r
+            text: 'Paste',\r
+            scale: 'large',\r
+            rowspan: 3, iconCls: 'add',\r
+            iconAlign: 'top',\r
+            cls: 'x-btn-as-arrow'\r
+        },{\r
+            xtype:'splitbutton',\r
+            text: 'Menu Button',\r
+            scale: 'large',\r
+            rowspan: 3,\r
+            iconCls: 'add',\r
+            iconAlign: 'top',\r
+            arrowAlign:'bottom',\r
+            menu: [{text: 'Menu Item 1'}]\r
+        },{\r
+            xtype:'splitbutton', text: 'Cut', iconCls: 'add16', menu: [{text: 'Cut Menu Item'}]\r
+        },{\r
+            text: 'Copy', iconCls: 'add16'\r
+        },{\r
+            text: 'Format', iconCls: 'add16'\r
+        }]\r
+    }]\r
+});\r
+ * </code></pre>\r
+ * @xtype buttongroup\r
+ */\r
+Ext.ButtonGroup = Ext.extend(Ext.Panel, {\r
+    /**\r
+     * @cfg {Number} columns The <tt>columns</tt> configuration property passed to the\r
+     * {@link #layout configured layout manager}. See {@link Ext.layout.TableLayout#columns}.\r
+     */\r
+    /**\r
+     * @cfg {String} baseCls  Defaults to <tt>'x-btn-group'</tt>.  See {@link Ext.Panel#baseCls}.\r
+     */\r
+    baseCls: 'x-btn-group',\r
+    /**\r
+     * @cfg {String} layout  Defaults to <tt>'table'</tt>.  See {@link Ext.Container#layout}.\r
+     */\r
+    layout:'table',\r
+    defaultType: 'button',\r
+    /**\r
+     * @cfg {Boolean} frame  Defaults to <tt>true</tt>.  See {@link Ext.Panel#frame}.\r
+     */\r
+    frame: true,\r
+    internalDefaults: {removeMode: 'container', hideParent: true},\r
+\r
+    initComponent : function(){\r
+        this.layoutConfig = this.layoutConfig || {};\r
+        Ext.applyIf(this.layoutConfig, {\r
+            columns : this.columns\r
+        });\r
+        if(!this.title){\r
+            this.addClass('x-btn-group-notitle');\r
+        }\r
+        this.on('afterlayout', this.onAfterLayout, this);\r
+        Ext.ButtonGroup.superclass.initComponent.call(this);\r
+    },\r
+\r
+    applyDefaults : function(c){\r
+        c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);\r
+        var d = this.internalDefaults;\r
+        if(c.events){\r
+            Ext.applyIf(c.initialConfig, d);\r
+            Ext.apply(c, d);\r
+        }else{\r
+            Ext.applyIf(c, d);\r
+        }\r
+        return c;\r
+    },\r
+\r
+    onAfterLayout : function(){\r
+        var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;\r
+        this.body.setWidth(bodyWidth);\r
+        this.el.setWidth(bodyWidth + this.getFrameWidth());\r
+    }\r
+    /**\r
+     * @cfg {Array} tools  @hide\r
+     */\r
+});\r
+\r
+Ext.reg('buttongroup', Ext.ButtonGroup);\r