Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dijit / layout / StackContainer.js @ 13

History | View | Annotate | Download (4.08 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["dijit.layout.StackContainer"]){
9
dojo._hasResource["dijit.layout.StackContainer"]=true;
10
dojo.provide("dijit.layout.StackContainer");
11
dojo.require("dijit._Templated");
12
dojo.require("dijit.layout._LayoutWidget");
13
dojo.requireLocalization("dijit","common",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ro,ru,sk,sl,sv,th,tr,zh,zh-tw");
14
dojo.require("dojo.cookie");
15
dojo.declare("dijit.layout.StackContainer",dijit.layout._LayoutWidget,{doLayout:true,persist:false,baseClass:"dijitStackContainer",postCreate:function(){
16
this.inherited(arguments);
17
dojo.addClass(this.domNode,"dijitLayoutContainer");
18
dijit.setWaiRole(this.containerNode,"tabpanel");
19
this.connect(this.domNode,"onkeypress",this._onKeyPress);
20
},startup:function(){
21
if(this._started){
22
return;
23
}
24
var _1=this.getChildren();
25
dojo.forEach(_1,this._setupChild,this);
26
if(this.persist){
27
this.selectedChildWidget=dijit.byId(dojo.cookie(this.id+"_selectedChild"));
28
}else{
29
dojo.some(_1,function(_2){
30
if(_2.selected){
31
this.selectedChildWidget=_2;
32
}
33
return _2.selected;
34
},this);
35
}
36
var _3=this.selectedChildWidget;
37
if(!_3&&_1[0]){
38
_3=this.selectedChildWidget=_1[0];
39
_3.selected=true;
40
}
41
dojo.publish(this.id+"-startup",[{children:_1,selected:_3}]);
42
this.inherited(arguments);
43
},resize:function(){
44
var _4=this.selectedChildWidget;
45
if(_4&&!this._hasBeenShown){
46
this._hasBeenShown=true;
47
this._showChild(_4);
48
}
49
this.inherited(arguments);
50
},_setupChild:function(_5){
51
this.inherited(arguments);
52
dojo.removeClass(_5.domNode,"dijitVisible");
53
dojo.addClass(_5.domNode,"dijitHidden");
54
_5.domNode.title="";
55
},addChild:function(_6,_7){
56
this.inherited(arguments);
57
if(this._started){
58
dojo.publish(this.id+"-addChild",[_6,_7]);
59
this.layout();
60
if(!this.selectedChildWidget){
61
this.selectChild(_6);
62
}
63
}
64
},removeChild:function(_8){
65
this.inherited(arguments);
66
if(this._started){
67
dojo.publish(this.id+"-removeChild",[_8]);
68
}
69
if(this._beingDestroyed){
70
return;
71
}
72
if(this.selectedChildWidget===_8){
73
this.selectedChildWidget=undefined;
74
if(this._started){
75
var _9=this.getChildren();
76
if(_9.length){
77
this.selectChild(_9[0]);
78
}
79
}
80
}
81
if(this._started){
82
this.layout();
83
}
84
},selectChild:function(_a,_b){
85
_a=dijit.byId(_a);
86
if(this.selectedChildWidget!=_a){
87
this._transition(_a,this.selectedChildWidget,_b);
88
this.selectedChildWidget=_a;
89
dojo.publish(this.id+"-selectChild",[_a]);
90
if(this.persist){
91
dojo.cookie(this.id+"_selectedChild",this.selectedChildWidget.id);
92
}
93
}
94
},_transition:function(_c,_d){
95
if(_d){
96
this._hideChild(_d);
97
}
98
this._showChild(_c);
99
if(_c.resize){
100
if(this.doLayout){
101
_c.resize(this._containerContentBox||this._contentBox);
102
}else{
103
_c.resize();
104
}
105
}
106
},_adjacent:function(_e){
107
var _f=this.getChildren();
108
var _10=dojo.indexOf(_f,this.selectedChildWidget);
109
_10+=_e?1:_f.length-1;
110
return _f[_10%_f.length];
111
},forward:function(){
112
this.selectChild(this._adjacent(true),true);
113
},back:function(){
114
this.selectChild(this._adjacent(false),true);
115
},_onKeyPress:function(e){
116
dojo.publish(this.id+"-containerKeyPress",[{e:e,page:this}]);
117
},layout:function(){
118
if(this.doLayout&&this.selectedChildWidget&&this.selectedChildWidget.resize){
119
this.selectedChildWidget.resize(this._containerContentBox||this._contentBox);
120
}
121
},_showChild:function(_11){
122
var _12=this.getChildren();
123
_11.isFirstChild=(_11==_12[0]);
124
_11.isLastChild=(_11==_12[_12.length-1]);
125
_11.selected=true;
126
dojo.removeClass(_11.domNode,"dijitHidden");
127
dojo.addClass(_11.domNode,"dijitVisible");
128
_11._onShow();
129
},_hideChild:function(_13){
130
_13.selected=false;
131
dojo.removeClass(_13.domNode,"dijitVisible");
132
dojo.addClass(_13.domNode,"dijitHidden");
133
_13.onHide();
134
},closeChild:function(_14){
135
var _15=_14.onClose(this,_14);
136
if(_15){
137
this.removeChild(_14);
138
_14.destroyRecursive();
139
}
140
},destroyDescendants:function(_16){
141
dojo.forEach(this.getChildren(),function(_17){
142
this.removeChild(_17);
143
_17.destroyRecursive(_16);
144
},this);
145
}});
146
dojo.require("dijit.layout.StackController");
147
dojo.extend(dijit._Widget,{selected:false,closable:false,iconClass:"",showTitle:true});
148
}