]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/TestList.js
Collections management first implementation (with stub), moved XmlRenderer to slc...
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / TestList.js
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