ButtonGroup.js
上传用户:dawnssy
上传日期:2022-08-06
资源大小:9345k
文件大小:3k
源码类别:

JavaScript

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.1.0  * Copyright(c) 2006-2009 Ext JS, LLC  * licensing@extjs.com  * http://www.extjs.com/license  */ /**
  2.  * @class Ext.ButtonGroup
  3.  * @extends Ext.Panel
  4.  * Container for a group of buttons. Example usage:
  5.  * <pre><code>
  6. var p = new Ext.Panel({
  7.     title: 'Panel with Button Group',
  8.     width: 300,
  9.     height:200,
  10.     renderTo: document.body,
  11.     html: 'whatever',
  12.     tbar: [{
  13.         xtype: 'buttongroup',
  14.         {@link #columns}: 3,
  15.         title: 'Clipboard',
  16.         items: [{
  17.             text: 'Paste',
  18.             scale: 'large',
  19.             rowspan: 3, iconCls: 'add',
  20.             iconAlign: 'top',
  21.             cls: 'x-btn-as-arrow'
  22.         },{
  23.             xtype:'splitbutton',
  24.             text: 'Menu Button',
  25.             scale: 'large',
  26.             rowspan: 3,
  27.             iconCls: 'add',
  28.             iconAlign: 'top',
  29.             arrowAlign:'bottom',
  30.             menu: [{text: 'Menu Item 1'}]
  31.         },{
  32.             xtype:'splitbutton', text: 'Cut', iconCls: 'add16', menu: [{text: 'Cut Menu Item'}]
  33.         },{
  34.             text: 'Copy', iconCls: 'add16'
  35.         },{
  36.             text: 'Format', iconCls: 'add16'
  37.         }]
  38.     }]
  39. });
  40.  * </code></pre>
  41.  * @constructor
  42.  * Create a new ButtonGroup.
  43.  * @param {Object} config The config object
  44.  * @xtype buttongroup
  45.  */
  46. Ext.ButtonGroup = Ext.extend(Ext.Panel, {
  47.     /**
  48.      * @cfg {Number} columns The <tt>columns</tt> configuration property passed to the
  49.      * {@link #layout configured layout manager}. See {@link Ext.layout.TableLayout#columns}.
  50.      */
  51.     /**
  52.      * @cfg {String} baseCls  Defaults to <tt>'x-btn-group'</tt>.  See {@link Ext.Panel#baseCls}.
  53.      */
  54.     baseCls: 'x-btn-group',
  55.     /**
  56.      * @cfg {String} layout  Defaults to <tt>'table'</tt>.  See {@link Ext.Container#layout}.
  57.      */
  58.     layout:'table',
  59.     defaultType: 'button',
  60.     /**
  61.      * @cfg {Boolean} frame  Defaults to <tt>true</tt>.  See {@link Ext.Panel#frame}.
  62.      */
  63.     frame: true,
  64.     internalDefaults: {removeMode: 'container', hideParent: true},
  65.     initComponent : function(){
  66.         this.layoutConfig = this.layoutConfig || {};
  67.         Ext.applyIf(this.layoutConfig, {
  68.             columns : this.columns
  69.         });
  70.         if(!this.title){
  71.             this.addClass('x-btn-group-notitle');
  72.         }
  73.         this.on('afterlayout', this.onAfterLayout, this);
  74.         Ext.ButtonGroup.superclass.initComponent.call(this);
  75.     },
  76.     applyDefaults : function(c){
  77.         c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);
  78.         var d = this.internalDefaults;
  79.         if(c.events){
  80.             Ext.applyIf(c.initialConfig, d);
  81.             Ext.apply(c, d);
  82.         }else{
  83.             Ext.applyIf(c, d);
  84.         }
  85.         return c;
  86.     },
  87.     onAfterLayout : function(){
  88.         var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;
  89.         this.body.setWidth(bodyWidth);
  90.         this.el.setWidth(bodyWidth + this.getFrameWidth());
  91.     }
  92.     /**
  93.      * @cfg {Array} tools  @hide
  94.      */
  95. });
  96. Ext.reg('buttongroup', Ext.ButtonGroup);