root / trunk / web / dojo / dojox / layout / TableContainer.js @ 12
History | View | Annotate | Download (3.65 KB)
| 1 | 9 | andrej.cim | /*
|
|---|---|---|---|
| 2 | Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||
| 3 | Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||
| 4 | see: http://dojotoolkit.org/license for details
|
||
| 5 | */
|
||
| 6 | |||
| 7 | |||
| 8 | if(!dojo._hasResource["dojox.layout.TableContainer"]){ |
||
| 9 | dojo._hasResource["dojox.layout.TableContainer"]=true; |
||
| 10 | dojo.experimental("dojox.layout.TableContainer");
|
||
| 11 | dojo.provide("dojox.layout.TableContainer");
|
||
| 12 | dojo.require("dijit.layout._LayoutWidget");
|
||
| 13 | dojo.declare("dojox.layout.TableContainer",dijit.layout._LayoutWidget,{cols:1,labelWidth:"100",showLabels:true,orientation:"horiz",spacing:1,customClass:"",postCreate:function(){ |
||
| 14 | this.inherited(arguments); |
||
| 15 | this._children=[];
|
||
| 16 | dojo.connect(this,"attr",dojo.hitch(this,function(_1,_2){ |
||
| 17 | if(_2&&(_1=="orientation"||_1=="customClass"||_1=="cols")){ |
||
| 18 | this.layout();
|
||
| 19 | } |
||
| 20 | })); |
||
| 21 | },startup:function(){ |
||
| 22 | if(this._started){ |
||
| 23 | return;
|
||
| 24 | } |
||
| 25 | this.inherited(arguments); |
||
| 26 | if(this._initialized){ |
||
| 27 | return;
|
||
| 28 | } |
||
| 29 | var _3=this.getChildren(); |
||
| 30 | if(_3.length<1){ |
||
| 31 | return;
|
||
| 32 | } |
||
| 33 | this._initialized=true; |
||
| 34 | dojo.addClass(this.domNode,"dijitTableLayout"); |
||
| 35 | dojo.forEach(_3,function(_4){
|
||
| 36 | if(!_4.started&&!_4._started){
|
||
| 37 | _4.startup(); |
||
| 38 | } |
||
| 39 | }); |
||
| 40 | this.resize();
|
||
| 41 | this.layout();
|
||
| 42 | },resize:function(){ |
||
| 43 | dojo.forEach(this.getChildren(),function(_5){ |
||
| 44 | if(typeof _5.resize=="function"){ |
||
| 45 | _5.resize(); |
||
| 46 | } |
||
| 47 | }); |
||
| 48 | },layout:function(){ |
||
| 49 | if(!this._initialized){ |
||
| 50 | return;
|
||
| 51 | } |
||
| 52 | var _6=this.getChildren(); |
||
| 53 | var _7={};
|
||
| 54 | var _8=this; |
||
| 55 | function _9(_a,_b,_c){ |
||
| 56 | if(_8.customClass!=""){ |
||
| 57 | var _d=_8.customClass+"-"+(_b||_a.tagName.toLowerCase()); |
||
| 58 | dojo.addClass(_a,_d); |
||
| 59 | if(arguments.length>2){ |
||
| 60 | dojo.addClass(_a,_d+"-"+_c);
|
||
| 61 | } |
||
| 62 | } |
||
| 63 | }; |
||
| 64 | dojo.forEach(this._children,dojo.hitch(this,function(_e){ |
||
| 65 | _7[_e.id]=_e; |
||
| 66 | })); |
||
| 67 | dojo.forEach(_6,dojo.hitch(this,function(_f,_10){ |
||
| 68 | if(!_7[_f.id]){
|
||
| 69 | this._children.push(_f);
|
||
| 70 | } |
||
| 71 | })); |
||
| 72 | var _11=dojo.create("table",{"width":"100%","class":"tableContainer-table tableContainer-table-"+this.orientation,"cellspacing":this.spacing},this.domNode); |
||
| 73 | var _12=dojo.create("tbody"); |
||
| 74 | _11.appendChild(_12); |
||
| 75 | _9(_11,"table",this.orientation); |
||
| 76 | var _13=Math.floor(100/this.cols)+"%"; |
||
| 77 | var _14=dojo.create("tr",{},_12); |
||
| 78 | var _15=(!this.showLabels||this.orientation=="horiz")?_14:dojo.create("tr",{},_12); |
||
| 79 | var _16=this.cols*(this.showLabels?2:1); |
||
| 80 | var _17=0; |
||
| 81 | dojo.forEach(this._children,dojo.hitch(this,function(_18,_19){ |
||
| 82 | var _1a=_18.colspan||1; |
||
| 83 | if(_1a>1){ |
||
| 84 | _1a=this.showLabels?Math.min(_16-1,_1a*2-1):Math.min(_16,_1a); |
||
| 85 | } |
||
| 86 | if(_17+_1a-1+(this.showLabels?1:0)>=_16){ |
||
| 87 | _17=0;
|
||
| 88 | _14=dojo.create("tr",{},_12);
|
||
| 89 | _15=this.orientation=="horiz"?_14:dojo.create("tr",{},_12); |
||
| 90 | } |
||
| 91 | var _1b;
|
||
| 92 | if(this.showLabels){ |
||
| 93 | _1b=dojo.create("td",{"class":"tableContainer-labelCell"},_14); |
||
| 94 | if(_18.spanLabel){
|
||
| 95 | dojo.attr(_1b,this.orientation=="vert"?"rowspan":"colspan",2); |
||
| 96 | }else{
|
||
| 97 | _9(_1b,"labelCell");
|
||
| 98 | var _1c={"for":_18.attr("id")}; |
||
| 99 | var _1d=dojo.create("label",_1c,_1b); |
||
| 100 | if(Number(this.labelWidth)>-1||String(this.labelWidth).indexOf("%")>-1){ |
||
| 101 | dojo.style(_1b,"width",String(this.labelWidth).indexOf("%")<0?this.labelWidth+"px":this.labelWidth); |
||
| 102 | } |
||
| 103 | _1d.innerHTML=_18.attr("label")||_18.attr("title"); |
||
| 104 | } |
||
| 105 | } |
||
| 106 | var _1e;
|
||
| 107 | if(_18.spanLabel&&_1b){
|
||
| 108 | _1e=_1b; |
||
| 109 | }else{
|
||
| 110 | _1e=dojo.create("td",{"class":"tableContainer-valueCell"},_15); |
||
| 111 | } |
||
| 112 | if(_1a>1){ |
||
| 113 | dojo.attr(_1e,"colspan",_1a);
|
||
| 114 | } |
||
| 115 | _9(_1e,"valueCell",_19);
|
||
| 116 | _1e.appendChild(_18.domNode); |
||
| 117 | _17+=_1a+(this.showLabels?1:0); |
||
| 118 | })); |
||
| 119 | if(this.table){ |
||
| 120 | this.table.parentNode.removeChild(this.table); |
||
| 121 | } |
||
| 122 | dojo.forEach(_6,function(_1f){
|
||
| 123 | if(typeof _1f.layout=="function"){ |
||
| 124 | _1f.layout(); |
||
| 125 | } |
||
| 126 | }); |
||
| 127 | this.table=_11;
|
||
| 128 | this.resize();
|
||
| 129 | },destroyDescendants:function(_20){ |
||
| 130 | dojo.forEach(this._children,function(_21){ |
||
| 131 | _21.destroyRecursive(_20); |
||
| 132 | }); |
||
| 133 | },_setSpacingAttr:function(_22){ |
||
| 134 | this.spacing=_22;
|
||
| 135 | if(this.table){ |
||
| 136 | this.table.cellspacing=Number(_22);
|
||
| 137 | } |
||
| 138 | }}); |
||
| 139 | dojo.extend(dijit._Widget,{label:"",title:"",spanLabel:false,colspan:1});
|
||
| 140 | } |