ButtonGroup.js
上传用户:shuoshiled
上传日期:2018-01-28
资源大小:10124k
文件大小:3k
源码类别:

中间件编程

开发平台:

JavaScript

  1. /*!  * Ext JS Library 3.0.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.  * @xtype buttongroup
  42.  */
  43. Ext.ButtonGroup = Ext.extend(Ext.Panel, {
  44.     /**
  45.      * @cfg {Number} columns The <tt>columns</tt> configuration property passed to the
  46.      * {@link #layout configured layout manager}. See {@link Ext.layout.TableLayout#columns}.
  47.      */
  48.     /**
  49.      * @cfg {String} baseCls  Defaults to <tt>'x-btn-group'</tt>.  See {@link Ext.Panel#baseCls}.
  50.      */
  51.     baseCls: 'x-btn-group',
  52.     /**
  53.      * @cfg {String} layout  Defaults to <tt>'table'</tt>.  See {@link Ext.Container#layout}.
  54.      */
  55.     layout:'table',
  56.     defaultType: 'button',
  57.     /**
  58.      * @cfg {Boolean} frame  Defaults to <tt>true</tt>.  See {@link Ext.Panel#frame}.
  59.      */
  60.     frame: true,
  61.     internalDefaults: {removeMode: 'container', hideParent: true},
  62.     initComponent : function(){
  63.         this.layoutConfig = this.layoutConfig || {};
  64.         Ext.applyIf(this.layoutConfig, {
  65.             columns : this.columns
  66.         });
  67.         if(!this.title){
  68.             this.addClass('x-btn-group-notitle');
  69.         }
  70.         this.on('afterlayout', this.onAfterLayout, this);
  71.         Ext.ButtonGroup.superclass.initComponent.call(this);
  72.     },
  73.     applyDefaults : function(c){
  74.         c = Ext.ButtonGroup.superclass.applyDefaults.call(this, c);
  75.         var d = this.internalDefaults;
  76.         if(c.events){
  77.             Ext.applyIf(c.initialConfig, d);
  78.             Ext.apply(c, d);
  79.         }else{
  80.             Ext.applyIf(c, d);
  81.         }
  82.         return c;
  83.     },
  84.     onAfterLayout : function(){
  85.         var bodyWidth = this.body.getFrameWidth('lr') + this.body.dom.firstChild.offsetWidth;
  86.         this.body.setWidth(bodyWidth);
  87.         this.el.setWidth(bodyWidth + this.getFrameWidth());
  88.     }
  89.     /**
  90.      * @cfg {Array} tools  @hide
  91.      */
  92. });
  93. Ext.reg('buttongroup', Ext.ButtonGroup);