Collections management first implementation (with stub), moved XmlRenderer to slc...
authorCharles du Jeu <charles.dujeu@gmail.com>
Mon, 8 Dec 2008 15:15:26 +0000 (15:15 +0000)
committerCharles du Jeu <charles.dujeu@gmail.com>
Mon, 8 Dec 2008 15:15:26 +0000 (15:15 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@1958 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/ria/components/XmlRenderer.js [deleted file]
org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/Perspective.js
org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/TestList.js
org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/XmlRenderer.js [new file with mode: 0644]

diff --git a/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/ria/components/XmlRenderer.js b/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/ria/components/XmlRenderer.js
deleted file mode 100644 (file)
index 8b1c54d..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/**\r
- * Basic helper for SLC XML results to be displayed in a qx.ui.table.\r
- * Overrides the html of the standard qx.ui.table.cellrenderer.String\r
- *  \r
- * TODO : put in org.argeo.slc.ria package\r
- * \r
- */\r
-qx.Class.define("org.argeo.ria.components.XmlRenderer",\r
-{\r
-  extend : qx.ui.table.cellrenderer.String,\r
-\r
-  /*\r
-  *****************************************************************************\r
-     MEMBERS\r
-  *****************************************************************************\r
-  */\r
-\r
-  members :\r
-  {\r
-       /**\r
-        * Overrides the parent method.\r
-        * @param cellInfo {Map} The current cell data \r
-        * @return {String}\r
-        */\r
-    _getContentHtml : function(cellInfo) {\r
-       var xmlNode = cellInfo.rowData;\r
-       if(!xmlNode) return "";\r
-       var xPath;\r
-       switch(cellInfo.col){\r
-               case 0 :\r
-                       xPath = "param[@name='testName']";\r
-                       var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath);\r
-                       var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || "Not Found");\r
-                       break;\r
-               case 1 : \r
-                       xPath = 'param[@name="date"]';\r
-                       var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath);\r
-                       //qx.log.Logger.info(nameParam);\r
-                       var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || 0);\r
-                       if(value == "NOT CLOSED") return value;\r
-                       var splits = value.split(".");\r
-                               //qx.log.Logger.info(value);\r
-                       var dateFormat = new qx.util.format.DateFormat("yyyy-MM-dd HH:mm:ss");\r
-                       try {\r
-                               var date = dateFormat.parse(splits[0]);\r
-                               var dateFormat2 = new qx.util.format.DateFormat("MMM d, yy HH:mm:ss");\r
-                               return dateFormat2.format(date);\r
-                       }catch(e){\r
-                               qx.log.Logger.info(e);\r
-                       }\r
-                       break;\r
-               default :\r
-                       return "";\r
-                       break;\r
-       }\r
-       \r
-       return value;\r
-    },\r
-    \r
-    // overridden\r
-    /**\r
-     * Overrides parent method\r
-     * @param cellInfo {Map} Current cell data\r
-     * @return {String}\r
-     */\r
-    _getCellClass : function(cellInfo) {\r
-               return this.base(arguments, cellInfo);\r
-    }\r
-    \r
-  }\r
-});
\ No newline at end of file
index 2635efd86453e018576d859163dc433d0293b79e..93b097dc678a2efab11d683176e6aad0ee4c6632 100644 (file)
@@ -34,7 +34,8 @@ qx.Class.define("org.argeo.slc.web.Perspective",
        initViews : function(viewsManager){\r
          var view = viewsManager.initIViewClass(org.argeo.slc.web.TestList, "list");\r
          view.load();\r
-         var command = org.argeo.ria.event.CommandsManager.getInstance().executeCommand("loadtestlist");\r
+         //var command = org.argeo.ria.event.CommandsManager.getInstance().executeCommand("loadtestlist");\r
+         view.loadCollections(); // We know it is a TestList!\r
        }\r
        \r
   }\r
index 7863de1a9dde6814a4d80a1b1461f2bc9775f36e..29505adec5d6b323f1ba1b70204d5c33f2e6eb6c 100644 (file)
@@ -3,18 +3,18 @@
  */\r
 qx.Class.define("org.argeo.slc.web.TestList",\r
 {\r
-  extend : qx.ui.table.Table,\r
+  extend : qx.ui.container.Composite,\r
   implement : [org.argeo.ria.components.IView], \r
 \r
   construct : function(){\r
+       this.base(arguments, new qx.ui.layout.VBox());          \r
        var model = new qx.ui.table.model.Simple();\r
        model.setColumns(["Test Case", "Date"]);\r
-       this.base(arguments, model, {\r
+       this.table = new qx.ui.table.Table(model, {\r
                tableColumnModel: function(obj){\r
                        return new qx.ui.table.columnmodel.Resize(obj)\r
                }\r
        });\r
-       this.setModel(model);\r
   },\r
 \r
   properties : \r
@@ -22,13 +22,18 @@ qx.Class.define("org.argeo.slc.web.TestList",
        view : {\r
                init : null\r
        },\r
-       model : {\r
-               init: null\r
+       collectionList : {\r
+               init : {},\r
+               check : "Map"\r
+       },\r
+       collectionId:{\r
+               init : 'My Collection',\r
+               check : "String"\r
        },\r
        commands : {\r
                init : {\r
                        "loadtestlist" : {\r
-                               label           : "Load Tests", \r
+                               label           : "Load Collection", \r
                                icon            : "resource/slc/view-refresh.png",\r
                                shortcut        : "Control+l",\r
                                enabled         : true,\r
@@ -100,18 +105,18 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                        \r
                                        var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');\r
                                        if(reports == null || !reports.length)return;\r
-                                       \r
+                                       var submenus = [];\r
                                        for(var i=0; i<reports.length;i++){\r
                                                var report = reports[i];\r
-                                               var commandId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(report, "@commandid")); \r
-                                               this.addSubMenuButton(\r
-                                                       qx.dom.Node.getText(report),\r
-                                                       "resource/slc/mime-"+commandId+".png",\r
-                                                       commandId\r
-                                               );\r
+                                               var commandId = qx.dom.Node.getText(org.argeo.ria.util.Element.selectSingleNode(report, "@commandid"));\r
+                                               submenus.push({\r
+                                                       "label":qx.dom.Node.getText(report), \r
+                                                       "icon":"resource/slc/mime-"+commandId+".png", \r
+                                                       "commandId":commandId\r
+                                               });\r
                                        }\r
+                                       this.setMenu(submenus);\r
                                        this.setEnabled(true);\r
-                                       this.fireDataEvent("changeMenu", this.getMenu());\r
                                }\r
                        },\r
                        "deletetest" : {\r
@@ -124,6 +129,12 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                callback        : function(e){\r
                                        // Call service to delete\r
                                },\r
+                               selectionChange : function(viewId, xmlNodes){\r
+                                       if(viewId != "list") return;\r
+                                       this.setEnabled(false);\r
+                                       if(xmlNodes == null || !xmlNodes.length) return;\r
+                                       this.setEnabled(true);                                                  \r
+                               },\r
                                command         : null\r
                        },\r
                        "copytocollection" : {\r
@@ -136,6 +147,34 @@ qx.Class.define("org.argeo.slc.web.TestList",
                                callback        : function(e){\r
                                        // Call service to copy\r
                                },\r
+                               submenu         : {},\r
+                               init : function(){\r
+                                       // Call at command creation\r
+                                       org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){\r
+                                               if(event.getDataType() != "collection") return;\r
+                                               this.setEnabled(false);\r
+                                               this.clearMenus();      \r
+                                               var collectionList = event.getContent();\r
+                                               if(!collectionList) return;\r
+                                               var submenus = [];\r
+                                               for(var key in collectionList){\r
+                                                       submenus.push({\r
+                                                               "label":collectionList[key], \r
+                                                               "icon":null, \r
+                                                               "commandId":key\r
+                                                       });\r
+                                               }\r
+                                               this.setMenu(submenus);\r
+                                               var viewSelection = org.argeo.ria.components.ViewsManager.getInstance().getViewPaneSelection("list");\r
+                                               if(viewSelection.getCount()) this.setEnabled(true);\r
+                                       }, this);\r
+                               },\r
+                               selectionChange : function(viewId, xmlNodes){\r
+                                       if(viewId != "list") return;\r
+                                       this.setEnabled(false);\r
+                                       if(xmlNodes == null || !xmlNodes.length) return;\r
+                                       this.setEnabled(true);                                                  \r
+                               },\r
                                command         : null\r
                        }                       \r
                }\r
@@ -147,7 +186,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
          this.setView(viewPane);\r
        },\r
        load : function(data){\r
-         this.set({            \r
+         this.table.set({              \r
                statusBarVisible: false,\r
                showCellFocusIndicator:false,\r
                columnVisibilityButtonVisible:false,\r
@@ -155,31 +194,61 @@ qx.Class.define("org.argeo.slc.web.TestList",
                decorator : new qx.ui.decoration.Background("#fff")\r
          });\r
          var viewPane = this.getView();\r
-         this.addListener("dblclick", function(e){\r
+         this.table.addListener("dblclick", function(e){\r
                org.argeo.ria.event.CommandsManager.getInstance().executeCommand("opentest");\r
          }, this);\r
-         var columnModel = this.getTableColumnModel(); \r
+         var columnModel = this.table.getTableColumnModel(); \r
          columnModel.getBehavior().setWidth(0, "60%");\r
-         columnModel.setDataCellRenderer(0, new org.argeo.ria.components.XmlRenderer());\r
-         columnModel.setDataCellRenderer(1, new org.argeo.ria.components.XmlRenderer());\r
+         columnModel.setDataCellRenderer(0, new org.argeo.slc.web.XmlRenderer());\r
+         columnModel.setDataCellRenderer(1, new org.argeo.slc.web.XmlRenderer());\r
          \r
-         this.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){\r
+         this.table.getSelectionManager().getSelectionModel().addListener("changeSelection", function(e){\r
                var viewSelection = viewPane.getViewSelection();\r
                viewSelection.clear();\r
-               var selectionModel = this.getSelectionManager().getSelectionModel();\r
+               var selectionModel = this.table.getSelectionManager().getSelectionModel();\r
                if(!selectionModel.getSelectedCount()){\r
                        return;\r
                }\r
-               var ranges = this.getSelectionManager().getSelectionModel().getSelectedRanges();\r
-               var xmlNode = this.getModel().getRowData(ranges[0].minIndex);\r
+               var ranges = this.table.getSelectionManager().getSelectionModel().getSelectedRanges();\r
+               var xmlNode = this.table.getTableModel().getRowData(ranges[0].minIndex);\r
                viewSelection.addNode(xmlNode);\r
                viewPane.setViewSelection(viewSelection);\r
          }, this);             \r
+         \r
+         var select = new qx.ui.form.SelectBox();\r
+         this.getView().addHeaderComponent(select);\r
+         this.getView().setViewTitle("");\r
+         this.add(this.table, {flex:1});\r
+\r
+         select.addListener("changeValue", function(dataEvent){\r
+               this.debug(dataEvent.getData());\r
+               this.setCollectionId(dataEvent.getData());\r
+               this.loadList();\r
+         }, this);\r
+\r
+         org.argeo.ria.remote.RequestManager.getInstance().addListener("reload", function(event){\r
+                if(event.getDataType()!="collection") return;\r
+                var collectionList = event.getContent();\r
+                select.removeAll();\r
+                for(key in collectionList){\r
+                       var item = new qx.ui.form.ListItem(collectionList[key], null, key);\r
+                       select.add(item);\r
+                       if(key == this.getCollectionId()){\r
+                               select.setSelected(item);\r
+                       }\r
+                }\r
+         }, this);\r
+                 \r
+       },\r
+       \r
+       loadCollections : function(){\r
+               this.setCollectionList({"Charles":"Collection 'Charles'","My Collection":"Collection 'My Collection'"});\r
+               org.argeo.ria.remote.RequestManager.getInstance().fireReloadEvent("collection", this.getCollectionList());\r
        },\r
        \r
        loadList : function(){\r
                var url = "/org.argeo.slc.webapp/resultList.ui";\r
-               var model = this.getModel();\r
+               var model = this.table.getTableModel();\r
                model.removeRows(0, model.getRowCount());\r
                var serviceManager = org.argeo.ria.remote.RequestManager.getInstance();\r
                var commandManager = org.argeo.ria.event.CommandsManager.getInstance();\r
@@ -189,7 +258,8 @@ qx.Class.define("org.argeo.slc.web.TestList",
                        "application/xml",\r
                        "test_cases",\r
                        [commandManager.getCommandById("loadtestlist"), this.getView()]\r
-               );              \r
+               );       \r
+               request.setParameter("collectionId", this.getCollectionId());\r
                request.addListener("completed", function(response){\r
                        xml = response.getContent();\r
                        qx.log.Logger.info("Successfully loaded XML");\r
@@ -202,7 +272,7 @@ qx.Class.define("org.argeo.slc.web.TestList",
                }, request);\r
                request.send();         \r
        },\r
-       \r
+               \r
        addScroll : function(){\r
                return false;\r
        }       \r
diff --git a/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/XmlRenderer.js b/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/XmlRenderer.js
new file mode 100644 (file)
index 0000000..0ed66cd
--- /dev/null
@@ -0,0 +1,71 @@
+/**\r
+ * Basic helper for SLC XML results to be displayed in a qx.ui.table.\r
+ * Overrides the html of the standard qx.ui.table.cellrenderer.String\r
+ *  \r
+ * TODO : put in org.argeo.slc.ria package\r
+ * \r
+ */\r
+qx.Class.define("org.argeo.slc.web.XmlRenderer",\r
+{\r
+  extend : qx.ui.table.cellrenderer.String,\r
+\r
+  /*\r
+  *****************************************************************************\r
+     MEMBERS\r
+  *****************************************************************************\r
+  */\r
+\r
+  members :\r
+  {\r
+       /**\r
+        * Overrides the parent method.\r
+        * @param cellInfo {Map} The current cell data \r
+        * @return {String}\r
+        */\r
+    _getContentHtml : function(cellInfo) {\r
+       var xmlNode = cellInfo.rowData;\r
+       if(!xmlNode) return "";\r
+       var xPath;\r
+       switch(cellInfo.col){\r
+               case 0 :\r
+                       xPath = "param[@name='testName']";\r
+                       var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath);\r
+                       var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || "Not Found");\r
+                       break;\r
+               case 1 : \r
+                       xPath = 'param[@name="date"]';\r
+                       var nameParam = org.argeo.ria.util.Element.selectSingleNode(xmlNode, xPath);\r
+                       //qx.log.Logger.info(nameParam);\r
+                       var value = qx.bom.String.escape(qx.dom.Node.getText(nameParam) || 0);\r
+                       if(value == "NOT CLOSED") return value;\r
+                       var splits = value.split(".");\r
+                               //qx.log.Logger.info(value);\r
+                       var dateFormat = new qx.util.format.DateFormat("yyyy-MM-dd HH:mm:ss");\r
+                       try {\r
+                               var date = dateFormat.parse(splits[0]);\r
+                               var dateFormat2 = new qx.util.format.DateFormat("MMM d, yy HH:mm:ss");\r
+                               return dateFormat2.format(date);\r
+                       }catch(e){\r
+                               qx.log.Logger.info(e);\r
+                       }\r
+                       break;\r
+               default :\r
+                       return "";\r
+                       break;\r
+       }\r
+       \r
+       return value;\r
+    },\r
+    \r
+    // overridden\r
+    /**\r
+     * Overrides parent method\r
+     * @param cellInfo {Map} Current cell data\r
+     * @return {String}\r
+     */\r
+    _getCellClass : function(cellInfo) {\r
+               return this.base(arguments, cellInfo);\r
+    }\r
+    \r
+  }\r
+});
\ No newline at end of file