1 //<Script type="text/javascript">
3 Roo.tree.ColumnTree = Roo.extend(Roo.tree.TreePanel, {
5 borderWidth: Roo.isBorderBox ? 0 : 2, // the combined left/right border for each cell
11 Roo.tree.ColumnTree.superclass.render.apply(this);
13 this.el.addClass('x-column-tree');
15 this.headers = this.el.createChild(
16 {cls:'x-tree-headers'},this.innerCt.dom);
18 var cols = this.columns, c;
21 for(var i = 0, len = cols.length; i < len; i++){
23 totalWidth += c.width;
24 this.headers.createChild({
25 cls:'x-tree-hd ' + (c.cls?c.cls+'-hd':''),
30 style:'width:'+(c.width-this.borderWidth)+'px;'
33 this.headers.createChild({cls:'x-clear'});
34 // prevent floats from wrapping when clipped
35 this.headers.setWidth(totalWidth);
36 //this.innerCt.setWidth(totalWidth);
37 this.innerCt.setWidth(this.width);
38 this.innerCt.setHeight(this.height-20);
39 this.innerCt.setStyle({ overflow: 'auto' });
45 Roo.tree.ColumnNodeUI = Roo.extend(Roo.tree.TreeNodeUI, {
46 //focus: Roo.emptyFn, // prevent odd scrolling behavior
48 renderElements : function(n, a, targetNode, bulkRender){
49 //consel.log("renderElements?");
50 this.indentMarkup = n.parentNode ? n.parentNode.ui.getChildIndent() : '';
52 var t = n.getOwnerTree();
54 var bw = t.borderWidth;
56 var href = a.href ? a.href : Roo.isGecko ? "" : "#";
57 var cb = typeof a.checked == "boolean";
60 '<li class="x-tree-node">',
63 '<div class="x-tree-node-el ', a.cls,'">',
65 '<div class="x-tree-col" style="width:', c.width-bw, 'px;">',
68 '<span class="x-tree-node-indent">',this.indentMarkup,'</span>',
69 '<img src="', this.emptyIcon, '" class="x-tree-ec-icon " />',
70 '<img src="', a.icon || this.emptyIcon, '" class="x-tree-node-icon',
71 (a.icon ? ' x-tree-node-inline-icon' : ''),
72 (a.iconCls ? ' '+a.iconCls : ''),
73 '" unselectable="on" />',
74 (cb ? ('<input class="x-tree-node-cb" type="checkbox" ' +
75 (a.checked ? 'checked="checked" />' : ' />')) : ''),
77 '<a class="x-tree-node-anchor" hidefocus="on" href="',href,'" tabIndex="1" ',
78 (a.hrefTarget ? ' target="' +a.hrefTarget + '"' : ''),
79 '><span unselectable="on">',
80 n.text || (c.renderer ? c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]),
85 for(var i = 1, len = cols.length; i < len; i++){
88 buf.push('<div class="x-tree-col ',(c.cls?c.cls:''),'" style="width:',c.width-bw,'px;">',
89 '<div class="x-tree-col-text">',(c.renderer ? c.renderer(a[c.dataIndex], n, a) : a[c.dataIndex]),"</div>",
94 '<div class="x-clear"></div></div>',
95 '<ul class="x-tree-node-ct" style="display:none;"></ul>',
98 if(bulkRender !== true && n.nextSibling && n.nextSibling.ui.getEl()){
99 this.wrap = Roo.DomHelper.insertHtml("beforeBegin",
100 n.nextSibling.ui.getEl(), buf.join(""));
102 this.wrap = Roo.DomHelper.insertHtml("beforeEnd", targetNode, buf.join(""));
104 var el = this.wrap.childNodes[0];
105 this.elNode = el.firstChild;
106 this.ctNode = this.wrap.childNodes[1];
107 var cs = el.firstChild.childNodes;
108 this.indentNode = cs[0];
110 this.iconNode = cs[2];
113 this.checkbox = cs[3];
116 this.anchor = cs[index];
117 this.textNode = cs[index].firstChild;
119 // console.log(this);