Refresh/remove a query
authorCharles du Jeu <charles.dujeu@gmail.com>
Thu, 29 Apr 2010 13:03:39 +0000 (13:03 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Thu, 29 Apr 2010 13:03:39 +0000 (13:03 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@3527 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/org.argeo.slc.ria/src/argeo-ria-lib/jcr/class/org/argeo/jcr/ria/views/QueriesView.js

index 5a8dd840f6982c38857d718b1539215b03758d50..7b6c2d84f8cc0c163e18d7fd4796a079d90db8e0 100644 (file)
@@ -9,12 +9,32 @@ qx.Class.define("org.argeo.jcr.ria.views.QueriesView", {
                 */\r
                commands : {\r
                        init : {\r
+                               "refresh_query" : {\r
+                                       label : "Refresh",\r
+                                       icon : "org.argeo.slc.ria/media-playback-start.png",\r
+                                       shortcut : null,\r
+                                       enabled : true,\r
+                                       menu : "Query",\r
+                                       toolbar : null,\r
+                                       callback : function(e) {\r
+                                               var selection = this.tree.getSelection();\r
+                                               if(!selection.length) return;\r
+                                               var treeNode = selection[0];\r
+                                               this._submitQuery(treeNode);\r
+                                       },\r
+                                       selectionChange : function(viewId, selection){\r
+                                               this.setEnabled(false);\r
+                                               if(selection && selection.length && !selection[0].getJcrNode){\r
+                                                       this.setEnabled(true);\r
+                                               }\r
+                                       }\r
+                               },\r
                                "remove_query" : {\r
                                        label : "Remove",\r
                                        icon : "org.argeo.slc.ria/media-playback-start.png",\r
                                        shortcut : null,\r
                                        enabled : true,\r
-                                       menu : "Queries",\r
+                                       menu : "Query",\r
                                        toolbar : null,\r
                                        callback : function(e) {\r
                                                var selection = this.tree.getSelection();\r
@@ -142,31 +162,48 @@ qx.Class.define("org.argeo.jcr.ria.views.QueriesView", {
                                                        return;\r
                                                }\r
                                        }\r
-                               }else if(crtTreeSel.getParent() && crtTreeSel.getJcrNode().getParent().getPath() == selection[0].getPath()){\r
+                               }else if(crtTreeSel.getJcrNode().getParent() && crtTreeSel.getJcrNode().getParent().getPath() == selection[0].getPath()){\r
                                        this.tree.setSelection([crtTreeSel.getParent()]);\r
                                }\r
                                \r
                        }, this);\r
                        this.tree.setContextMenu(org.argeo.ria.event.CommandsManager\r
-                                       .getInstance().createMenuFromIds(["open", "remove_query"]));\r
+                                       .getInstance().createMenuFromIds(["open", "refresh_query", "remove_query"]));\r
                                        \r
                },\r
                \r
-               _submitQuery : function(){\r
-                       var query = this.textarea.getValue();\r
-                       var language = this.radio.getModelSelection()[0];\r
+               _submitQuery : function(existingQueryFolder){\r
+                       var query;\r
+                       var language;\r
+                       if(existingQueryFolder){\r
+                               var model = existingQueryFolder.getModel();\r
+                               query = model.query;\r
+                               language = model.language;\r
+                               existingQueryFolder.removeAll();\r
+                       }else{\r
+                               query = this.textarea.getValue();\r
+                               language = this.radio.getModelSelection()[0];\r
+                       }\r
                        var src = "/org.argeo.slc.webapp/queryJcrNodes.jcr?language="+language+"&statement="+query;\r
                        var conn = new org.argeo.ria.remote.Request(src, "GET", "application/json");\r
                        conn.addListener("completed", function(response){\r
                                var json = response.getContent();\r
-                               this._addQueryResult(language, query, json);\r
+                               this._addQueryResult(language, query, json, existingQueryFolder);\r
                        }, this);\r
                        conn.send();\r
                },\r
                \r
-               _addQueryResult : function(language, query, results){\r
-                       var treeQuery = new qx.ui.tree.TreeFolder((language=="xpath"?"XPath":"SQL") + " query : '"+query+"' ("+results.length+")");\r
-                       this.treeBase.add(treeQuery);                   \r
+               _addQueryResult : function(language, query, results, queryFolder){\r
+                       \r
+                       var label = (language=="xpath"?"XPath":"SQL") + " query : '"+query+"' ("+results.length+")";\r
+                       if(queryFolder){\r
+                               queryFolder.setLabel(label);\r
+                               var treeQuery = queryFolder;\r
+                       }else{\r
+                               var treeQuery = new qx.ui.tree.TreeFolder(label);\r
+                               treeQuery.setModel({language:language, query:query});\r
+                               this.treeBase.add(treeQuery);\r
+                       }\r
                        var realRoot = this.getDataModel().getRootNode();\r
                        var provider = realRoot.getNodeProvider();\r
                        for(var i=0;i<results.length;i++){\r
@@ -176,7 +213,7 @@ qx.Class.define("org.argeo.jcr.ria.views.QueriesView", {
                                treeQuery.add(childTree);\r
                        }                       \r
                },\r
-               \r
+                               \r
                /**\r
                 * Whether this component is already contained in a scroller (return false) or not (return true).\r
                 * @return {Boolean}\r