callback : function(e){
var selected = this.tree.getSelectedItem();
if(selected.classname == "org.argeo.ria.components.DynamicTreeFolder"){
- selected.reload();
+ if(selected.getUserData("moduleData")){
+ // It's a "module" node, first trigger the reloadBundle.service
+ selected.setUserData("dataModel", {});
+ selected.setEnabled(false);
+ selected.setOpen(false);
+ var moduleData = selected.getUserData("moduleData");
+ var bundleService = org.argeo.slc.ria.SlcApi.getReloadBundleService(moduleData.name, moduleData.version);
+ bundleService.addListener("completed", function(response){
+ selected.setEnabled(true);
+ selected.setOpen(true);
+ selected.reload();
+ }, this);
+ //bundleService.send();
+ //Do not send, not implemented yet, false timer instead.
+ qx.event.Timer.once(function(response){
+ selected.setEnabled(true);
+ selected.setOpen(true);
+ selected.reload();
+ }, this, 2000);
+ }else{
+ selected.reload();
+ }
}
},
selectionChange : function(viewId, selection){
* @param folder {qx.ui.tree.TreeFolder} A Tree folder containing in the key "moduleData" of its user data a map containing the keys {name,version}
*/
flowLoader : function(folder){
- var moduleData = folder.getUserData("moduleData");
- //var req = org.argeo.ria.remote.RequestManager.getInstance().getRequest("../argeo-ria-src/stub.xml", "GET", "application/xml");
+ var moduleData = folder.getUserData("moduleData");
+ //var pathStub = ["", "/test/toto/zobi", "loop"];
+ //var indexStub = 0;
+
var req = org.argeo.slc.ria.SlcApi.getLoadExecutionDescriptorService(moduleData.name, moduleData.version);
req.addListener("completed", function(response){
var executionModule = new org.argeo.slc.ria.execution.Module();
var execFlows = executionModule.getExecutionFlows();
for(var key in execFlows){
var file = new qx.ui.tree.TreeFile(key);
+ var path = execFlows[key].getPath();
+ //path = pathStub[indexStub];
+ //indexStub ++;
file.setUserData("executionModule", executionModule);
file.setUserData("executionFlow", execFlows[key]);
- folder.add(file);
+ org.argeo.slc.ria.NewLauncherApplet.attachNodeByPath(folder, path, file);
+ folder.appendDragData(file);
}
folder.setLoaded(true);
});
req.addListener("completed", function(response){
var descriptors = org.argeo.ria.util.Element.selectNodes(response.getContent(), "slc:object-list/slc:execution-module-descriptor");
var mods = {};
- // STUB
- /*
- var mods = {
- "Module 1":["ver1.1", "ver1.2", "ver1.3"],
- "Module 2":["ver2.1", "ver2.2", "ver2.3", "ver2.4"],
- "Module 3":["ver3.1", "ver3.2"]
- };
- */
for(var i=0;i<descriptors.length; i++){
var name = org.argeo.ria.util.Element.getSingleNodeText(descriptors[i], "slc:name");
var version = org.argeo.ria.util.Element.getSingleNodeText(descriptors[i], "slc:version");
}
var flowLoader = org.argeo.slc.ria.NewLauncherApplet.flowLoader;
for(var key in mods){
- var moduleFolder = new qx.ui.tree.TreeFolder(key);
- folder.add(moduleFolder);
for(var i=0;i<mods[key].length;i++){
var versionFolder = new org.argeo.ria.components.DynamicTreeFolder(
- mods[key][i],
+ key + ' ('+mods[key][i]+')',
flowLoader,
"Loading Flows",
folder.getDragData()
);
- moduleFolder.add(versionFolder);
+ folder.add(versionFolder);
versionFolder.setUserData("moduleData", {name:key, version:mods[key][i]});
}
folder.setLoaded(true);
}
});
req.send();
+ },
+
+ /**
+ * Parse a string path and search if there is a root node.
+ * @param rootNode {qx.ui.tree.AbstractTreeItem} The parent node (containing data model)
+ * @param path {String} The path of the node to attach.
+ */
+ attachNodeByPath : function(rootNode, path, childNode){
+ if(!path || path=="" || path == "/" ){
+ rootNode.add(childNode);
+ return;
+ }
+ var model = rootNode.getUserData("dataModel");
+ if(!model){
+ model = {};
+ rootNode.setUserData("dataModel", model);
+ }
+ var parts = path.split("/");
+ var keys = qx.lang.Object.getKeys(model);
+ var crtPath = "/";
+ var crtFolder = rootNode;
+ for(var i=0;i<parts.length;i++){
+ if(parts[i] == "") continue;
+ crtPath += parts[i];
+ if(!model[parts[i]]) {
+ var virtualFolder = new qx.ui.tree.TreeFolder(parts[i]);
+ model[parts[i]] = virtualFolder;
+ crtFolder.add(virtualFolder);
+ crtFolder = virtualFolder;
+ }else{
+ crtFolder = model[parts[i]];
+ }
+ }
+ crtFolder.add(childNode);
}
},
var label = batchEntry.getLabel();
var icon = target.getIcon();
var item = new qx.ui.form.ListItem(label, icon);
+ item.addListener("dblclick", function(e){
+ this.getCommands()["editexecutionspecs"].command.execute();
+ }, this);
item.setUserData("batchEntrySpec", batchEntry);
item.setPaddingTop(1);
item.setPaddingBottom(2);