RELOAD_BUNDLE_SERVICE : "reloadBundle.service",\r
AMQ_SERVICE : "amq",\r
\r
+ LIST_MODULAR_DISTRIB_SERVICE : "listModularDistributions.service",\r
+ UPLOAD_MODULAR_DISTRIB_SERVICE : "uploadModularDistrib.service",\r
+ \r
/**\r
* Standard Request getter\r
* @param serviceName {String} The name of the service to call (without base context)\r
);\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
+ getListModularDistributionsService:function(fireReloadEventType, iLoadStatusables){\r
+ return org.argeo.slc.ria.SlcApi.getServiceRequest(\r
+ org.argeo.slc.ria.SlcApi.LIST_MODULAR_DISTRIB_SERVICE,\r
+ fireReloadEventType,\r
+ iLoadStatusables\r
+ );\r
+ },\r
+ \r
+ getUploadModularDistributionsService : function(){\r
+ return org.argeo.slc.ria.SlcApi.UPLOAD_MODULAR_DISTRIB_SERVICE;\r
+ },\r
\r
/**\r
* New SlcExecution\r
* 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
\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
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
\r
construct : function(){\r
this.base(arguments);\r
- this.setLayout(new qx.ui.layout.Dock()); \r
+ this.setLayout(new qx.ui.layout.Basic); \r
}, \r
\r
members : {\r
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("Upoad");\r
- this.add(this.label, {edge : "center"});\r
+ this.form = new org.argeo.ria.components.upload.UploadForm("uploadFrm", org.argeo.slc.ria.SlcApi.getUploadModularDistributionsService());\r
+ this.form.setLayout(new qx.ui.layout.HBox(5));\r
+ this.fileWidget = new org.argeo.ria.components.upload.UploadField("uploadFile", "Choose a file");\r
+ \r
+ this.form.addListener("completed", function(e){\r
+ this.fileWidget.setFieldValue("");\r
+ var response = this.form.getIframeHtmlContent();\r
+ this.debug(response);\r
+ this.displayMessage(response, 4000);\r
+ }, this);\r
+ this.form.addListener("sending", function(e){\r
+ this.debug("Sending...");\r
+ this.displayMessage("Sending...");\r
+ }, this);\r
+ this.fileWidget.addListener("changeFieldValue", function(e){\r
+ if(e.getData()!=""){\r
+ this.submitButton.setEnabled(true);\r
+ }\r
+ }, this);\r
+ \r
+ this.submitButton = new qx.ui.form.Button("Upload");\r
+ this.submitButton.setEnabled(false);\r
+ this.submitButton.addListener("execute", function(e){\r
+ if(this.fileWidget.getFieldValue()!=""){\r
+ this.form.send();\r
+ }\r
+ }, this);\r
+\r
+ this.fileWidget.getTextField().setWidth(200);\r
+ this.form.add(this.fileWidget);\r
+ this.form.add(this.submitButton);\r
+ this.messageLabel = new qx.ui.basic.Label("");\r
+ this.messageLabel.setRich(true);\r
+ this.messageLabel.setPadding(4,4,4,20);\r
+ this.form.add(this.messageLabel);\r
+ this.add(this.form, {left : 20, top:20});\r
+ },\r
+ \r
+ displayMessage : function(message, timer){\r
+ this.messageLabel.setContent("<i>"+qx.lang.String.stripTags(message)+"</i>");\r
+ if(timer){\r
+ qx.event.Timer.once(function(){\r
+ this.messageLabel.setContent("");\r
+ }, this, timer);\r
+ }\r
},\r
/**\r
* The implementation should contain the real data loading (i.o. query...)\r
* @return {Boolean}\r
*/\r
- load : function(){\r
- \r
+ load : function(){ \r
},\r
\r
- updateData : function(node){\r
- this.label.setContent("Properties for : " + node.getLabel());\r
- },\r
/**\r
* Whether this component is already contained in a scroller (return false) or not (return true).\r
* @return {Boolean}\r