]> git.argeo.org Git - gpl/argeo-slc.git/commitdiff
QX 1.1 Migration
authorCharles du Jeu <charles.dujeu@gmail.com>
Thu, 15 Jul 2010 09:23:23 +0000 (09:23 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Thu, 15 Jul 2010 09:23:23 +0000 (09:23 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@3697 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/Applet.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/BatchView.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/FlowsSelectorView.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcApi.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecLoggerApplet.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SlcExecutionMessage.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/SpecsEditorView.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/execution/CellEditorFactory.js
server/org.argeo.slc.ria/src/argeo-ria-lib/slc/class/org/argeo/slc/ria/monitor/DistListView.js

index c011d6159c7d10332f5a3c3893a28784823dcb8f..01005b4d97b1e1dea0691b32b8e4655315bb672f 100644 (file)
@@ -43,7 +43,7 @@ qx.Class.define("org.argeo.slc.ria.Applet",
                init : {
                        "close" : {
                                label           : "Close Current", 
-                               icon            : "org.argeo.slc.ria/window-close.png",
+                               icon            : "org/argeo/slc/ria/window-close.png",
                                shortcut        : "Control+w",
                                enabled         : true,
                                menu            : "Test",
index 848ed16115ec7d469323247994aab46526f5478b..d3dc3f8cba4a6cad0534cbe16a567f7511be6702 100644 (file)
@@ -30,7 +30,7 @@ qx.Class.define("org.argeo.slc.ria.BatchView",
                        init : {\r
                                "submitform" : {\r
                                        label : "Execute Batch",\r
-                                       icon : "org.argeo.slc.ria/media-playback-start.png",\r
+                                       icon : "org/argeo/slc/ria/media-playback-start.png",\r
                                        shortcut : null,\r
                                        enabled : false,\r
                                        menu : "Launcher",\r
@@ -54,7 +54,7 @@ qx.Class.define("org.argeo.slc.ria.BatchView",
                                },\r
                                "removefrombatch" : {\r
                                        label : "Remove from batch",\r
-                                       icon : "org.argeo.slc.ria/edit-delete.png",\r
+                                       icon : "org/argeo/slc/ria/edit-delete.png",\r
                                        shortcut : null,\r
                                        enabled : false,\r
                                        menu : "Launcher",\r
@@ -93,7 +93,7 @@ qx.Class.define("org.argeo.slc.ria.BatchView",
                                },\r
                                "clearbatch" : {\r
                                        label : "Clear batch",\r
-                                       icon : "org.argeo.slc.ria/user-trash-full.png",\r
+                                       icon : "org/argeo/slc/ria/user-trash-full.png",\r
                                        shortcut : null,\r
                                        enabled : true,\r
                                        menu : "Launcher",\r
@@ -259,7 +259,7 @@ qx.Class.define("org.argeo.slc.ria.BatchView",
 \r
                        this.dropDecorator = new qx.ui.decoration.Background();                 \r
                        this.dropDecorator.set({\r
-                               backgroundImage : "org.argeo.slc.ria/drophere.gif",\r
+                               backgroundImage : "org/argeo/slc/ria/drophere.gif",\r
                                backgroundRepeat : "no-repeat"\r
                        });\r
 \r
@@ -341,7 +341,7 @@ qx.Class.define("org.argeo.slc.ria.BatchView",
                \r
                appendBatchEntrySpec: function(batchEntrySpec, icon, after){\r
                                                \r
-                       var item = new qx.ui.form.ListItem(batchEntrySpec.getLabel(), icon || "org.argeo.slc.ria/system.png");\r
+                       var item = new qx.ui.form.ListItem(batchEntrySpec.getLabel(), icon || "org/argeo/slc/ria/system.png");\r
                        item.setUserData("batchEntrySpec", batchEntrySpec);\r
                        item.setPaddingTop(1);\r
                        item.setPaddingBottom(2);\r
index 73789cfd5ec3b40008d67c363d66baaf90046458..755fc1d0eca7472f315714dcff097013c4eaf2d1 100644 (file)
@@ -41,7 +41,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                        init : {\r
                                "addtobatch" : {\r
                                        label : "Add to batch",\r
-                                       icon : "org.argeo.slc.ria/list-add.png",\r
+                                       icon : "org/argeo/slc/ria/list-add.png",\r
                                        shortcut : null,\r
                                        enabled : true,\r
                                        menu : null,\r
@@ -133,7 +133,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                },\r
                                "reloadfull" : {\r
                                        label : "Reload Agents",\r
-                                       icon : "org.argeo.slc.ria/view-refresh.png",\r
+                                       icon : "org/argeo/slc/ria/view-refresh.png",\r
                                        shortcut : "control+h",\r
                                        enabled : true,\r
                                        menu : "Launcher",\r
@@ -146,7 +146,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                },                              \r
                                "reloadtree" : {\r
                                        label : "Reload Node",\r
-                                       icon : "org.argeo.slc.ria/view-refresh.png",\r
+                                       icon : "org/argeo/slc/ria/view-refresh.png",\r
                                        shortcut : null,\r
                                        enabled : false,\r
                                        menu : null,\r
@@ -264,10 +264,10 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                        agentFolder.setUserData("agentUuid", uuid);\r
                                        if(preferredHosts && preferredHosts instanceof Array && qx.lang.Array.contains(preferredHosts, host)){\r
                                                folder.addAtBegin(agentFolder);\r
-                                               agentFolder.setIcon("org.argeo.slc.ria/computer_bookmarked.png");\r
+                                               agentFolder.setIcon("org/argeo/slc/ria/computer_bookmarked.png");\r
                                        }else{\r
                                                folder.add(agentFolder);\r
-                                               agentFolder.setIcon("org.argeo.slc.ria/computer.png");\r
+                                               agentFolder.setIcon("org/argeo/slc/ria/computer.png");\r
                                        }\r
                                }\r
                                if(newAgents){\r
@@ -284,7 +284,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                }\r
                                folder.setUserData("agentsMap", agents);\r
                                folder.setLoaded(true);\r
-                               folder.getTree().fireEvent("changeSelection");                          \r
+                               folder.getTree().fireDataEvent("changeSelection", folder.getTree().getSelection());                             \r
                        });\r
                        req.addListener("failed", function(response) {\r
                                                folder.setLoaded(true);\r
@@ -332,7 +332,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                                                        name : key,\r
                                                                        version : module.getVersion()\r
                                                                });\r
-                                               versionFolder.setIcon("org.argeo.slc.ria/archive.png");\r
+                                               versionFolder.setIcon("org/argeo/slc/ria/archive.png");\r
                                                versionFolder.setUserData("agentUuid", agentId);\r
                                                var sep = (module.getDescription()!=""?" - ":"");\r
                                                org.argeo.slc.ria.FlowsSelectorView.attachToolTip(versionFolder, key + ' (' + module.getVersion() + ')'+sep+module.getDescription());\r
@@ -342,7 +342,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                        }\r
                                }\r
                                folder.setLoaded(true);\r
-                               folder.getTree().fireEvent("changeSelection");\r
+                               folder.getTree().fireDataEvent("changeSelection", folder.getTree().getSelection());\r
                        });\r
                        req.addListener("failed", function(response) {\r
                                folder.setLoaded(true);\r
@@ -392,7 +392,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                        if(execFlows[key].getDescription() != ""){\r
                                                org.argeo.slc.ria.FlowsSelectorView.attachToolTip(file, execFlows[key].getDescription());\r
                                        }\r
-                                       file.setIcon("org.argeo.slc.ria/system.png");\r
+                                       file.setIcon("org/argeo/slc/ria/system.png");\r
                                        file.setUserData("executionModule",     executionModule);\r
                                        file.setUserData("executionFlow", execFlows[key]);\r
                                        file.setUserData("agentUuid", agentUuid);\r
@@ -402,7 +402,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                        folder.appendDragData(file);\r
                                }\r
                                folder.setLoaded(true);\r
-                               folder.getTree().fireEvent("changeSelection");\r
+                               folder.getTree().fireDataEvent("changeSelection", folder.getTree().getSelection());\r
                        });\r
                        req.addListener("failed", function(response) {\r
                                folder.setLoaded(true);\r
@@ -552,10 +552,10 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                        }\r
                        if(qx.lang.Array.contains(prefArray, hostName)){\r
                                qx.lang.Array.remove(prefArray, hostName);\r
-                               agentNode.setIcon("org.argeo.slc.ria/computer.png");\r
+                               agentNode.setIcon("org/argeo/slc/ria/computer.png");\r
                        }else{\r
                                prefArray.push(hostName);\r
-                               agentNode.setIcon("org.argeo.slc.ria/computer_bookmarked.png");\r
+                               agentNode.setIcon("org/argeo/slc/ria/computer_bookmarked.png");\r
                                var parent = agentNode.getParent();\r
                                parent.remove(agentNode);\r
                                parent.addAtBegin(agentNode);\r
@@ -587,7 +587,7 @@ qx.Class.define("org.argeo.slc.ria.FlowsSelectorView", {
                                        "Loading Agents", dragData);\r
                        this.tree.setRoot(this.rootNode);\r
                        this.tree.setHideRoot(true);\r
-                       this.rootNode.setPersistentTreeID("org.argeo.slc.ria.FlowsSelector")\r
+                       this.rootNode.setPersistentTreeID("org/argeo/slc/ria.FlowsSelector")\r
                        this.rootNode.setOpen(true);\r
                        this.tree.setContextMenu(org.argeo.ria.event.CommandsManager\r
                                        .getInstance().createMenuFromIds(["addtobatch",\r
index b4b0e2df72de96e7d4edb55e457b47d1357d7f45..894411f359ea2c4cfa5889534625aaafde3a7735 100644 (file)
@@ -29,6 +29,10 @@ qx.Class.define("org.argeo.slc.ria.SlcApi",
        LIST_MODULES_SERVICE : "listModulesDescriptors.service",\r
        GET_EXECUTION_DESC_SERVICE : "getExecutionDescriptor.service",\r
        GET_SLC_EXECUTION_SERVICE : "getSlcExecution.service",\r
+       TAIL_SLCEXEC_STEP_COUNT : "tailSlcExecutionStepsCount.service",\r
+       TAIL_SLCEXEC_STEP_OFFSET : "tailSlcExecutionStepsOffset.service",\r
+       DOWNLOAD_SLCEXEC_STEPS : "downloadSlcExecution.service",\r
+               \r
        RELOAD_BUNDLE_SERVICE : "reloadBundle.service",\r
        AMQ_SERVICE : "amq",\r
        \r
@@ -296,6 +300,21 @@ qx.Class.define("org.argeo.slc.ria.SlcApi",
                return request;\r
        },\r
        \r
+       getTailSlcExecutionStepService : function(executionUuid, stepCount, offset, fireReloadEventType, iLoadStatusables){             \r
+               var request = org.argeo.slc.ria.SlcApi.getServiceRequest(\r
+                       (offset?org.argeo.slc.ria.SlcApi.TAIL_SLCEXEC_STEP_OFFSET:org.argeo.slc.ria.SlcApi.TAIL_SLCEXEC_STEP_COUNT),\r
+                       fireReloadEventType,\r
+                       iLoadStatusables\r
+               );\r
+               request.setParameter("uuid", executionUuid);\r
+               if(offset){\r
+                       request.setParameter("stepOffsetUuid", offset);\r
+               }else{\r
+                       request.setParameter("stepCount", stepCount);\r
+               }\r
+               return request;\r
+       },      \r
+       \r
        /**\r
         * List currently available agents queues.\r
         * @param fireReloadEventType {String} Event type to trigger (optionnal)\r
index d928e4840ddf64e4129a482faa8e2626ecf5e340..e886a89d3c62fc8031d41e7d2543d76ababfefc1 100644 (file)
@@ -33,7 +33,7 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                init : {\r
                        "reloadlogs" : {\r
                                label           : "Reload Logs", \r
-                               icon            : "org.argeo.slc.ria/view-refresh.png",\r
+                               icon            : "org/argeo/slc/ria/view-refresh.png",\r
                                shortcut        : "Control+r",\r
                                enabled         : true,\r
                                menu            : null,\r
@@ -45,7 +45,7 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                        },\r
                        "opendetail" : {\r
                                label           : "Logs Detail",\r
-                               icon            : "org.argeo.slc.ria/mime-xls.png",\r
+                               icon            : "org/argeo/slc/ria/mime-xls.png",\r
                                shortcut        : null,\r
                                enabled         : false,\r
                                menu            : null,\r
@@ -63,7 +63,7 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                        },\r
                        "reopenrealized" : {\r
                                label           : "Re-open",\r
-                               icon            : "org.argeo.slc.ria/document-open.png",\r
+                               icon            : "org/argeo/slc/ria/document-open.png",\r
                                shortcut        : "Control+o",\r
                                enabled         : false,\r
                                menu            : null,\r
@@ -180,7 +180,7 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
        openDetail : function(logData){\r
                                \r
                var uuid = logData[2];\r
-               var window = new qx.ui.window.Window("Logs Detail", "org.argeo.slc.ria/mime-xls.png");\r
+               var window = new qx.ui.window.Window("Logs Detail", "org/argeo/slc/ria/mime-xls.png");\r
                window.setLayout(new qx.ui.layout.VBox(0));\r
                window.setContentPadding(0);            \r
                window.open();\r
@@ -193,7 +193,7 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                \r
                var tBar = new qx.ui.toolbar.ToolBar();\r
                window.add(tBar);\r
-               var menuButton = new qx.ui.toolbar.Button("Close", "org.argeo.slc.ria/window-close.png");\r
+               var menuButton = new qx.ui.toolbar.Button("Close", "org/argeo/slc/ria/window-close.png");\r
                tBar.add(menuButton);\r
                menuButton.addListener("execute", function(e){\r
                        window.close();\r
@@ -203,6 +203,7 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                var table = new org.argeo.ria.components.ui.Table(tableModel, {\r
                        "date":{NAME : "Date", WIDTH:180}, \r
                        "type":{NAME : "Type", WIDTH:90, ALIGN:"CENTER"}, \r
+                       "thread":{NAME : "Thread", WIDTH:90, ALIGN:"CENTER"}, \r
                        "log":"Log"\r
                });\r
                table.setStatusBarVisible(true);\r
@@ -216,49 +217,19 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                        table.scrollCellVisible(0, dataMap.lastRow);\r
                });\r
                \r
-               \r
-               var tA = new qx.ui.container.Composite(new qx.ui.layout.Canvas());              \r
-               tA.setHeight(120);\r
-               \r
-               var textArea = new qx.ui.form.TextArea();               \r
-               tA.add(textArea, {left:0,top:0, right:0,bottom:0});\r
-               \r
-               var okButton = new qx.ui.form.Button("Done");\r
-               okButton.setZIndex(2000);\r
-               tA.add(okButton, {bottom:20,right:20});\r
-               okButton.addListener("execute", function(){\r
-                       tA.setVisibility("excluded");\r
-               });\r
-               \r
-               textArea.setNativeContextMenu(true);\r
-               window.add(tA);\r
-               var cpButton = new qx.ui.toolbar.Button("Copy As Text", "org.argeo.slc.ria/edit-copy.png");\r
+               var cpButton = new qx.ui.toolbar.Button("Download", "org/argeo/slc/ria/document-save-as.png");\r
                tBar.add(cpButton);\r
                cpButton.addListener("execute", function(e){\r
-                       var all = tableModel.getData();\r
-                       var string = "";\r
-                       for(var i=0;i<all.length;i++){\r
-                               for(var j=0;j<all[i].length;j++){\r
-                                       string += all[i][j] + "\t";\r
-                               }\r
-                               string += "\n";\r
-                       }\r
-                       tA.setVisibility("visible");\r
-                       textArea.setValue(string);\r
-                       new qx.util.DeferredCall(function(){\r
-                               textArea.setSelection(0, string.length);\r
-                       }).schedule();                  \r
+                       var downloadUrl = org.argeo.slc.ria.SlcApi.DEFAULT_CONTEXT+"/"+org.argeo.slc.ria.SlcApi.DOWNLOAD_SLCEXEC_STEPS + "?ext=log&uuid=" + uuid;\r
+                       org.argeo.ria.Application.INSTANCE.javascriptDownloadLocation(downloadUrl);\r
                });\r
-               tA.setVisibility("excluded");\r
-               \r
-               \r
                \r
                // Call service to load execution message\r
-               this._loadSlcExecution(uuid, tableModel);\r
+               this._loadSlcExecutionSteps(uuid, tableModel, false);\r
                \r
                var poller = new qx.event.Timer(3000);\r
                poller.addListener("interval", function(e){\r
-                       this._loadSlcExecution(uuid, tableModel);\r
+                       this._loadSlcExecutionSteps(uuid, tableModel, true);\r
                }, this);\r
                \r
                window.addListener("close", function(){\r
@@ -267,29 +238,40 @@ qx.Class.define("org.argeo.slc.ria.SlcExecLoggerApplet",
                poller.start();\r
        },      \r
 \r
-       _loadSlcExecution : function(uuid, tableModel){\r
-               var req = org.argeo.slc.ria.SlcApi.getSlcExecutionService(uuid);\r
+       _loadSlcExecutionSteps : function(uuid, tableModel, poller){\r
+               var req;\r
+               var lastUuid = tableModel.getUserData("lastStepUuid");\r
+               if(!poller || !lastUuid){\r
+                       req = org.argeo.slc.ria.SlcApi.getTailSlcExecutionStepService(uuid, 200, null);\r
+               }else{\r
+                       req = org.argeo.slc.ria.SlcApi.getTailSlcExecutionStepService(uuid, null, lastUuid);\r
+               }\r
                req.addListener("completed", function(response){                        \r
                        var xmlDoc = response.getContent();\r
-                       var tableLines = [];\r
+                       var tableLines = (poller?tableModel.getData():[]);\r
                        var parser = org.argeo.ria.util.Element;\r
-                       var slcSteps = parser.selectNodes(xmlDoc, "slc:slc-execution/slc:steps/slc:slc-execution-step");\r
+                       var slcSteps = parser.selectNodes(xmlDoc, "slc:object-list/slc:slc-execution-step");\r
                        for(var i=0;i<slcSteps.length;i++){                             \r
                                var step = slcSteps[i];\r
-                               var date = parser.getSingleNodeText(step, "slc:begin");\r
+                               var stepUuid = parser.getSingleNodeText(step, "@uuid");\r
+                               var date = parser.getSingleNodeText(step, "slc:timestamp");\r
                                var type = parser.getSingleNodeText(step, "slc:type");\r
+                               var thread = parser.getSingleNodeText(step, "slc:thread");\r
                                var logLines = parser.selectNodes(step, "slc:log-lines/slc:log-line");\r
                                if(logLines.length > 0){\r
-                                       tableLines.push([date, type, parser.getSingleNodeText(logLines[0], ".")]);\r
+                                       tableLines.push([date, type, thread, parser.getSingleNodeText(logLines[0], ".")]);\r
                                        if(logLines.length>1){\r
                                                for(var j=1;j<logLines.length;j++){\r
-                                                       tableLines.push(["", "", parser.getSingleNodeText(logLines[j], ".")]);  \r
+                                                       tableLines.push(["", "", "", parser.getSingleNodeText(logLines[j], ".")]);      \r
                                                }\r
                                        }\r
                                }else{\r
-                                       tableLines.push([date, type, ""]);\r
+                                       tableLines.push([date, type, thread, ""]);\r
                                }\r
                        }\r
+                       if(slcSteps.length){\r
+                               tableModel.setUserData("lastStepUuid", stepUuid);\r
+                       }\r
                        tableModel.setData(tableLines);\r
                });\r
                req.send();\r
index 012ac49928bbc13f0f6e0449b01295a292858859..9d2f106735bc85c86fe4891f53c38fc3ba39f1a2 100644 (file)
@@ -122,7 +122,7 @@ 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
-                       var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:begin", NSMap);\r
+                       var stepsDates = org.argeo.ria.util.Element.selectNodes(slcExecXml, "slc:steps/slc:slc-execution-step/slc:timestamp", NSMap);\r
                        if(stepsDates.length){\r
                                this.setDate(org.argeo.ria.util.Element.getSingleNodeText(stepsDates[stepsDates.length-1], ".", NSMap));\r
                        }\r
index dcc9a2660767a9a3b0d2fb201ef78d0ab576c9a3..ceadd94d798d94e16647ea096bf44f0a3b23b34b 100644 (file)
@@ -16,7 +16,7 @@ qx.Class.define("org.argeo.slc.ria.SpecsEditorView",
                        init : {\r
                                "updateData" : {\r
                                        label : "Edit Execution Specs",\r
-                                       icon : "org.argeo.slc.riadocument-open.png",\r
+                                       icon : "org/argeo/slc/ria/document-open.png",\r
                                        shortcut : null,\r
                                        enabled : false,\r
                                        menu : null,\r
index 7e31b7967f37f6f6a6d8e19eb4adb56ee53db2d6..6651813373ca3c2113fe3cfc85ade9353bac9ff5 100644 (file)
@@ -165,7 +165,7 @@ qx.Class.define("org.argeo.slc.ria.execution.CellEditorFactory",
                                value = cellEditor.getValue();
                        }else{
                                var sel = cellEditor.getModelSelection();
-                               value = sel[0];
+                               value = sel.getItem(0);
                        }
                        var validationFunc = cellEditor.getUserData("validationFunc");
                        
index d537031ec4bec296f5523a290a0e8b63ba32e456..60aab82fdc31c50056427b10325bc832af3ca92e 100644 (file)
@@ -11,7 +11,7 @@ qx.Class.define("org.argeo.slc.ria.monitor.DistListView", {
                        init : {\r
                                "reload" : {\r
                                        label : "Reload",\r
-                                       icon : "org.argeo.slc.ria/view-refresh.png",\r
+                                       icon : "org/argeo/slc/ria/view-refresh.png",\r
                                        shortcut : "control+h",\r
                                        enabled : true,\r
                                        menu : "Distributions",\r
@@ -23,7 +23,7 @@ qx.Class.define("org.argeo.slc.ria.monitor.DistListView", {
                                },\r
                                "uninstall" : {\r
                                        label   : "Uninstall",\r
-                                       icon    : "org.argeo.slc.ria/window-close.png",\r
+                                       icon    : "org/argeo/slc/ria/window-close.png",\r
                                        shortcut: null,\r
                                        enabled : false,\r
                                        menu    : "Distributions",\r