]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
Splitted the LauncherApplet into two different applets. The first one is a generic...
authorCharles du Jeu <charles.dujeu@gmail.com>
Mon, 19 Jan 2009 15:33:00 +0000 (15:33 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Mon, 19 Jan 2009 15:33:00 +0000 (15:33 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@2106 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc-web/class/org/argeo/slc/web/LauncherPerspective.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/LauncherApplet.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcApi.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js [new file with mode: 0644]
org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js
org.argeo.slc.webapp/src/main/webapp/argeo-ria-src/class/org/argeo/ria/Application.js

index d19837955de0a23bfa1fa43cd406f0823642d422..f0f54884914595f96992b429cb55c8191f4b3787 100644 (file)
@@ -21,22 +21,36 @@ qx.Class.define("org.argeo.slc.web.LauncherPerspective",
        _rightPane : null,\r
                \r
        initViewPanes : function(viewsManager){\r
        _rightPane : null,\r
                \r
        initViewPanes : function(viewsManager){\r
-               \r
-         this._rightPane = new org.argeo.ria.components.ViewPane("main", "Slc Execution");\r
-         this._rightPane.setBackgroundColor("white");\r
-         viewsManager.registerViewPane(this._rightPane);      \r
-      viewsManager.getViewPanesContainer().add(this._rightPane, {flex:1});\r
+\r
+      this._splitPane = new qx.ui.splitpane.Pane("horizontal");\r
+         var topLeft = new org.argeo.ria.components.ViewPane("form", "Execution Launcher", {\r
+               orientation : "horizontal",\r
+               min : 36\r
+         });\r
+         topLeft.set({width:290});\r
+         viewsManager.registerViewPane(topLeft);\r
+           \r
+         this._splitPane.add(topLeft, 0);\r
+         var rightPane = new org.argeo.ria.components.ViewPane("main", "Executions Log");        \r
+         viewsManager.registerViewPane(rightPane);\r
+         this._splitPane.add(rightPane, 1);\r
+      \r
+      viewsManager.getViewPanesContainer().add(this._splitPane, {flex:1});\r
                \r
        },\r
        \r
        initViews : function(viewsManager){\r
                \r
        },\r
        \r
        initViews : function(viewsManager){\r
-         var view = viewsManager.initIViewClass(org.argeo.slc.ria.LauncherApplet, "main");\r
-         view.load();\r
+         var formApplet = viewsManager.initIViewClass(org.argeo.slc.ria.LauncherApplet, "form");\r
+         formApplet.load();\r
+         \r
+         var logger = viewsManager.initIViewClass(org.argeo.slc.ria.SlcExecLoggerApplet, "main");\r
+         logger.load();\r
        },\r
        \r
        remove : function(viewsManager){\r
                viewsManager.getViewPaneById("main").empty();\r
        },\r
        \r
        remove : function(viewsManager){\r
                viewsManager.getViewPaneById("main").empty();\r
-               viewsManager.getViewPanesContainer().remove(this._rightPane);           \r
+               viewsManager.getViewPaneById("form").empty();\r
+               viewsManager.getViewPanesContainer().remove(this._splitPane);           \r
        }       \r
        \r
   }\r
        }       \r
        \r
   }\r
index 162453861e6d23dc6c3d20f685ff65d9f2d5aff6..7d53e3f419fd5bbb582ba123318306f0772561a1 100644 (file)
@@ -9,7 +9,11 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
 
   construct : function(){
        this.base(arguments);
 
   construct : function(){
        this.base(arguments);
-       this.setLayout(new qx.ui.layout.Dock());        
+       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";
   },
 
   properties : 
   },
 
   properties : 
@@ -33,7 +37,7 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                                menu            : "Launcher",
                                toolbar         : "launcher",
                                callback        : function(e){
                                menu            : "Launcher",
                                toolbar         : "launcher",
                                callback        : function(e){
-                                       this.getView().getContent().submitForm();
+                                       this.submitForm();
                                },
                                command         : null
                        },                      
                                },
                                command         : null
                        },                      
@@ -83,12 +87,13 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                        this._feedSelector(event);
                }, this);
                var reloadHandler = function(message){
                        this._feedSelector(event);
                }, this);
                var reloadHandler = function(message){
-                       org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadagents").execute();
+                       // Delay reload to be sure the jms was first integrated by the db, then ask the db.
+                       qx.event.Timer.once(function(){
+                               org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadagents").execute();
+                       }, this, 1000);                 
                }
                this._amqClient.addListener("agentregister", "topic://agent.register", reloadHandler, this);
                }
                this._amqClient.addListener("agentregister", "topic://agent.register", reloadHandler, this);
-               //qx.event.Timer.once(function(){               
-                       this._amqClient.addListener("agentunregister", "topic://agent.unregister", reloadHandler, this);
-               //}, this, 500);
+               this._amqClient.addListener("agentunregister", "topic://agent.unregister", reloadHandler, this);
                reloadHandler();
        },
         
                reloadHandler();
        },
         
@@ -107,32 +112,14 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
        _createLayout : function(){
                this.formPane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));                
                this.scroll = new qx.ui.container.Scroll(this.formPane);
        _createLayout : function(){
                this.formPane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5));                
                this.scroll = new qx.ui.container.Scroll(this.formPane);
-               this.scroll.setWidth(290);
                this.formPane.setPadding(10);
                this.formPane.setPadding(10);
-               this.add(this.scroll, {edge:'west'});
+               this.add(this.scroll, {edge:'center'});
                
                
-               this.logModel = new qx.ui.table.model.Simple();
-               this.logModel.setColumns(["Date", "Agent Uuid", "Status"]);
-               this.logPane = new qx.ui.table.Table(this.logModel,  {
-                       tableColumnModel: function(obj){
-                               return new qx.ui.table.columnmodel.Resize(obj)
-                       }
-               });
-               this._initLogger();
-               this.add(this.logPane, {edge:'center'});
-       },
-       
-       _initLogger : function(){
-               this.logPane.set({              
-                       statusBarVisible: false,
-                       showCellFocusIndicator:false
-               });
-               var columnModel = this.logPane.getTableColumnModel(); 
-               columnModel.getBehavior().setWidth(2, "12%");
        },
        },
-       
+               
        _createForm : function(){
                this.fields = {};
        _createForm : function(){
                this.fields = {};
+               this.hiddenFields = {};
                this.freeFields = [];
                
                var execButtonPane = new qx.ui.container.Composite(new qx.ui.layout.Dock());
                this.freeFields = [];
                
                var execButtonPane = new qx.ui.container.Composite(new qx.ui.layout.Dock());
@@ -162,12 +149,85 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                        this.setRegisteredTopics(newTopics);
                }, this);
                
                        this.setRegisteredTopics(newTopics);
                }, this);
                
-               this._addFormHeader("Choose Agent Uuid");
-               this._addFormEntry(new qx.ui.basic.Label("Agent Uuid"), this.agentSelector);
-               this._addFormHeader("Set Execution Parameters");
-               this._addFormInputText("status", "Status", "STARTED");
-               this._addFormInputText("host", "Host", "localhost");
-               this._addFormInputText("user", "User", "user");
+               var commonForm = {pane:this.formPane};          
+               this._addFormHeader(commonForm, this.COMMON_FORM_HEADER_LABEL);
+               this._addFormEntry(commonForm, new qx.ui.basic.Label(this.CHOOSE_AGENT_LABEL), this.agentSelector);
+               this._createFormVariableParts();
+               if(!this.parts) return;
+               if(qx.lang.Object.getLength(this.parts) > 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]);          
+       },
+       
+       _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();
+               }
+       },
+       
+       _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;
+       },
+       
+       _createFormVariableParts : function(){
+               var standard = this._initFormPart("standard", "Canonical");
+               this._createStandardForm(standard);
+               var simple = this._initFormPart("simple", "SLC Sample");
+               this._createSimpleForm(simple);
+       },
+       
+       _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();
+               }, this);
+               this._addFormHeader(formObject, "Add optionnal parameters", moreButton);
+               this._addFormInputText(formObject);
+               this._addFormInputText(formObject);             
+               
+       },
+       
+       _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"));
                
                var moreButton = new qx.ui.basic.Image("resource/slc/list-add.png");
                moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter"));
@@ -175,47 +235,58 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                moreButton.addListener("click", function(){
                        this._addFormInputText();
                }, this);
                moreButton.addListener("click", function(){
                        this._addFormInputText();
                }, this);
-               this._addFormHeader("Add optionnal parameters", moreButton);
-               this._addFormInputText();
-               this._addFormInputText();
+               this._addFormHeader(formObject, "Add optionnal parameters", moreButton);
+               this._addFormInputText(formObject);
+               this._addFormInputText(formObject);             
        },
        
        },
        
-       _addFormInputText : function(fieldName, fieldLabel, defaultValue){
+       _addFormHiddenField : function(formObject, fieldName, fieldValue){
+               formObject.hiddenFields[fieldName] = fieldValue;
+       },
+       
+       _addFormInputText : function(formObject, fieldName, fieldLabel, defaultValue, choiceValues){
                var labelElement;
                var labelElement;
-               var fieldElement = new qx.ui.form.TextField();
+               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();
+               }
                if(defaultValue){
                        fieldElement.setValue(defaultValue);
                }
                if(fieldName && fieldLabel){
                        labelElement = new qx.ui.basic.Label(fieldLabel);
                if(defaultValue){
                        fieldElement.setValue(defaultValue);
                }
                if(fieldName && fieldLabel){
                        labelElement = new qx.ui.basic.Label(fieldLabel);
-                       this.fields[fieldName] = fieldElement;
+                       formObject.fields[fieldName] = fieldElement;
                }else{
                        labelElement = new qx.ui.form.TextField();
                }else{
                        labelElement = new qx.ui.form.TextField();
-                       this.freeFields.push({
+                       formObject.freeFields.push({
                                labelEl:labelElement, 
                                valueEl:fieldElement
                        });
                }
                                labelEl:labelElement, 
                                valueEl:fieldElement
                        });
                }
-               this._addFormEntry(labelElement, fieldElement);
+               this._addFormEntry(formObject, labelElement, fieldElement);
        },
        
        },
        
-       _addFormHeader : function(content, additionnalButton){
+       _addFormHeader : function(formObject, content, additionnalButton){
                var header = new qx.ui.basic.Label('<b>'+content+'</b>');
                header.setRich(true);           
                if(!additionnalButton){
                        header.setPaddingTop(10);
                var header = new qx.ui.basic.Label('<b>'+content+'</b>');
                header.setRich(true);           
                if(!additionnalButton){
                        header.setPaddingTop(10);
-                       this.formPane.add(header);
+                       formObject.pane.add(header);
                }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'});
                }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'});
-                       this.formPane.add(pane);
+                       formObject.pane.add(pane);
                }
        },
        
                }
        },
        
-       _addFormEntry : function(labelElement, fieldElement){
+       _addFormEntry : function(formObject, labelElement, fieldElement){
                var entryPane = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
                labelElement.setWidth(100);
                labelElement.setTextAlign("right");             
                var entryPane = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
                labelElement.setWidth(100);
                labelElement.setTextAlign("right");             
@@ -223,7 +294,7 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                entryPane.add(new qx.ui.basic.Label(':'));
                fieldElement.setWidth(150);
                entryPane.add(fieldElement);
                entryPane.add(new qx.ui.basic.Label(':'));
                fieldElement.setWidth(150);
                entryPane.add(fieldElement);
-               this.formPane.add(entryPane);
+               formObject.pane.add(entryPane);
        },
        
        _refreshTopicsSubscriptions : function(changeTopicsEvent){
        },
        
        _refreshTopicsSubscriptions : function(changeTopicsEvent){
@@ -233,12 +304,12 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                var added = [];
                for(var key in oldTopics){
                        if(!newTopics[key]) {
                var added = [];
                for(var key in oldTopics){
                        if(!newTopics[key]) {
-                               this._removeAmqListener(key);
+                               //this._removeAmqListener(key);
                        }
                }
                for(var key in newTopics){
                        if(!oldTopics[key]) {
                        }
                }
                for(var key in newTopics){
                        if(!oldTopics[key]) {
-                               this._addAmqListener(key);
+                               //this._addAmqListener(key);
                        }                       
                }
        },
                        }                       
                }
        },
@@ -270,21 +341,54 @@ qx.Class.define("org.argeo.slc.ria.LauncherApplet",
                this._amqClient.removeListener("slcExec", "topic://agent."+uuid+".newExecution");
        },
        
                this._amqClient.removeListener("slcExec", "topic://agent."+uuid+".newExecution");
        },
        
+       _prepareSlcExecutionMessage : function(crtPartId, slcExec, fields, hiddenFields, freeFields){
+               if(crtPartId == "standard"){
+                       slcExec.setStatus(fields.status.getValue());            
+                       slcExec.setHost(fields.host.getValue());
+                       slcExec.setUser(fields.user.getValue());
+               }else{
+                       slcExec.addAttribute("ant.file", fields["ant.file"].getValue());
+               }
+               for(var i=0;i<freeFields.length;i++){
+                       var fF = freeFields[i];
+                       if(fF.labelEl.getValue() != "" && fF.valueEl.getValue() != ""){
+                               slcExec.addAttribute(fF.labelEl.getValue(), fF.valueEl.getValue());
+                       }
+               }               
+       },
+       
        submitForm : function(){
                var currentUuid = this.agentSelector.getValue();
                if(!currentUuid) return;
                var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(currentUuid);
        submitForm : function(){
                var currentUuid = this.agentSelector.getValue();
                if(!currentUuid) return;
                var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(currentUuid);
-               slcExec.setStatus(this.fields.status.getValue());               
-               slcExec.setHost(this.fields.host.getValue());
-               slcExec.setUser(this.fields.user.getValue());
-               for(var i=0;i<this.freeFields.length;i++){
-                       var fF = this.freeFields[i];
-                       if(fF.labelEl.getValue() != "" && fF.valueEl.getValue() != ""){
-                               slcExec.addAttribute(fF.labelEl.getValue(), fF.valueEl.getValue());
+               
+               var fields = {};
+               var hiddenFields = {};
+               var freeFields = {};
+               var crtPartId = "";
+               if(this.parts){
+                       if(this.partChooser){
+                               crtPartId = this.partChooser.getValue();
+                       }else{
+                               crtPartId = qx.lang.Object.getKeys(this.parts)[0];
                        }
                        }
+                       var crtPart = this.parts[crtPartId];
+                       fields = crtPart.fields;
+                       hiddenFields = crtPart.hiddenFields;
+                       freeFields = crtPart.freeFields;
                }
                }
+               
+               this._prepareSlcExecutionMessage(crtPartId, slcExec, fields, hiddenFields, freeFields);
+               
                var destination = "topic://agent."+currentUuid+".newExecution";
                this._amqClient.sendMessage(destination, slcExec.toXml());
                var destination = "topic://agent."+currentUuid+".newExecution";
                this._amqClient.sendMessage(destination, slcExec.toXml());
+               // Force logs refresh right now!
+               qx.event.Timer.once(function(){
+                       var command = org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadlogs");
+                       if(command){
+                               command.execute();
+                       }
+               }, this, 2000);
        }
                
   }
        }
                
   }
index e9add89bdfcb9590cf1cb053d162fe7063f5cb87..1bab2a46e30b40e0674df66d0bb02db45c2651cb 100644 (file)
@@ -19,6 +19,7 @@ qx.Class.define("org.argeo.slc.ria.SlcApi",
        LIST_COLLECTIONS_SERVICE : "listCollectionRefs.service",\r
        LIST_RESULTS_SERVICE : "listResultAttributes.service",\r
        GET_RESULT_SERVICE : "getResult.service",\r
        LIST_COLLECTIONS_SERVICE : "listCollectionRefs.service",\r
        LIST_RESULTS_SERVICE : "listResultAttributes.service",\r
        GET_RESULT_SERVICE : "getResult.service",\r
+       LIST_SLCEXEC_SERVICE : "listSlcExecutions.service",\r
        \r
        LIST_AGENTS_SERVICE : "listAgents.service",     \r
        AMQ_SERVICE : "amq",\r
        \r
        LIST_AGENTS_SERVICE : "listAgents.service",     \r
        AMQ_SERVICE : "amq",\r
@@ -128,6 +129,21 @@ qx.Class.define("org.argeo.slc.ria.SlcApi",
                request.setParameter("uuid", resultId);\r
                return request;\r
        },\r
                request.setParameter("uuid", resultId);\r
                return request;\r
        },\r
+\r
+       /**\r
+        * List currently registered SlcExecutions.\r
+        * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
+        * @param iLoadStatusables {org.argeo.ria.components.ILoadStatusables[]} Gui parts to update \r
+        * @return {qx.io.remote.Request}\r
+        */\r
+       getListSlcExecutionsService:function(fireReloadEventType, iLoadStatusables){\r
+               return org.argeo.slc.ria.SlcApi.getServiceRequest(\r
+                       org.argeo.slc.ria.SlcApi.LIST_SLCEXEC_SERVICE,\r
+                       fireReloadEventType,\r
+                       iLoadStatusables\r
+               );\r
+       },\r
+       \r
        \r
        /**\r
         * List currently available agents queues.\r
        \r
        /**\r
         * List currently available agents queues.\r
diff --git a/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js b/org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js
new file mode 100644 (file)
index 0000000..2972ae9
--- /dev/null
@@ -0,0 +1,114 @@
+/**\r
+ * A simple Hello World applet for documentation purpose. \r
+ * The only associated command is the "Close" command.\r
+ */\r
+qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",\r
+{\r
+  extend : qx.ui.container.Composite,\r
+  implement : [org.argeo.ria.components.IView], \r
+\r
+  construct : function(){\r
+       this.base(arguments);\r
+       this.setLayout(new qx.ui.layout.Dock());        \r
+  },\r
+\r
+  properties : \r
+  {\r
+       /**\r
+        * The viewPane inside which this applet is added. \r
+        */\r
+       view : {\r
+               init : null\r
+       },\r
+       /**\r
+        * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions} \r
+        */\r
+       commands : {\r
+               init : {\r
+                       "reloadlogs" : {\r
+                               label           : "Reload Logs", \r
+                               icon            : "resource/slc/view-refresh.png",\r
+                               shortcut        : "Control+r",\r
+                               enabled         : true,\r
+                               menu            : null,\r
+                               toolbar         : null,\r
+                               callback        : function(e){\r
+                                       this._reloadLogger();\r
+                               },\r
+                               command         : null\r
+                       }                       \r
+               }\r
+       }\r
+  },\r
+\r
+  members :\r
+  {\r
+       /**\r
+        * Called at applet creation. Just registers viewPane.\r
+        * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.\r
+        */\r
+       init : function(viewPane){\r
+               this.setView(viewPane);\r
+               this._createLayout();\r
+       },\r
+       \r
+       /**\r
+        *  \r
+        */\r
+       load : function(){\r
+               this._reloadLogger();   \r
+               this.timer = new qx.event.Timer(15000);\r
+               this.timer.addListener("interval", this._reloadLogger, this);\r
+               this.timer.start();             \r
+       },\r
+        \r
+       addScroll : function(){\r
+               return false;\r
+       },\r
+       \r
+       close : function(){\r
+               this.timer.stop();\r
+       },\r
+               \r
+       _createLayout : function(){\r
+               this.logModel = new qx.ui.table.model.Simple();\r
+               this.logModel.setColumns(["Date", "Agent Uuid", "Status"]);\r
+               this.logPane = new qx.ui.table.Table(this.logModel,  {\r
+                       tableColumnModel: function(obj){\r
+                               return new qx.ui.table.columnmodel.Resize(obj)\r
+                       }\r
+               });\r
+               this.logPane.setDecorator(null);\r
+               this._initLogger();\r
+               this.add(this.logPane, {edge:'center'});\r
+       },\r
+       \r
+       _initLogger : function(){\r
+               this.logPane.set({              \r
+                       statusBarVisible: false,\r
+                       showCellFocusIndicator:false\r
+               });\r
+               var columnModel = this.logPane.getTableColumnModel();\r
+               columnModel.getBehavior().setWidth(0, "30%");\r
+               columnModel.getBehavior().setWidth(2, "12%");           \r
+       },\r
+       \r
+       _reloadLogger : function(){\r
+               var request = org.argeo.slc.ria.SlcApi.getListSlcExecutionsService();\r
+               request.addListener("completed", function(response){                    \r
+                       var messages = org.argeo.ria.util.Element.selectNodes(response.getContent(), "//slc:slc-execution");\r
+                       this.logModel.setData([]);\r
+                       for(var i=0;i<messages.length;i++){\r
+                               var message = messages[i];\r
+                               var slcExec = new org.argeo.slc.ria.SlcExecutionMessage(message.getAttribute("uuid"));\r
+                               slcExec.fromXml(message);\r
+                               this.logModel.addRows([\r
+                                       [slcExec.getDate(), slcExec.getHost()+' ('+slcExec.getUuid()+')', slcExec.getStatus()]\r
+                               ]);                             \r
+                       }\r
+               }, this);\r
+               request.send();         \r
+       }\r
+               \r
+  }\r
+});
\ No newline at end of file
index c5f3ce199f91adf0c42b092847d5ab0c8eeee3b3..b81d86bc66d9f906b78d883c905313d3eb3aeda0 100644 (file)
@@ -42,6 +42,10 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {
                        check : "String",\r
                        init : "user"\r
                },\r
                        check : "String",\r
                        init : "user"\r
                },\r
+               date : {\r
+                       check : "String", \r
+                       init : new Date().toString()\r
+               },\r
                /**\r
                 * Additionnal attributes as map of key/values\r
                 */\r
                /**\r
                 * Additionnal attributes as map of key/values\r
                 */\r
@@ -91,6 +95,10 @@ qx.Class.define("org.argeo.slc.ria.SlcExecutionMessage", {
                        for(var i=0;i<attributes.length;i++){\r
                                this.addAttribute(attribute.getAttribute("name"), attribute.firstChild);\r
                        }\r
                        for(var i=0;i<attributes.length;i++){\r
                                this.addAttribute(attribute.getAttribute("name"), attribute.firstChild);\r
                        }\r
+                       var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:begin", NSMap);\r
+                       if(stepsDates.length){\r
+                               this.setDate(org.argeo.ria.util.Element.getSingleNodeText(stepsDates[stepsDates.length-1], ".", NSMap));\r
+                       }\r
                }\r
        }       \r
 });
\ No newline at end of file
                }\r
        }       \r
 });
\ No newline at end of file
index 793bb90565078c88f9ffec1dcb554e179eb08c24..4609bad1eb0c0e765bac05173974d76f7d5d3fa1 100644 (file)
@@ -112,7 +112,17 @@ qx.Class.define("org.argeo.ria.Application",
       \r
       var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();\r
       viewsManager.setApplicationRoot(this.getRoot());\r
       \r
       var viewsManager = org.argeo.ria.components.ViewsManager.getInstance();\r
       viewsManager.setApplicationRoot(this.getRoot());\r
-      \r
+     \r
+      /*\r
+      var appli = this;\r
+      qx.bom.Event.addNativeListener(window, "unload", function(){\r
+       // TODO : Close perspective if one is open.     \r
+               if(appli.getActivePerspective()){\r
+                       alert(appli.getActivePerspective());\r
+                       appli.getActivePerspective().remove(org.argeo.ria.components.ViewsManager.getInstance());\r
+               } \r
+         });\r
+      */\r
       // Enable logging in debug variant\r
       if (qx.core.Variant.isSet("qx.debug", "on"))\r
       {\r
       // Enable logging in debug variant\r
       if (qx.core.Variant.isSet("qx.debug", "on"))\r
       {\r
@@ -220,6 +230,16 @@ qx.Class.define("org.argeo.ria.Application",
                        switchCommand.command.clearMenus();\r
                        switchCommand.command.setMenu(switchCommand.submenu);\r
                }\r
                        switchCommand.command.clearMenus();\r
                        switchCommand.command.setMenu(switchCommand.submenu);\r
                }\r
+    },\r
+    \r
+    terminate : function(){\r
+       alert("toto");\r
+               if(this.getActivePerspective()){\r
+                       alert(this.getActivePerspective());\r
+                       this.getActivePerspective().remove(org.argeo.ria.components.ViewsManager.getInstance());\r
+               } \r
+               this.base(arguments);\r
+\r
     }\r
                \r
   }\r
     }\r
                \r
   }\r