]> git.argeo.org Git - gpl/argeo-slc.git/blob - server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/model/DataModel.js
Refresh/remove a query
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-lib / jcr / class / org / argeo / jcr / ria / model / DataModel.js
1 qx.Class.define("org.argeo.jcr.ria.model.DataModel", {
2 extend : qx.core.Object,
3
4 events : {
5 "changeContextNode" : "qx.event.type.Data"
6 },
7
8 properties : {
9 rootNode : {
10 check : "org.argeo.jcr.ria.model.Node",
11 event : "changeRootNode"
12 },
13 contextNode : {
14 check : "org.argeo.jcr.ria.model.Node"
15 },
16 selection : {
17 check : "Array",
18 event : "changeSelection",
19 init : []
20 },
21 selectionSource : {
22 check : "Object",
23 init : null,
24 nullable : true
25 }
26 },
27
28 construct : function(rootNode){
29 this.base(arguments);
30 this.setRootNode(rootNode);
31 },
32
33 members : {
34 requireContextChange : function(path){
35 var targetNode;
36 var rootNode = this.getRootNode();
37 this.setSelection([]);
38 if(!path){
39 targetNode = rootNode;
40 }else{
41 // Create a fake node
42 if(path[path.length-1] == '/'){
43 path = path.substring(0, path.length-1);
44 }
45 var base = path.substring(path.lastIndexOf("/")+1);
46 targetNode = new org.argeo.jcr.ria.model.Node(base, rootNode.getNodeProvider());
47 rootNode.addChild(targetNode);
48 targetNode.setPath(path);
49 }
50 var observer = function(event){
51 var state = event.getData();
52 if(state == "loading"){
53 targetNode.loadingNode = new org.argeo.jcr.ria.model.Node("loading");
54 targetNode.addChild(targetNode.loadingNode);
55 }else if(state == "loaded"){
56 if(targetNode.loadingNode) {
57 targetNode.loadingNode.remove();
58 targetNode.loadingNode = null;
59 }
60 targetNode.removeListener("changeLoadState", observer, this);
61 }
62 this.setContextNode(targetNode);
63 this.fireDataEvent("changeContextNode", targetNode);
64 };
65 targetNode.addListener("changeLoadState", observer, this);
66 targetNode.load(1);
67 },
68 setSelectionWithSource : function(selection, source){
69 this.setSelectionSource(source);
70 this.setSelection(selection);
71 }
72 }
73
74 });