You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
225 lines
4.8 KiB
225 lines
4.8 KiB
/* |
|
Copyright (c) 2004-2006, The Dojo Foundation |
|
All Rights Reserved. |
|
|
|
Licensed under the Academic Free License version 2.1 or above OR the |
|
modified BSD license. For more information on Dojo licensing, see: |
|
|
|
http://dojotoolkit.org/community/licensing.shtml |
|
*/ |
|
|
|
|
|
dojo.provide("dojo.widget.Parse"); |
|
dojo.require("dojo.widget.Manager"); |
|
dojo.require("dojo.dom"); |
|
dojo.widget.Parse=function(_1){ |
|
this.propertySetsList=[]; |
|
this.fragment=_1; |
|
this.createComponents=function(_2,_3){ |
|
var _4=[]; |
|
var _5=false; |
|
try{ |
|
if(_2&&_2.tagName&&(_2!=_2.nodeRef)){ |
|
var _6=dojo.widget.tags; |
|
var _7=String(_2.tagName).split(";"); |
|
for(var x=0;x<_7.length;x++){ |
|
var _9=_7[x].replace(/^\s+|\s+$/g,"").toLowerCase(); |
|
_2.tagName=_9; |
|
var _a; |
|
if(_6[_9]){ |
|
_5=true; |
|
_a=_6[_9](_2,this,_3,_2.index); |
|
_4.push(_a); |
|
}else{ |
|
if(_9.indexOf(":")==-1){ |
|
_9="dojo:"+_9; |
|
} |
|
_a=dojo.widget.buildWidgetFromParseTree(_9,_2,this,_3,_2.index); |
|
if(_a){ |
|
_5=true; |
|
_4.push(_a); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
catch(e){ |
|
dojo.debug("dojo.widget.Parse: error:",e); |
|
} |
|
if(!_5){ |
|
_4=_4.concat(this.createSubComponents(_2,_3)); |
|
} |
|
return _4; |
|
}; |
|
this.createSubComponents=function(_b,_c){ |
|
var _d,_e=[]; |
|
for(var _f in _b){ |
|
_d=_b[_f]; |
|
if(_d&&typeof _d=="object"&&(_d!=_b.nodeRef)&&(_d!=_b.tagName)&&(!dojo.dom.isNode(_d))){ |
|
_e=_e.concat(this.createComponents(_d,_c)); |
|
} |
|
} |
|
return _e; |
|
}; |
|
this.parsePropertySets=function(_10){ |
|
return []; |
|
}; |
|
this.parseProperties=function(_11){ |
|
var _12={}; |
|
for(var _13 in _11){ |
|
if((_11[_13]==_11.tagName)||(_11[_13]==_11.nodeRef)){ |
|
}else{ |
|
var _14=_11[_13]; |
|
if(_14.tagName&&dojo.widget.tags[_14.tagName.toLowerCase()]){ |
|
}else{ |
|
if(_14[0]&&_14[0].value!=""&&_14[0].value!=null){ |
|
try{ |
|
if(_13.toLowerCase()=="dataprovider"){ |
|
var _15=this; |
|
this.getDataProvider(_15,_14[0].value); |
|
_12.dataProvider=this.dataProvider; |
|
} |
|
_12[_13]=_14[0].value; |
|
var _16=this.parseProperties(_14); |
|
for(var _17 in _16){ |
|
_12[_17]=_16[_17]; |
|
} |
|
} |
|
catch(e){ |
|
dojo.debug(e); |
|
} |
|
} |
|
} |
|
switch(_13.toLowerCase()){ |
|
case "checked": |
|
case "disabled": |
|
if(typeof _12[_13]!="boolean"){ |
|
_12[_13]=true; |
|
} |
|
break; |
|
} |
|
} |
|
} |
|
return _12; |
|
}; |
|
this.getDataProvider=function(_18,_19){ |
|
dojo.io.bind({url:_19,load:function(_1a,_1b){ |
|
if(_1a=="load"){ |
|
_18.dataProvider=_1b; |
|
} |
|
},mimetype:"text/javascript",sync:true}); |
|
}; |
|
this.getPropertySetById=function(_1c){ |
|
for(var x=0;x<this.propertySetsList.length;x++){ |
|
if(_1c==this.propertySetsList[x]["id"][0].value){ |
|
return this.propertySetsList[x]; |
|
} |
|
} |
|
return ""; |
|
}; |
|
this.getPropertySetsByType=function(_1e){ |
|
var _1f=[]; |
|
for(var x=0;x<this.propertySetsList.length;x++){ |
|
var cpl=this.propertySetsList[x]; |
|
var _22=cpl.componentClass||cpl.componentType||null; |
|
var _23=this.propertySetsList[x]["id"][0].value; |
|
if(_22&&(_23==_22[0].value)){ |
|
_1f.push(cpl); |
|
} |
|
} |
|
return _1f; |
|
}; |
|
this.getPropertySets=function(_24){ |
|
var ppl="dojo:propertyproviderlist"; |
|
var _26=[]; |
|
var _27=_24.tagName; |
|
if(_24[ppl]){ |
|
var _28=_24[ppl].value.split(" "); |
|
for(var _29 in _28){ |
|
if((_29.indexOf("..")==-1)&&(_29.indexOf("://")==-1)){ |
|
var _2a=this.getPropertySetById(_29); |
|
if(_2a!=""){ |
|
_26.push(_2a); |
|
} |
|
}else{ |
|
} |
|
} |
|
} |
|
return this.getPropertySetsByType(_27).concat(_26); |
|
}; |
|
this.createComponentFromScript=function(_2b,_2c,_2d,ns){ |
|
_2d.fastMixIn=true; |
|
var ltn=(ns||"dojo")+":"+_2c.toLowerCase(); |
|
if(dojo.widget.tags[ltn]){ |
|
return [dojo.widget.tags[ltn](_2d,this,null,null,_2d)]; |
|
} |
|
return [dojo.widget.buildWidgetFromParseTree(ltn,_2d,this,null,null,_2d)]; |
|
}; |
|
}; |
|
dojo.widget._parser_collection={"dojo":new dojo.widget.Parse()}; |
|
dojo.widget.getParser=function(_30){ |
|
if(!_30){ |
|
_30="dojo"; |
|
} |
|
if(!this._parser_collection[_30]){ |
|
this._parser_collection[_30]=new dojo.widget.Parse(); |
|
} |
|
return this._parser_collection[_30]; |
|
}; |
|
dojo.widget.createWidget=function(_31,_32,_33,_34){ |
|
var _35=false; |
|
var _36=(typeof _31=="string"); |
|
if(_36){ |
|
var pos=_31.indexOf(":"); |
|
var ns=(pos>-1)?_31.substring(0,pos):"dojo"; |
|
if(pos>-1){ |
|
_31=_31.substring(pos+1); |
|
} |
|
var _39=_31.toLowerCase(); |
|
var _3a=ns+":"+_39; |
|
_35=(dojo.byId(_31)&&!dojo.widget.tags[_3a]); |
|
} |
|
if((arguments.length==1)&&(_35||!_36)){ |
|
var xp=new dojo.xml.Parse(); |
|
var tn=_35?dojo.byId(_31):_31; |
|
return dojo.widget.getParser().createComponents(xp.parseElement(tn,null,true))[0]; |
|
} |
|
function fromScript(_3d,_3e,_3f,ns){ |
|
_3f[_3a]={dojotype:[{value:_39}],nodeRef:_3d,fastMixIn:true}; |
|
_3f.ns=ns; |
|
return dojo.widget.getParser().createComponentFromScript(_3d,_3e,_3f,ns); |
|
} |
|
_32=_32||{}; |
|
var _41=false; |
|
var tn=null; |
|
var h=dojo.render.html.capable; |
|
if(h){ |
|
tn=document.createElement("span"); |
|
} |
|
if(!_33){ |
|
_41=true; |
|
_33=tn; |
|
if(h){ |
|
dojo.body().appendChild(_33); |
|
} |
|
}else{ |
|
if(_34){ |
|
dojo.dom.insertAtPosition(tn,_33,_34); |
|
}else{ |
|
tn=_33; |
|
} |
|
} |
|
var _43=fromScript(tn,_31.toLowerCase(),_32,ns); |
|
if((!_43)||(!_43[0])||(typeof _43[0].widgetType=="undefined")){ |
|
throw new Error("createWidget: Creation of \""+_31+"\" widget failed."); |
|
} |
|
try{ |
|
if(_41&&_43[0].domNode.parentNode){ |
|
_43[0].domNode.parentNode.removeChild(_43[0].domNode); |
|
} |
|
} |
|
catch(e){ |
|
dojo.debug(e); |
|
} |
|
return _43[0]; |
|
};
|
|
|