]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/monitor/DistListView.js
MonitorPerspective implementation
[gpl/argeo-slc.git] / server / org.argeo.slc.ria / src / argeo-ria-lib / slc / class / org / argeo / slc / ria / monitor / DistListView.js
index 129d1a91a62974ac51b1b9c52bebb177952b881b..a444bdadbd3b4ee3e47094abd89804e0fb1eb013 100644 (file)
@@ -8,7 +8,20 @@ qx.Class.define("org.argeo.slc.ria.monitor.DistListView", {
                 * See {@link org.argeo.ria.event.CommandsManager#definitions} for the keys to use for defining commands.\r
                 */\r
                commands : {\r
-                       init : {}\r
+                       init : {\r
+                               "reload" : {\r
+                                       label : "Reload",\r
+                                       icon : "org.argeo.slc.ria/view-refresh.png",\r
+                                       shortcut : "control+h",\r
+                                       enabled : true,\r
+                                       menu : "Distributions",\r
+                                       toolbar : "list",\r
+                                       callback : function(e) {\r
+                                               this.load();\r
+                                       },\r
+                                       command : null\r
+                               }\r
+                       }\r
                },\r
                viewSelection : {\r
                        nullable:false, \r
@@ -23,10 +36,10 @@ qx.Class.define("org.argeo.slc.ria.monitor.DistListView", {
 \r
        construct : function(){\r
                this.base(arguments);\r
-               this.setLayout(new qx.ui.layout.Dock());        \r
+               this.setLayout(new qx.ui.layout.Canvas());      \r
                this.xmlStub = '<slc:object-list xmlns:slc="http://argeo.org/projects/slc/schemas">' +\r
                                '<slc:modular-distribution-descriptor name="name" version="0.1.0">' +\r
-                               '<slc:modulesDescriptors><slc:modulesDescriptor type="modularDistribution" url="http://localhost/modularDistribution" />' +\r
+                               '<slc:modulesDescriptors><slc:modulesDescriptor type="modularDistribution" url="http://localhost/modularDistribution" >toto</slc:modulesDescriptor>' +\r
                                '<slc:modulesDescriptor type="eclipse" url="http://localhost/updateSite" />' +\r
                                '</slc:modulesDescriptors></slc:modular-distribution-descriptor>' +\r
                                '<slc:modular-distribution-descriptor name="name2" version="0.1.1">' +\r
@@ -48,20 +61,68 @@ qx.Class.define("org.argeo.slc.ria.monitor.DistListView", {
                init : function(viewPane, data){\r
                        this.setView(viewPane);                 \r
                        this.setViewSelection(new org.argeo.ria.components.ViewSelection(viewPane.getViewId()));\r
-                       this.label = new qx.ui.basic.Label("Properties");\r
-                       this.add(this.label, {edge : "center"});\r
+                       this.tableModel = new qx.ui.table.model.Simple();                       \r
+                       this.tableModel.setColumns(["Name", "Version", "Modular Distribution", "Eclipse Update Site"], ["name","version","modularDistribution","eclipse"]);\r
+                       this.list = new qx.ui.table.Table(this.tableModel, {\r
+                               tableColumnModel: function(obj){\r
+                                       return new qx.ui.table.columnmodel.Resize(obj)\r
+                               }                               \r
+                       });\r
+                       this.list.set({\r
+                               decorator:null,\r
+                               statusBarVisible : false\r
+                       });\r
+                       this.tableModel.setColumnEditable(2, true);\r
+                       this.tableModel.setColumnEditable(3, true);\r
+                       var columnModel = this.list.getTableColumnModel();\r
+                       columnModel.getBehavior().setWidth(0, "15%");\r
+                       columnModel.getBehavior().setWidth(1, "15%");\r
+                       columnModel.getBehavior().setWidth(2, "35%");\r
+                       columnModel.getBehavior().setWidth(3, "35%");\r
+                       var factory = function(cellInfo){\r
+                               var tField = new qx.ui.table.celleditor.TextField();\r
+                               tField.setValidationFunction(function(newValue, oldValue){return oldValue;});\r
+                               return tField;\r
+                       };\r
+                       columnModel.setCellEditorFactory(2, new qx.ui.table.celleditor.Dynamic(factory));\r
+                       columnModel.setCellEditorFactory(3, new qx.ui.table.celleditor.Dynamic(factory));\r
+                       this.add(this.list, {top:0,left:0,width:'100%',height:'100%'});                 \r
                },\r
                /**\r
                 * The implementation should contain the real data loading (i.o. query...)\r
                 * @return {Boolean}\r
                 */\r
                load : function(){\r
-                       \r
+                       this.tableModel.setData([]);\r
+                       var req = org.argeo.slc.ria.SlcApi.getListModularDistributionsService();\r
+                       req.addListener("completed", function(response){\r
+                               this.parseData(response.getContent());\r
+                       }, this);\r
+                       req.addListener("failed", function(){\r
+                               var xmlDoc = qx.xml.Document.fromString(this.xmlStub);\r
+                               this.parseData(xmlDoc);                                                 \r
+                       }, this);\r
+                       req.send();                     \r
                },\r
                \r
-               updateData : function(node){\r
-                       this.label.setContent("Properties for : " + node.getLabel());\r
+               parseData : function(xmlDoc){\r
+                       var data = [];\r
+                       var descriptorPath = 'slc:object-list/slc:modular-distribution-descriptor';\r
+                       var namePath = '@name';\r
+                       var versionPath = '@version';\r
+                       var distribPath = 'slc:modulesDescriptors/slc:modulesDescriptor[@type="modularDistribution"]/@url';\r
+                       var eclipsePath = 'slc:modulesDescriptors/slc:modulesDescriptor[@type="eclipse"]/@url';\r
+                       var nodes = org.argeo.ria.util.Element.selectNodes(xmlDoc, descriptorPath);                     \r
+                       for(var i=0;i<nodes.length;i++){\r
+                               var name = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], namePath);\r
+                               var version = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], versionPath);\r
+                               var distrib = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], distribPath);\r
+                               var eclipse = org.argeo.ria.util.Element.getSingleNodeText(nodes[i], eclipsePath);\r
+                               data.push([name,version,distrib,eclipse]);\r
+                       }\r
+                       this.tableModel.setData(data);\r
                },\r
+               \r
                /**\r
                 * Whether this component is already contained in a scroller (return false) or not (return true).\r
                 * @return {Boolean}\r