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",
- callback : function(e){
- this.submitForm();
+ toolbar : null,
+ callback : function(e){},
+ submenu : [],
+ submenuCallback : function(commandId){
+ alert("Execute Batch on Agent "+commandId);
},
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 execFlow = item.getUserData("batchEntrySpec").getFlow();
+ var specEditor = new org.argeo.slc.ria.execution.SpecEditor(execFlow);
+ 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<br> the selected test" + (sel.length>1?"s":"") + " from the Batch?");
+ modal.addListener("ok", function(){
+ for(var i=0;i<sel.length;i++){
+ this.list.remove(sel[i]);
+ }
+ }, this);
+ modal.attachAndShow();
+ },
+ selectionChange : function(viewId, selection){
+ if(viewId != "form:list") return;
+ this.setEnabled(false);
+ if((selection && selection.length > 0)) this.setEnabled(true);
+ },
+ command : null
+ },
"reloadagents" : {
label : "Reload Agents",
icon : "resource/slc/view-refresh.png",
},
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"){
+ 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
}
}
},
+ statics : {
+ 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");
+ 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("executionModule", executionModule);
+ file.setUserData("executionFlow", execFlows[key]);
+ folder.add(file);
+ }
+ folder.setLoaded(true);
+ });
+ req.send();
+ },
+
+ modulesLoader : function(folder){
+ // Call service, and parse
+ 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"]
+ };
+ 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],
+ flowLoader,
+ "Loading Flows",
+ folder.getDragData()
+ );
+ moduleFolder.add(versionFolder);
+ versionFolder.setUserData("moduleData", {name:key, version:mods[key][i]});
+ }
+ folder.setLoaded(true);
+ }
+ }
+ },
+
members :
{
/**
init : function(viewPane){
this.setView(viewPane);
this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));
- this._createLayout();
//this._createForm();
this._amqClient = org.argeo.ria.remote.JmsClient.getInstance();
this._amqClient.startPolling();
*
*/
load : function(){
+ this._createLayout();
this.getView().setViewTitle("Execution Launcher");
+ org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(reloadEvent){
+ if(reloadEvent.getDataType()!= "agents") return ;
+ var xmlDoc = reloadEvent.getContent();
+ var nodes = org.argeo.ria.util.Element.selectNodes(xmlDoc, "//slc:slc-agent-descriptor");
+ var newTopics = {};
+ for(var i=0;i<nodes.length;i++){
+ var uuid = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], "@uuid");
+ var host = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], "slc:host");
+ newTopics[uuid] = host+" ("+uuid+")";
+ }
+ this.setRegisteredTopics(newTopics);
+ }, this);
this.addListener("changeRegisteredTopics", function(event){
//this._refreshTopicsSubscriptions(event);
this._feedSelector(event);
this.formPane.setPadding(10);
this.tree = new qx.ui.tree.Tree();
- var root = new qx.ui.tree.TreeFolder("All Tests");
+ this.tree.setDecorator(null);
+ var dragData = {
+ "file" : {
+ "type" : ["items"],
+ "action":["move"]
+ }
+ };
+
+ var root = new org.argeo.ria.components.DynamicTreeFolder(
+ "All Tests",
+ this.self(arguments).modulesLoader,
+ "Loading Modules",
+ dragData
+ );
this.tree.setRoot(root);
- var module1 = new qx.ui.tree.TreeFolder("Module 1");
- var module2 = new qx.ui.tree.TreeFolder("Module 2");
- var module3 = new qx.ui.tree.TreeFolder("Module 3");
- root.add(module1, module2, module3);
root.setOpen(true);
- for(var i=0;i<100;i++){
- var file1 = new qx.ui.tree.TreeFile("1-"+i);
- file1.setHeight(15);
- file1.setDraggable(true);
- file1.addListener("dragstart", function(e){
- e.addType("items");
- e.addAction("move");
- });
- module1.add(file1);
- var file2 = new qx.ui.tree.TreeFile("2-"+i)
- module2.add(file2);
- var file3 = new qx.ui.tree.TreeFile("3-"+i);
- module3.add(file3);
- }
- //tree.add()
+
+ 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<sel.length;i++){
+ viewSelection.addNode(sel[i]);
+ }
+ }, this);
+
this.listPane = new qx.ui.container.Composite(new qx.ui.layout.Dock());
var listToolBar = new qx.ui.toolbar.ToolBar();
- var toolGroup = new qx.ui.toolbar.Part();
+ var toolGroup = new qx.ui.toolbar.Part();
listToolBar.add(toolGroup);
- var execButton = new qx.ui.toolbar.Button("Execute","resource/slc/media-playback-start.png");
- toolGroup.add(execButton);
- execButton.addListener("execute", function(e){
- this.getCommands()["submitform"].command.execute();
- }, this);
- this.listPane.add(toolGroup, {edge:"north"});
+ var execButton = this.getCommands()["submitform"].command.getToolbarButton();
+ toolGroup.add(execButton);
+
+ listToolBar.addSpacer();
+ listToolBar.setPaddingRight(4);
+ var delButton = this.getCommands()["removefrombatch"].command.getToolbarButton();
+ var formButton = this.getCommands()["editexecutionspecs"].command.getToolbarButton();
+ delButton.setShow("icon");
+ formButton.setShow("icon");
+ listToolBar.add(formButton);
+ listToolBar.add(delButton);
+
+ this.listPane.add(listToolBar, {edge:"north"});
this.list = new qx.ui.form.List();
+ this.list.setDecorator(null);
+ this.list.setSelectionMode("multi");
this.list.setDroppable(true);
this.list.addListener("drop", function(e){
- var label = e.getRelatedTarget().getLabel();
- var li = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
- li.add(new qx.ui.basic.Label(label));
- //var item = new qx.ui.form.ListItem(label);
- var item = new org.argeo.slc.ria.module.FlowListItem(label,e.getRelatedTarget().getIcon());
+ var target = e.getRelatedTarget();
+ var executionModule = target.getUserData("executionModule");
+ var executionFlow = target.getUserData("executionFlow");
+ var label = executionModule.getName()+"/"+executionModule.getVersion()+"/"+executionFlow.getName();
+ var icon = target.getIcon();
+
+ var item = new qx.ui.form.ListItem(label, icon);
+ item.setUserData("batchEntrySpec", new org.argeo.slc.ria.execution.BatchEntrySpec(executionModule, executionFlow));
item.setPaddingTop(1);
item.setPaddingBottom(2);
this.list.add(item);
this.list.select(item);
+ this.getCommands()["editexecutionspecs"].command.execute();
}, this);
this.listPane.add(this.list, {edge:"center"});
+ 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<listSel.length;i++){
+ viewSelection.addNode(listSel[i]);
+ }
+ }, this);
+
splitPane.add(this.tree, 0);
splitPane.add(this.listPane, 1);
//this.add(this.scroll, {edge:'center'});
*/
_feedSelector : function(changeTopicsEvent){
var topics = changeTopicsEvent.getData();
- this.agentSelector.removeAll();
- var emptyItem = new qx.ui.form.ListItem("", null, "");
- this.agentSelector.add(emptyItem);
- this.agentSelector.setSelected(emptyItem);
+ var command = this.getCommands()["submitform"].command;
+ command.setEnabled(false);
+ var menu = [];
for(var key in topics){
- var listItem = new qx.ui.form.ListItem(topics[key], null, key);
- this.agentSelector.add(listItem);
+ var submenu = {"label":topics[key],"icon":"resource/slc/mime-xsl.png", "commandId":key};
+ menu.push(submenu);
}
+ command.clearMenus();
+ command.setMenu(menu);
+ if(menu.length) command.setEnabled(true);
},
/*