Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / layout / TableContainer.js @ 12

History | View | Annotate | Download (3.65 KB)

1
/*
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
}