X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/25ef3491bd9ae007ff1fc2b0d7943e6eaaccf775..refs/heads/master:/docs/source/ButtonGroup.html diff --git a/docs/source/ButtonGroup.html b/docs/source/ButtonGroup.html index 9071587d..998ea5f3 100644 --- a/docs/source/ButtonGroup.html +++ b/docs/source/ButtonGroup.html @@ -1,113 +1,189 @@ +
+/*! - * Ext JS Library 3.0.3 - * Copyright(c) 2006-2009 Ext JS, LLC - * licensing@extjs.com - * http://www.extjs.com/license + +/** + * Provides a container for arranging a group of related Buttons in a tabular manner. + * + * @example + * Ext.create('Ext.panel.Panel', { + * title: 'Panel with ButtonGroup', + * width: 300, + * height:200, + * renderTo: document.body, + * bodyPadding: 10, + * html: 'HTML Panel Content', + * tbar: [{ + * xtype: 'buttongroup', + * columns: 3, + * title: 'Clipboard', + * items: [{ + * text: 'Paste', + * scale: 'large', + * rowspan: 3, + * iconCls: 'add', + * iconAlign: 'top', + * cls: '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' + * }] + * }] + * }); + * */ -/** - * @class Ext.ButtonGroup - * @extends Ext.Panel - * Container for a group of buttons. Example usage: - *- \ No newline at end of file +- * @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); +Ext.define('Ext.container.ButtonGroup', { + extend: 'Ext.panel.Panel', + alias: 'widget.buttongroup', + alternateClassName: 'Ext.ButtonGroup', + + /** + * @cfg {Number} columns The `columns` configuration property passed to the + * {@link #layout configured layout manager}. See {@link Ext.layout.container.Table#columns}. + */ + + /** + * @cfg {String} baseCls Defaults to <tt>'x-btn-group'</tt>. See {@link Ext.panel.Panel#baseCls}. + */ + baseCls: Ext.baseCSSPrefix + 'btn-group', + + /** + * @cfg {Object} layout Defaults to <tt>'table'</tt>. See {@link Ext.container.Container#layout}. + */ + layout: { + type: 'table' + }, + + defaultType: 'button', + + /** + * @cfg {Boolean} frame Defaults to <tt>true</tt>. See {@link Ext.panel.Panel#frame}. + */ + frame: true, + + frameHeader: false, + + internalDefaults: {removeMode: 'container', hideParent: true}, + + initComponent : function(){ + // Copy the component's columns config to the layout if specified + var me = this, + cols = me.columns; + + me.noTitleCls = me.baseCls + '-notitle'; + if (cols) { + me.layout = Ext.apply({}, {columns: cols}, me.layout); + } + + if (!me.title) { + me.addCls(me.noTitleCls); + } + me.callParent(arguments); + }, + + afterLayout: function() { + var me = this; + + me.callParent(arguments); + + // Pugly hack for a pugly browser: + // If not an explicitly set width, then size the width to match the inner table + if (me.layout.table && (Ext.isIEQuirks || Ext.isIE6) && !me.width) { + var t = me.getTargetEl(); + t.setWidth(me.layout.table.offsetWidth + t.getPadding('lr')); + } + }, + + afterRender: function() { + var me = this; + + //we need to add an addition item in here so the ButtonGroup title is centered + if (me.header) { + // Header text cannot flex, but must be natural size if it's being centered + delete me.header.items.items[0].flex; + + // For Centering, surround the text with two flex:1 spacers. + me.suspendLayout = true; + me.header.insert(1, { + xtype: 'component', + ui : me.ui, + flex : 1 + }); + me.header.insert(0, { + xtype: 'component', + ui : me.ui, + flex : 1 + }); + me.suspendLayout = false; + } + + me.callParent(arguments); + }, + + // private + onBeforeAdd: function(component) { + if (component.is('button')) { + component.ui = component.ui + '-toolbar'; + } + this.callParent(arguments); + }, + + //private + applyDefaults: function(c) { + if (!Ext.isString(c)) { + c = this.callParent(arguments); + var d = this.internalDefaults; + if (c.events) { + Ext.applyIf(c.initialConfig, d); + Ext.apply(c, d); + } else { + Ext.applyIf(c, d); + } + } + return c; + } + + /** + * @cfg {Array} tools @hide + */ + /** + * @cfg {Boolean} collapsible @hide + */ + /** + * @cfg {Boolean} collapseMode @hide + */ + /** + * @cfg {Boolean} animCollapse @hide + */ + /** + * @cfg {Boolean} closable @hide + */ +});-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' - }] - }] -}); - *