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=d91a4a98d2b8be68c8070190adb048ba6ddff018;hb=d2f890cfecc56bddcf0fdca9e2c508567a11e498;hp=929c2664debce396084191371fd38daac01cec4b;hpb=aee7ea3ae6f38c9b03564230c71f6c265b9b5f26;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 929c2664d..d91a4a98d 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,7 +25,11 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", check:"org.argeo.ria.components.ViewSelection" }, instanceId : {init:""}, - instanceLabel : {init:""}, + instanceLabel : {init:""}, + autoOpen : { + init : true, + check : "Boolean" + }, /** * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions} */ @@ -45,7 +45,45 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", callback : function(e){}, submenu : [], submenuCallback : function(commandId){ - alert("Execute Batch on Agent "+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._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 }, @@ -59,10 +97,11 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", callback : function(e){ var sel = this.list.getSortedSelection(); var item = sel[0]; - alert('Edit Specs for : ' + item.getLabel()); + var specEditor = new org.argeo.slc.ria.execution.SpecEditor(item.getUserData("batchEntrySpec")); + specEditor.attachAndShow(); }, selectionChange : function(viewId, selection){ - if(viewId != "form") return; + if(viewId != "form:list") return; this.setEnabled(false); if((selection && selection.length == 1)) this.setEnabled(true); }, @@ -77,10 +116,17 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", toolbar : null, callback : function(e){ var sel = this.list.getSortedSelection(); - alert('Remove '+ sel.length+ ' elements from batch'); + 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); }, @@ -100,10 +146,10 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", command : null }, "reloadtree" : { - label : "Reload Node", + label : "Reload", icon : "resource/slc/view-refresh.png", shortcut : "Control+m", - enabled : true, + enabled : false, menu : "Launcher", toolbar : "launcher", callback : function(e){ @@ -111,7 +157,17 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", if(selected.classname == "org.argeo.ria.components.DynamicTreeFolder"){ 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 } } @@ -128,15 +184,22 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", statics : { flowLoader : function(folder){ - var moduleData = folder.getUserData("executionModule"); - var req = org.argeo.ria.remote.RequestManager.getInstance().getRequest("stub.xml", "GET", "application/xml"); + var moduleData = folder.getUserData("moduleData"); + var req = org.argeo.ria.remote.RequestManager.getInstance().getRequest("../argeo-ria-src/stub.xml", "GET", "application/xml"); req.addListener("completed", function(response){ var executionModule = new org.argeo.slc.ria.execution.Module(); executionModule.setXmlNode(response.getContent()); + // + // ARTIFIALLY REPLACE MODULE NAME / VERSION, FOR TESTS PURPOSES + // + executionModule.setName(moduleData.name); + executionModule.setVersion(moduleData.version); + // END var execFlows = executionModule.getExecutionFlows(); for(var key in execFlows){ var file = new qx.ui.tree.TreeFile(key); - file.setUserData("executionFlow", execFlows); + file.setUserData("executionModule", executionModule); + file.setUserData("executionFlow", execFlows[key]); folder.add(file); } folder.setLoaded(true); @@ -163,7 +226,7 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", folder.getDragData() ); moduleFolder.add(versionFolder); - //versionFolder.setUserData("executionModule", "object"); + versionFolder.setUserData("moduleData", {name:key, version:mods[key][i]}); } folder.setLoaded(true); } @@ -179,7 +242,6 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", init : function(viewPane){ this.setView(viewPane); this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId())); - //this._createForm(); this._amqClient = org.argeo.ria.remote.JmsClient.getInstance(); this._amqClient.startPolling(); }, @@ -263,6 +325,17 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", ); this.tree.setRoot(root); root.setOpen(true); + this.tree.setContextMenu(org.argeo.ria.event.CommandsManager.getInstance().createMenuFromIds(["addtobatch", "reloadtree"])); + + this.tree.addListener("changeSelection", function(e){ + var viewSelection = this.getViewSelection(); + viewSelection.setViewId("form:tree"); + viewSelection.clear(); + var sel = this.tree.getSortedSelection(); + 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]); + splitPane.add(this.listPane, 1); }, - - /** - * 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; - } - formObject.pane.hide(); - } - if(this.parts[partId]){ - this.parts[partId].pane.show(); - } - }, - - /** - * Init a form part : creates a pane, a set of fields, etc. - * @param formId {String} A unique ID - * @param label {String} A label - * @return {Map} The form part. - */ - _initFormPart : function(formId, label){ - if(!this.parts) this.parts = {}; - var formObject = {}; - formObject.hiddenFields = {}; - formObject.freeFields = []; - formObject.fields = {}; - formObject.id = formId; - formObject.label = label; - this.parts[formId] = formObject; - formObject.pane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)); - return formObject; - }, - - /** - * To be overriden by this class children. - */ - _createFormVariableParts : function(){ - var standard = this._initFormPart("standard", "Canonical"); - this._createStandardForm(standard); - var simple = this._initFormPart("simple", "SLC Sample"); - this._createSimpleForm(simple); - }, - - /** - * Creates a form for SLC demo - * @param formObject {Map} The form part - */ - _createSimpleForm : function(formObject){ - - this._addFormInputText(formObject, "ant.file", "File", "Category1/SubCategory2/build.xml"); - var moreButton = new qx.ui.basic.Image("resource/slc/list-add.png"); - moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter")); - moreButton.setCursor("pointer"); - moreButton.addListener("click", function(){ - this._addFormInputText(formObject); - }, this); - this._addFormHeader(formObject, "Add optionnal parameters", moreButton); - this._addFormInputText(formObject); - this._addFormInputText(formObject); - }, - - /** - * Create a canonical form. - * @param formObject {Map} The form part - */ - _createStandardForm : function(formObject){ - - this._addFormHeader(formObject, "Set Execution Parameters"); - this._addFormInputText(formObject, "status", "Status", "STARTED"); - this._addFormInputText(formObject, "host", "Host", "localhost"); - this._addFormInputText(formObject, "user", "User", "user"); - - var moreButton = new qx.ui.basic.Image("resource/slc/list-add.png"); - moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter")); - moreButton.setCursor("pointer"); - moreButton.addListener("click", function(){ - this._addFormInputText(formObject); - }, this); - this._addFormHeader(formObject, "Add optionnal parameters", moreButton); - this._addFormInputText(formObject); - this._addFormInputText(formObject); - }, - - /** - * Add an hidden field to the form - * @param formObject {Map} The form part - * @param fieldName {String} Name - * @param fieldValue {String} Value - */ - _addFormHiddenField : function(formObject, fieldName, fieldValue){ - formObject.hiddenFields[fieldName] = fieldValue; - }, - - /** - * Creates a simple label/input form entry. - * @param formObject {Map} The form part - * @param fieldName {String} Name - * @param fieldLabel {String} Label of the field - * @param defaultValue {String} The default value - * @param choiceValues {Map} An map of values - */ - _addFormInputText : function(formObject, fieldName, fieldLabel, defaultValue, choiceValues){ - var labelElement; - if(choiceValues){ - var fieldElement = new qx.ui.form.SelectBox(); - for(var key in choiceValues){ - fieldElement.add(new qx.ui.form.ListItem(choiceValues[key], null, key)); - } - }else{ - var fieldElement = new qx.ui.form.TextField(); + _addFlowToBatch : function(target, after){ + this.debug(target); + if(!target){ + target = this.tree.getSelectedItem(); + if(!target) return; + }else if(target.classname == "qx.ui.form.ListItem"){ + if(!after) return; + if(after == "first") this.list.addAt(target, 0); + else this.list.addAfter(target, after); + return; } - if(defaultValue){ - fieldElement.setValue(defaultValue); - } - if(fieldName && fieldLabel){ - labelElement = new qx.ui.basic.Label(fieldLabel); - formObject.fields[fieldName] = fieldElement; - }else{ - labelElement = new qx.ui.form.TextField(); - formObject.freeFields.push({ - labelEl:labelElement, - valueEl:fieldElement - }); - } - this._addFormEntry(formObject, labelElement, fieldElement); - }, - - /** - * Add an header - * @param formObject {Map} The form part - * @param content {Mixed} Content to add. - * @param additionnalButton {Mixed} Any widget to add on the east. - */ - _addFormHeader : function(formObject, content, additionnalButton){ - var header = new qx.ui.basic.Label(''+content+''); - header.setRich(true); - if(!additionnalButton){ - header.setPaddingTop(10); - formObject.pane.add(header); + var executionModule = target.getUserData("executionModule"); + var executionFlow = target.getUserData("executionFlow"); + var batchEntry = new org.argeo.slc.ria.execution.BatchEntrySpec(executionModule, executionFlow); + var label = batchEntry.getLabel(); + var icon = target.getIcon(); + var item = new qx.ui.form.ListItem(label, icon); + item.setUserData("batchEntrySpec", batchEntry); + item.setPaddingTop(1); + item.setPaddingBottom(2); + if(after){ + if(after == "first") this.list.addAt(item, 0); + else this.list.addAfter(item, after); }else{ - var pane = new qx.ui.container.Composite(new qx.ui.layout.Dock()); - pane.setPaddingTop(10); - pane.setPaddingRight(10); - pane.add(header, {edge:'center'}); - pane.add(additionnalButton, {edge:'east'}); - formObject.pane.add(pane); + this.list.add(item); } - }, - - /** - * Adds a label/input like entry in the form. - * @param formObject {Map} The form part - * @param labelElement {Object} Either a label or an input - * @param fieldElement {Object} Any form input. - */ - _addFormEntry : function(formObject, labelElement, fieldElement){ - var entryPane = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)); - labelElement.setWidth(100); - labelElement.setTextAlign("right"); - entryPane.add(labelElement); - entryPane.add(new qx.ui.basic.Label(':')); - fieldElement.setWidth(150); - entryPane.add(fieldElement); - formObject.pane.add(entryPane); - }, - - /* - _refreshTopicsSubscriptions : function(changeTopicsEvent){ - var oldTopics = changeTopicsEvent.getOldData() || {}; - var newTopics = changeTopicsEvent.getData(); - var removed = []; - var added = []; - for(var key in oldTopics){ - if(!newTopics[key]) { - //this._removeAmqListener(key); - } - } - for(var key in newTopics){ - if(!oldTopics[key]) { - //this._addAmqListener(key); - } + this.list.select(item); + if(this.getAutoOpen()){ + this.getCommands()["editexecutionspecs"].command.execute(); } }, - */ - + /** * Refresh the selector when the topics are updated. * @param changeTopicsEvent {qx.event.type.DataEvent} The reload event. @@ -577,27 +464,29 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet", var submenu = {"label":topics[key],"icon":"resource/slc/mime-xsl.png", "commandId":key}; menu.push(submenu); } + // FAKE!! + if(!menu.length){ + menu.push({"label":"Fake Agent", "icon":"resource/slc/mime-xsl.png", "commandId":"fake_agent_uuid"}); + } command.clearMenus(); command.setMenu(menu); if(menu.length) command.setEnabled(true); }, - - /* - _addAmqListener: function(uuid){ - this._amqClient.addListener("slcExec", "topic://agent."+uuid+".newExecution", function(response){ - var message = org.argeo.ria.util.Element.selectSingleNode(response, "slc:slc-execution"); - var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(message.getAttribute("uuid")); - slcExec.fromXml(message); - this.logModel.addRows([ - [new Date().toString(), slcExec.getHost()+' ('+slcExec.getUuid()+')', slcExec.getStatus()] - ]); - }, this); + + currentBatchToXml : function(){ + var selection = this.list.getChildren(); + var xmlString = ""; + for(var i=0;i