]>
git.argeo.org Git - gpl/argeo-slc.git/blob - XmlNodeProvider.js
0f7057a37f9b4091e2cc6026bc1b3a7cda5d184c
1 qx
.Class
.define("org.argeo.jcr.ria.provider.XmlNodeProvider", {
2 extend
: qx
.core
.Object
,
3 implement
: [org
.argeo
.jcr
.ria
.provider
.INodeProvider
],
15 event
: "changeXmlDocLoaded"
21 initProvider : function(properties
){
22 this.setSettings(properties
);
26 * @param node org.argeo.jcr.ria.model.Node
27 * @param nodeCallback Function
28 * @param childCallback Function
30 loadNode : function(node
, nodeCallback
, childCallback
){
31 if(node
.getLoadState() == "loaded") return;
33 if(this.getXmlDocLoaded()){
34 // Parse document and load
35 node
.setName(this._xmlDoc
.documentElement
.nodeName
);
36 var properties
= this.getSettings();
37 // STUB : prune sub children, load only level 1
39 var children = this._xmlDoc.documentElement.childNodes;
40 for(var i=0;i<children.length;i++){
41 var subchildren = children[i].childNodes;
42 for(var j=0;j<subchildren.length;j++){
43 children[i].removeChild(subchildren[j]);
48 node
.fromDomElement(this._xmlDoc
.documentElement
);
49 if(properties
.dynamic
){
50 this.setXmlDocLoaded(false);
53 this.addListenerOnce("changeXmlDocLoaded", function(){
54 this.loadNode(node
, nodeCallback
, childCallback
);
56 node
.setLoadState("loading");
57 this.loadXmlDoc(node
);
61 loadXmlDoc : function(node
){
62 var properties
= this.getSettings();
63 if(!properties
.xmlSrc
&& !properties
.xmlString
) return;
64 if(properties
.xmlSrc
){
65 var request
= new org
.argeo
.ria
.remote
.Request(properties
.xmlSrc
, 'GET', 'application/xml');
66 if(properties
.dynamic
&& properties
.pathParameter
){
67 request
.setParameter(properties
.pathParameter
, (node
.getPath()|| "/"));
69 request
.addListener("completed", function(response
){
70 this._xmlDoc
= response
.getContent();
71 this.setXmlDocLoaded(true);
75 this._xmlDoc
= qx
.xml
.Document
.fromString(properties
.xmlString
);
76 this.setXmlDocLoaded(true);