*/\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
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
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