+++ /dev/null
-qx.Class.define("org.argeo.jcr.ria.model.DataModel", {\r
- extend : qx.core.Object,\r
- \r
- events : {\r
- "changeContextNode" : "qx.event.type.Data"\r
- },\r
- \r
- properties : {\r
- rootNode : {\r
- check : "org.argeo.jcr.ria.model.Node",\r
- event : "changeRootNode" \r
- },\r
- contextNode : {\r
- check : "org.argeo.jcr.ria.model.Node"\r
- },\r
- selection : {\r
- check : "Array",\r
- event : "changeSelection",\r
- init : []\r
- },\r
- selectionSource : {\r
- check : "Object",\r
- init : null,\r
- nullable : true\r
- }\r
- },\r
- \r
- construct : function(rootNode){\r
- this.base(arguments);\r
- this.setRootNode(rootNode);\r
- },\r
- \r
- members : {\r
- requireContextChange : function(path){\r
- var targetNode;\r
- var rootNode = this.getRootNode();\r
- this.setSelection([]);\r
- if(!path){\r
- targetNode = rootNode;\r
- }else{\r
- // Create a fake node\r
- if(path[path.length-1] == '/'){\r
- path = path.substring(0, path.length-1);\r
- }\r
- var base = path.substring(path.lastIndexOf("/")+1);\r
- targetNode = new org.argeo.jcr.ria.model.Node(base, rootNode.getNodeProvider());\r
- rootNode.addChild(targetNode);\r
- targetNode.setPath(path); \r
- }\r
- var observer = function(event){\r
- var state = event.getData();\r
- if(state == "loading"){\r
- targetNode.loadingNode = new org.argeo.jcr.ria.model.Node("loading"); \r
- targetNode.addChild(targetNode.loadingNode);\r
- }else if(state == "loaded"){\r
- if(targetNode.loadingNode) {\r
- targetNode.loadingNode.remove();\r
- targetNode.loadingNode = null;\r
- }\r
- targetNode.removeListener("changeLoadState", observer, this);\r
- } \r
- this.setContextNode(targetNode);\r
- this.fireDataEvent("changeContextNode", targetNode);\r
- };\r
- targetNode.addListener("changeLoadState", observer, this);\r
- targetNode.load(1);\r
- },\r
- setSelectionWithSource : function(selection, source){\r
- this.setSelectionSource(source);\r
- this.setSelection(selection);\r
- }\r
- }\r
- \r
-});
\ No newline at end of file