//<Script type="text/javascript"> /* * Based on: * Ext JS Library 1.1.1 * Copyright(c) 2006-2007, Ext JS, LLC. * * Originally Released Under LGPL - original licence link has changed is not relivant. * * Fork - LGPL * <script type="text/javascript"> */ /** * @class Roo.tree.ColumnTree * @extends Roo.data.TreePanel * @cfg {Object} columns Including width, header, renderer, cls, dataIndex * @cfg {int} borderWidth compined right/left border allowance * @constructor * @param {String/HTMLElement/Element} el The container element * @param {Object} config */ Roo.tree.ColumnTree = function(el, config) { Roo.tree.ColumnTree.superclass.constructor.call(this, el , config); this.addEvents({ /** * @event resize * Fire this event on a container when it resizes * @param {int} w Width * @param {int} h Height */ "resize" : true }); this.on('resize', this.onResize, this); }; Roo.extend(Roo.tree.ColumnTree, Roo.tree.TreePanel, { //lines:false, borderWidth: Roo.isBorderBox ? 0 : 2, headEls : false, render : function(){ // add the header..... Roo.tree.ColumnTree.superclass.render.apply(this); this.el.addClass('x-column-tree'); this.headers = this.el.createChild( {cls:'x-tree-headers'},this.innerCt.dom); var cols = this.columns, c; var totalWidth = 0; this.headEls = []; var len = cols.length; for(var i = 0; i < len; i++){ c = cols[i]; totalWidth += c.width; this.headEls.push(this.headers.createChild({ cls:'x-tree-hd ' + (c.cls?c.cls+'-hd':''), cn: { cls:'x-tree-hd-text', html: c.header }, style:'width:'+(c.width-this.borderWidth)+'px;' })); } this.headers.createChild({cls:'x-clear'}); // prevent floats from wrapping when clipped this.headers.setWidth(totalWidth); //this.innerCt.setWidth(totalWidth); this.innerCt.setStyle({ overflow: 'auto' }); this.onResize(this.width, this.height); }, onResize : function(w,h) { this.height = h; this.width = w; // resize cols.. this.innerCt.setWidth(this.width); this.innerCt.setHeight(this.height-20); // headers... var cols = this.columns, c; var totalWidth = 0; var expEl = false; var len = cols.length; for(var i = 0; i < len; i++){ c = cols[i]; if (this.autoExpandColumn !== false && c.dataIndex == this.autoExpandColumn) { // it's the expander.. expEl = this.headEls[i]; continue; } totalWidth += c.width; } if (expEl) { expEl.setWidth( ((w - totalWidth)-this.borderWidth - 20)); } this.headers.setWidth(w-20); } });