]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Use DynamicTreeFolder
authorCharles du Jeu <charles.dujeu@gmail.com>
Fri, 27 Feb 2009 13:58:39 +0000 (13:58 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Fri, 27 Feb 2009 13:58:39 +0000 (13:58 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2198 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/NewLauncherApplet.js

index f849496414dffc62638d276bb2f8c6512d013980..929c2664debce396084191371fd38daac01cec4b 100644 (file)
@@ -36,17 +36,56 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
        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];
+                                       alert('Edit Specs for : ' + item.getLabel());
+                               },
+                               selectionChange : function(viewId, selection){
+                                       if(viewId != "form") 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();
+                                       alert('Remove '+ sel.length+ ' elements from batch');
+                               },
+                               selectionChange : function(viewId, selection){
+                                       if(viewId != "form") return;
+                                       this.setEnabled(false);
+                                       if((selection && selection.length > 0)) this.setEnabled(true);
+                               },                              
+                               command         : null
+                       },
                        "reloadagents" : {
                                label           : "Reload Agents", 
                                icon            : "resource/slc/view-refresh.png",
@@ -60,31 +99,19 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                                },
                                command         : null
                        },
-                       "testloadmodules" : {
-                               label           : "Load Modules", 
+                       "reloadtree" : {
+                               label           : "Reload Node", 
                                icon            : "resource/slc/view-refresh.png",
                                shortcut        : "Control+m",
                                enabled         : true,
                                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();
+                                       }
+                               },                              
                                command         : null
                        }
                }
@@ -99,6 +126,50 @@ 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");
+               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);
+                               file.setUserData("executionFlow", execFlows);
+                               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("executionModule", "object");
+                       }
+                       folder.setLoaded(true);
+               }
+       }
+  },
+  
   members :
   {
        /**
@@ -108,7 +179,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._createLayout();
                //this._createForm();
                this._amqClient = org.argeo.ria.remote.JmsClient.getInstance();
                this._amqClient.startPolling();
@@ -118,7 +188,20 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
         *  
         */
        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);
@@ -164,55 +247,68 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
                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.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 item = new qx.ui.form.ListItem(label, e.getRelatedTarget().getIcon());
                  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.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'});
@@ -474,14 +570,16 @@ qx.Class.define("org.argeo.slc.ria.NewLauncherApplet",
         */
        _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);
        },
        
        /*