1 /** 2 * @author Gillis Haasnoot <gillis.haasnoot@gmail.com> 3 * @package Banana.Controls 4 * @summary Datagrid 5 */ 6 7 goog.provide('Banana.Controls.DataGridTreeListHolder'); 8 9 /** @namespace Banana.Controls.DataGridTreeListHolder */ 10 namespace('Banana.Controls').DataGridTreeListHolder = Banana.Controls.Panel.extend( 11 /** @lends Banana.Controls.DataGridTreeListHolder.prototype */ 12 { 13 /** 14 * Holder for Datagrid tree itemrenders 15 * The listrender automatically creates a holder where a itemrender is rendered in 16 * @constructs 17 * @extends Banana.Controls.Panel 18 */ 19 init : function() 20 { 21 this._super(); 22 23 //when true we maximize the width size of a node 24 //call setMaximizeAutoWidth(true) on the listRender to apply 25 this.maximizeAutoWidth = false; 26 27 this.toggleHolder = new Banana.Controls.Panel().setStyle('float:left;clear:both;height:20px;width:20px;'); 28 this.itemRenderHolder = new Banana.Controls.Panel().setStyle('float:left;'); 29 this.childsHolder = new Banana.Controls.Panel().setStyle('float:left;clear:both;'); 30 this.buttonHolder = new Banana.Controls.Panel().setStyle('float:left;clear:both;'); 31 32 this.addControl(this.toggleHolder); 33 this.addControl(this.itemRenderHolder); 34 this.addControl(this.childsHolder); 35 this.addControl(this.buttonHolder); 36 }, 37 38 /** 39 * returns the holder where item render is rendered in 40 * @return {Banana.Controls.Panel} 41 */ 42 getItemRenderHolder : function() 43 { 44 return this.itemRenderHolder; 45 }, 46 47 /** 48 * returns the holder where toggle button is rendered in 49 * @return {Banana.Controls.Panel} 50 */ 51 getToggleHolder : function() 52 { 53 return this.toggleHolder; 54 }, 55 56 /** 57 * returns the holder where childs are rendered in 58 * @return {Banana.Controls.Panel} 59 */ 60 getChildHolder : function() 61 { 62 return this.childsHolder; 63 }, 64 65 /** 66 * returns the holder where buttons are rendered in 67 * @return {Banana.Controls.Panel} 68 */ 69 getButtonHolder : function() 70 { 71 return this.buttonHolder; 72 }, 73 74 /** 75 * @ignore 76 */ 77 updateDisplay : function() 78 { 79 if (!this.maximizeAutoWidth) return; 80 81 var dem = this.listRender.getDimensions(); 82 if (!dem.offset) return; 83 var listRenderOffset = dem.offset.left; //add this 84 var totalWidth = dem.width; 85 86 var renderOffset = this.itemRenderHolder.getDimensions().offset.left-listRenderOffset; 87 88 var maxWidth = totalWidth-renderOffset; 89 90 this.itemRenderHolder.setCss({width:maxWidth-20+'px'}); 91 }, 92 93 /** 94 * @return {Banana.Controls.DataGridTreeItemRender} 95 */ 96 getItemRender : function() 97 { 98 if (!this.itemRenderHolder) 99 { 100 return null; 101 } 102 103 return this.itemRenderHolder.controls[0]; 104 }, 105 106 /** 107 * @return {Banana.Controls.DataGridTreeListNodeToggle} 108 */ 109 getToggle : function() 110 { 111 return this.toggleHolder.controls[0]; 112 } 113 }); 114 115 /** @namespace Banana.Controls.DataGridTreeListRootHolder */ 116 namespace('Banana.Controls').DataGridTreeListRootHolder = Banana.Controls.Panel.extend( 117 /** @lends Banana.Controls.DataGridTreeListRootHolder.prototype */ 118 { 119 /** 120 * Holder for Datagrid tree itemrenders 121 * The listrender automatically creates a holder for root item render 122 * @constructs 123 * @extends Banana.Controls.Panel 124 */ 125 init : function() 126 { 127 this._super(); 128 129 this.childsHolder = new Banana.Controls.Panel().setStyle('float:left;clear:both;'); 130 this.buttonHolder = new Banana.Controls.Panel().setStyle('float:left;clear:both;'); 131 132 this.addControl(this.itemRenderHolder); 133 this.addControl(this.childsHolder); 134 this.addControl(this.buttonHolder); 135 }, 136 137 /** 138 * @return {Banana.Controls.DataGridTreeItemRender} 139 */ 140 getItemRender : function() 141 { 142 return null; 143 } 144 });