]>
git.argeo.org Git - gpl/argeo-slc.git/blob - XmlNodeProvider.js
ee98349734931297f724c77c8b08a175aa5860c0
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
38 var children
= this._xmlDoc
.documentElement
.childNodes
;
39 for(var i
=0;i
<children
.length
;i
++){
40 var subchildren
= children
[i
].childNodes
;
41 for(var j
=0;j
<subchildren
.length
;j
++){
42 children
[i
].removeChild(subchildren
[j
]);
46 node
.fromDomElement(this._xmlDoc
.documentElement
);
47 node
.setLoadState("loaded");
48 if(properties
.dynamic
){
49 this.setXmlDocLoaded(false);
52 this.addListenerOnce("changeXmlDocLoaded", function(){
53 this.loadNode(node
, nodeCallback
, childCallback
);
55 node
.setLoadState("loading");
56 this.loadXmlDoc(node
);
60 loadXmlDoc : function(node
){
61 var properties
= this.getSettings();
62 if(!properties
.xmlSrc
&& !properties
.xmlString
) return;
63 if(properties
.xmlSrc
){
64 var request
= new org
.argeo
.ria
.remote
.Request(properties
.xmlSrc
, 'GET', 'application/xml');
65 if(properties
.dynamic
&& properties
.pathParameter
){
66 request
.setParameter(properties
.pathParameter
, (node
.getPath()|| "/"));
68 request
.addListener("completed", function(response
){
69 this._xmlDoc
= response
.getContent();
70 this.setXmlDocLoaded(true);
74 this._xmlDoc
= qx
.xml
.Document
.fromString(properties
.xmlString
);
75 this.setXmlDocLoaded(true);