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 |
} |