X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.webapp%2Fsrc%2Fmain%2Fwebapp%2Fargeo-ria-lib%2Fslc%2Fclass%2Forg%2Fargeo%2Fslc%2Fria%2FNewLauncherApplet.js;h=640712e9afc362c883773fa287068aaf379db325;hb=07accaabbde7297dae82ec434fb88027a65fef23;hp=f849496414dffc62638d276bb2f8c6512d013980;hpb=504334a99b89485b6c2c349738aae8be1a755276;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js index f84949641..640712e9a 100644 --- a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js +++ b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js @@ -9,11 +9,7 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", construct : function(){ this.base(arguments); - this.setLayout(new qx.ui.layout.Dock()); - - this.COMMON_FORM_HEADER_LABEL = "Choose Agent"; - this.CHOOSE_AGENT_LABEL = "Agent Uuid"; - this.CHOOSE_FORM_PART_LABEL = "Test Type"; + this.setLayout(new qx.ui.layout.Dock()); }, properties : @@ -29,24 +25,116 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", check:"org.argeo.ria.components.ViewSelection" }, instanceId : {init:""}, - instanceLabel : {init:""}, + instanceLabel : {init:""}, + /** + * A boolean registering whether the SpecEditor must autoOpen or not when a spec is added to the Batch. + */ + autoOpen : { + init : true, + check : "Boolean" + }, /** * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions} */ commands : { init : { "submitform" : { - label : "Execute", + label : "Execute Batch On...", icon : "resource/slc/media-playback-start.png", - shortcut : "Control+e", + shortcut : null, enabled : true, menu : "Launcher", - toolbar : "launcher", + toolbar : null, + callback : function(e){}, + submenu : [], + submenuCallback : function(commandId){ + //alert("Execute Batch on Agent "+commandId); + this.executeBatchOnAgent(commandId); + }, + command : null + }, + "addtobatch" : { + label : "Add to batch", + icon : "resource/slc/list-add.png", + shortcut : null, + enabled : true, + menu : null, + toolbar : null, callback : function(e){ - this.submitForm(); + this._addFlowToBatch(); + }, + selectionChange : function(viewId, selection){ + if(viewId != "form:tree") return; + if(!selection || selection.length != 1) return; + var item = selection[0]; + this.setEnabled(false); + if(qx.Class.isSubClassOf(qx.Class.getByName(item.classname), qx.ui.tree.TreeFile)){ + this.setEnabled(true); + } + + }, + command : null + }, + "toggleopenonadd" : { + label : "Auto Open", + icon : "resource/slc/document-open.png", + shortcut : null, + enabled : true, + toggle : true, + toggleInitialState : true, + menu : "Launcher", + toolbar : "launcher", + callback : function(event){ + var state = event.getTarget().getUserData("slc.command.toggleState"); + this.setAutoOpen(state); }, command : null }, + "editexecutionspecs" : { + label : "Edit Execution Specs", + icon : "resource/slc/document-open.png", + shortcut : null, + enabled : false, + menu : "Launcher", + toolbar : null, + callback : function(e){ + var sel = this.list.getSortedSelection(); + var item = sel[0]; + var specEditor = new org.argeo.slc.ria.execution.SpecEditor(item.getUserData("batchEntrySpec")); + specEditor.attachAndShow(); + }, + selectionChange : function(viewId, selection){ + if(viewId != "form:list") return; + this.setEnabled(false); + if((selection && selection.length == 1)) this.setEnabled(true); + }, + command : null + }, + "removefrombatch" : { + label : "Remove from batch", + icon : "resource/slc/edit-delete.png", + shortcut : null, + enabled : false, + menu : "Launcher", + toolbar : null, + callback : function(e){ + var sel = this.list.getSortedSelection(); + var modal = new org.argeo.ria.components.Modal("Confirm", null); + modal.addConfirm("Are you sure you want to remove
the selected test" + (sel.length>1?"s":"") + " from the Batch?"); + modal.addListener("ok", function(){ + for(var i=0;i 0)) this.setEnabled(true); + }, + command : null + }, "reloadagents" : { label : "Reload Agents", icon : "resource/slc/view-refresh.png", @@ -60,30 +148,49 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", }, command : null }, - "testloadmodules" : { - label : "Load Modules", + "reloadtree" : { + label : "Reload", icon : "resource/slc/view-refresh.png", shortcut : "Control+m", - enabled : true, + enabled : false, menu : "Launcher", toolbar : "launcher", callback : function(e){ - var req = org.argeo.ria.remote.RequestManager.getInstance().getRequest("stub.xml", "GET", "application/xml"); - req.addListener("completed", function(response){ - var executionModule = new org.argeo.slc.ria.module.ExecutionModule(); - executionModule.setXmlNode(response.getContent()); - this.debug(executionModule.getName()); - this.debug(qx.lang.Object.getLength(executionModule.getExecutionFlows())); - this.debug(qx.lang.Object.getLength(executionModule.getExecutionSpecs())); - }, this); - req.send(); - /* - this._amqClient.sendMessage("modulesManager.request", "", { - "action":"getExecutionModuleDescriptor", - "name" : "org.argeo.slc.demo.basic", - "version" : "WHATEVER" - }); - */ + var selected = this.tree.getSelectedItem(); + if(selected.classname == "org.argeo.ria.components.DynamicTreeFolder"){ + 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){ + if(viewId != "form:tree") return; + if(!selection || selection.length != 1) return; + var item = selection[0]; + if(!qx.Class.isSubClassOf(qx.Class.getByName(item.classname), qx.ui.tree.AbstractTreeItem)) return; + this.setEnabled(false); + if(qx.Class.isSubClassOf(qx.Class.getByName(item.classname), org.argeo.ria.components.DynamicTreeFolder)){ + this.setEnabled(true); + } }, command : null } @@ -99,6 +206,104 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", } }, + statics : { + /** + * Loader for the "flow" level : takes a folder containing "moduleData" and create its children. + * @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 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(); + executionModule.setXmlNode(response.getContent()); + 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]); + org.argeo.slc.ria.NewLauncherApplet.attachNodeByPath(folder, path, file); + folder.appendDragData(file); + } + folder.setLoaded(true); + }); + req.send(); + }, + + /** + * Loader for the "modules" level : takes any tree folder, currently the root folder. + * @param folder {qx.ui.tree.TreeFolder} The root folder + */ + modulesLoader : function(folder){ + var req = org.argeo.slc.ria.SlcApi.getListModulesService(); + req.addListener("completed", function(response){ + var descriptors = org.argeo.ria.util.Element.selectNodes(response.getContent(), "slc:object-list/slc:execution-module-descriptor"); + var mods = {}; + for(var i=0;i 1){ - // Add chooser - this.partChooser = new qx.ui.form.SelectBox(); - for(var key in this.parts){ - this.partChooser.add(new qx.ui.form.ListItem(this.parts[key].label, null, key)); - } - this._addFormEntry(commonForm, new qx.ui.basic.Label(this.CHOOSE_FORM_PART_LABEL), this.partChooser); - this.partChooser.addListener("changeValue", function(ev){ - this._showSelectedPart(ev.getData()); - }, this); - } - this._showSelectedPart(qx.lang.Object.getKeys(this.parts)[0]); - }, - - /** - * Show a form part given its id. - * @param partId {String} The part id - */ - _showSelectedPart : function(partId){ - if(!this.parts) return; - if(!this.partsContainer){ - this.partsContainer = new qx.ui.container.Composite(new qx.ui.layout.Canvas()); - this.formPane.add(this.partsContainer); - } - for(var i in this.parts){ - var formObject = this.parts[i]; - if(!formObject.added){ - this.partsContainer.add(formObject.pane, {top:0, left:0}); - formObject.added = true; + this.list.addListener("changeSelection", function(e){ + var viewSelection = this.getViewSelection(); + viewSelection.setViewId("form:list"); + viewSelection.clear(); + var listSel = this.list.getSortedSelection(); + for(var i=0;i