root / trunk / web / dojo / dojox / dtl / contrib / dijit.js @ 9
History | View | Annotate | Download (4.41 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.dtl.contrib.dijit"]){ |
9 |
dojo._hasResource["dojox.dtl.contrib.dijit"]=true; |
10 |
dojo.provide("dojox.dtl.contrib.dijit");
|
11 |
dojo.require("dojox.dtl.dom");
|
12 |
dojo.require("dojo.parser");
|
13 |
(function(){
|
14 |
var dd=dojox.dtl;
|
15 |
var _1=dd.contrib.dijit;
|
16 |
_1.AttachNode=dojo.extend(function(_2,_3){
|
17 |
this._keys=_2;
|
18 |
this._object=_3;
|
19 |
},{render:function(_4,_5){ |
20 |
if(!this._rendered){ |
21 |
this._rendered=true; |
22 |
for(var i=0,_6;_6=this._keys[i];i++){ |
23 |
_4.getThis()[_6]=this._object||_5.getParent();
|
24 |
} |
25 |
} |
26 |
return _5;
|
27 |
},unrender:function(_7,_8){ |
28 |
if(this._rendered){ |
29 |
this._rendered=false; |
30 |
for(var i=0,_9;_9=this._keys[i];i++){ |
31 |
if(_7.getThis()[_9]===(this._object||_8.getParent())){ |
32 |
delete _7.getThis()[_9];
|
33 |
} |
34 |
} |
35 |
} |
36 |
return _8;
|
37 |
},clone:function(_a){ |
38 |
return new this.constructor(this._keys,this._object); |
39 |
}}); |
40 |
_1.EventNode=dojo.extend(function(_b,_c){
|
41 |
this._command=_b;
|
42 |
var _d,_e=_b.split(/\s*,\s*/); |
43 |
var _f=dojo.trim;
|
44 |
var _10=[];
|
45 |
var fns=[];
|
46 |
while(_d=_e.pop()){
|
47 |
if(_d){
|
48 |
var fn=null; |
49 |
if(_d.indexOf(":")!=-1){ |
50 |
var _11=_d.split(":"); |
51 |
_d=_f(_11[0]);
|
52 |
fn=_f(_11.slice(1).join(":")); |
53 |
}else{
|
54 |
_d=_f(_d); |
55 |
} |
56 |
if(!fn){
|
57 |
fn=_d; |
58 |
} |
59 |
_10.push(_d); |
60 |
fns.push(fn); |
61 |
} |
62 |
} |
63 |
this._types=_10;
|
64 |
this._fns=fns;
|
65 |
this._object=_c;
|
66 |
this._rendered=[];
|
67 |
},{_clear:false,render:function(_12,_13){ |
68 |
for(var i=0,_14;_14=this._types[i];i++){ |
69 |
if(!this._clear&&!this._object){ |
70 |
_13.getParent()[_14]=null;
|
71 |
} |
72 |
var fn=this._fns[i]; |
73 |
var _15;
|
74 |
if(fn.indexOf(" ")!=-1){ |
75 |
if(this._rendered[i]){ |
76 |
dojo.disconnect(this._rendered[i]);
|
77 |
this._rendered[i]=false; |
78 |
} |
79 |
_15=dojo.map(fn.split(" ").slice(1),function(_16){ |
80 |
return new dd._Filter(_16).resolve(_12); |
81 |
}); |
82 |
fn=fn.split(" ",2)[0]; |
83 |
} |
84 |
if(!this._rendered[i]){ |
85 |
if(!this._object){ |
86 |
this._rendered[i]=_13.addEvent(_12,_14,fn,_15);
|
87 |
}else{
|
88 |
this._rendered[i]=dojo.connect(this._object,_14,_12.getThis(),fn); |
89 |
} |
90 |
} |
91 |
} |
92 |
this._clear=true; |
93 |
return _13;
|
94 |
},unrender:function(_17,_18){ |
95 |
while(this._rendered.length){ |
96 |
dojo.disconnect(this._rendered.pop());
|
97 |
} |
98 |
return _18;
|
99 |
},clone:function(){ |
100 |
return new this.constructor(this._command,this._object); |
101 |
}}); |
102 |
function _19(n1){ |
103 |
var n2=n1.cloneNode(true); |
104 |
if(dojo.isIE){
|
105 |
dojo.query("script",n2).forEach("item.text = this[index].text;",dojo.query("script",n1)); |
106 |
} |
107 |
return n2;
|
108 |
}; |
109 |
_1.DojoTypeNode=dojo.extend(function(_1a,_1b){
|
110 |
this._node=_1a;
|
111 |
this._parsed=_1b;
|
112 |
var _1c=_1a.getAttribute("dojoAttachEvent"); |
113 |
if(_1c){
|
114 |
this._events=new _1.EventNode(dojo.trim(_1c)); |
115 |
} |
116 |
var _1d=_1a.getAttribute("dojoAttachPoint"); |
117 |
if(_1d){
|
118 |
this._attach=new _1.AttachNode(dojo.trim(_1d).split(/\s*,\s*/)); |
119 |
} |
120 |
if(!_1b){
|
121 |
this._dijit=dojo.parser.instantiate([_19(_1a)])[0]; |
122 |
}else{
|
123 |
_1a=_19(_1a); |
124 |
var old=_1.widgetsInTemplate;
|
125 |
_1.widgetsInTemplate=false;
|
126 |
this._template=new dd.DomTemplate(_1a); |
127 |
_1.widgetsInTemplate=old; |
128 |
} |
129 |
},{render:function(_1e,_1f){ |
130 |
if(this._parsed){ |
131 |
var _20=new dd.DomBuffer(); |
132 |
this._template.render(_1e,_20);
|
133 |
var _21=_19(_20.getRootNode());
|
134 |
var div=document.createElement("div"); |
135 |
div.appendChild(_21); |
136 |
var _22=div.innerHTML;
|
137 |
div.removeChild(_21); |
138 |
if(_22!=this._rendered){ |
139 |
this._rendered=_22;
|
140 |
if(this._dijit){ |
141 |
this._dijit.destroyRecursive();
|
142 |
} |
143 |
this._dijit=dojo.parser.instantiate([_21])[0]; |
144 |
} |
145 |
} |
146 |
var _23=this._dijit.domNode; |
147 |
if(this._events){ |
148 |
this._events._object=this._dijit; |
149 |
this._events.render(_1e,_1f);
|
150 |
} |
151 |
if(this._attach){ |
152 |
this._attach._object=this._dijit; |
153 |
this._attach.render(_1e,_1f);
|
154 |
} |
155 |
return _1f.concat(_23);
|
156 |
},unrender:function(_24,_25){ |
157 |
return _25.remove(this._dijit.domNode); |
158 |
},clone:function(){ |
159 |
return new this.constructor(this._node,this._parsed); |
160 |
}}); |
161 |
dojo.mixin(_1,{widgetsInTemplate:true,dojoAttachPoint:function(_26,_27){ |
162 |
return new _1.AttachNode(_27.contents.slice(16).split(/\s*,\s*/)); |
163 |
},dojoAttachEvent:function(_28,_29){ |
164 |
return new _1.EventNode(_29.contents.slice(16)); |
165 |
},dojoType:function(_2a,_2b){ |
166 |
var _2c=false; |
167 |
if(_2b.contents.slice(-7)==" parsed"){ |
168 |
_2c=true;
|
169 |
} |
170 |
var _2d=_2b.contents.slice(9); |
171 |
var _2e=_2c?_2d.slice(0,-7):_2d.toString(); |
172 |
if(_1.widgetsInTemplate){
|
173 |
var _2f=_2a.swallowNode();
|
174 |
_2f.setAttribute("dojoType",_2e);
|
175 |
return new _1.DojoTypeNode(_2f,_2c); |
176 |
} |
177 |
return new dd.AttributeNode("dojoType",_2e); |
178 |
},on:function(_30,_31){ |
179 |
var _32=_31.contents.split();
|
180 |
return new _1.EventNode(_32[0]+":"+_32.slice(1).join(" ")); |
181 |
}}); |
182 |
dd.register.tags("dojox.dtl.contrib",{"dijit":["attr:dojoType","attr:dojoAttachPoint",["attr:attach","dojoAttachPoint"],"attr:dojoAttachEvent",[/(attr:)?on(click|key(up))/i,"on"]]}); |
183 |
})(); |
184 |
} |