]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/event/CommandsManager.js
Add source and build version of org.argeo.slc.web.Application together with build...
[gpl/argeo-slc.git] / org.argeo.slc.webapp / src / main / webapp / source / class / org / argeo / slc / web / event / CommandsManager.js
diff --git a/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/event/CommandsManager.js b/org.argeo.slc.webapp/src/main/webapp/source/class/org/argeo/slc/web/event/CommandsManager.js
new file mode 100644 (file)
index 0000000..f0dff46
--- /dev/null
@@ -0,0 +1,270 @@
+/**\r
+ * @author Charles\r
+ * \r
+ */\r
+qx.Class.define("org.argeo.slc.web.event.CommandsManager",\r
+{\r
+  extend : qx.core.Object,\r
+\r
+  construct : function(application){\r
+       this.base(arguments);\r
+       this.application = application;\r
+  },\r
+\r
+  properties : \r
+  {\r
+       definitions : {\r
+               init : {\r
+                       "loadtestlist" : {\r
+                               label           : "Load Tests", \r
+                               icon            : "resource/slc/view-refresh.png",\r
+                               shortcut        : "Control+l",\r
+                               enabled         : true,\r
+                               menu            : "File",\r
+                               toolbar         : "list",\r
+                               callback        : function(e){\r
+                                       this.loadTable("/com.capco.sparta.web/resultList.sparta");\r
+                               }, \r
+                               command         : null\r
+                       },\r
+                       "quit" : {\r
+                               label           : "Quit", \r
+                               icon            : "resource/slc/system-shutdown.png",\r
+                               shortcut        : "Control+q",\r
+                               enabled         : true,\r
+                               menu            : "File",\r
+                               toolbar         : false,\r
+                               callback        : function(e){}, \r
+                               command         : null\r
+                       },\r
+                       "opentest" : {\r
+                               label           : "Open", \r
+                               icon            : "resource/slc/document-open.png",\r
+                               shortcut        : "Control+o",\r
+                               enabled         : false,\r
+                               menu            : "Test",\r
+                               toolbar         : "test",\r
+                               callback        : function(e){\r
+                                       var xmlNodes = this.getSelectionForView("list").getNodes();\r
+                                       this.createTestApplet(xmlNodes[0]);\r
+                               },\r
+                               selectionChange : function(viewId, xmlNodes){\r
+                                       if(viewId != "list") return;\r
+                                       this.setEnabled(false);\r
+                                       if(xmlNodes == null) return;\r
+                                       var applet = qx.xml.Element.selectSingleNode(xmlNodes[0],'report[@type="applet"]'); \r
+                                       if(applet != null && qx.dom.Node.getText(applet) != ""){\r
+                                               this.setEnabled(true);                                                  \r
+                                       }                                       \r
+                               },\r
+                               command         : null\r
+                       },\r
+                       "download" : {\r
+                               label           : "Download as...", \r
+                               icon            : "resource/slc/go-down.png",\r
+                               shortcut        : null,\r
+                               enabled         : false,\r
+                               menu            : "Test",\r
+                               toolbar         : "test",\r
+                               callback        : function(e){ },\r
+                               command         : null,\r
+                               submenu         : {},\r
+                               submenuCallback : function(commandId){\r
+                                       qx.log.Logger.info(commandId);\r
+                               },\r
+                               selectionChange : function(viewId, xmlNodes){\r
+                                       if(viewId!="list")return;\r
+                                       this.clearMenus();\r
+                                       this.setEnabled(false);\r
+                                       if(xmlNodes == null) return;\r
+                                       \r
+                                       var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]');\r
+                                       if(reports == null || !reports.length)return;\r
+                                       \r
+                                       reports.map(function(report){\r
+                                               this.addSubMenuButton(\r
+                                                       qx.dom.Node.getText(report),\r
+                                                       qx.dom.Node.getText(qx.xml.Element.selectSingleNode(report, "@icon")),\r
+                                                       qx.dom.Node.getText(qx.xml.Element.selectSingleNode(report, "@commandid"))\r
+                                               );\r
+                                       }, this);\r
+                                       this.setEnabled(true);\r
+                                       this.fireDataEvent("changeMenu", this.getMenu());\r
+                               }\r
+                       },\r
+                       "deletetest" : {\r
+                               label           : "Delete", \r
+                               icon            : "resource/slc/edit-delete.png",\r
+                               shortcut        : "Control+d",\r
+                               enabled         : false,\r
+                               menu            : "Test",\r
+                               toolbar         : "test",\r
+                               callback        : function(e){\r
+                                       // Call service to delete\r
+                               },\r
+                               command         : null\r
+                       },\r
+                       "copytocollection" : {\r
+                               label           : "Copy to...", \r
+                               icon            : "resource/slc/edit-copy.png",\r
+                               shortcut        : "Control+c",\r
+                               enabled         : false,\r
+                               menu            : "Test",\r
+                               toolbar         : "test",\r
+                               callback        : function(e){\r
+                                       // Call service to copy\r
+                               },\r
+                               command         : null\r
+                       },\r
+                       "log" : {\r
+                               label           : "Toggle Console", \r
+                               icon            : "resource/slc/help-contents.png",\r
+                               shortcut        : "",\r
+                               enabled         : true,\r
+                               menu            : "Help",\r
+                               toolbar         : false,\r
+                               callback        : function(e){\r
+                                       qx.log.appender.Console.toggle();\r
+                               }, \r
+                               command         : null\r
+                       },\r
+                       "help" : {\r
+                               label           : "About...", \r
+                               icon            : "resource/slc/help-about.png",\r
+                               shortcut        : "Control+h",\r
+                               enabled         : true,\r
+                               menu            : "Help",\r
+                               toolbar         : false,\r
+                               callback        : function(e){\r
+                                       var wm1 = new qx.ui.window.Window("About SLC");\r
+                                       wm1.set({\r
+                                               showMaximize : false,\r
+                                               showMinimize : false,\r
+                                               width: 200,\r
+                                               height: 150\r
+                                       });\r
+                                       wm1.setLayout(new qx.ui.layout.Dock());\r
+                                       wm1.add(new qx.ui.basic.Label("SLC is a product from Argeo."), {edge:'center', width:'100%'});\r
+                                       var closeButton = new qx.ui.form.Button("Close");\r
+                                       closeButton.addListener("execute", function(e){\r
+                                               this.hide();\r
+                                               this.destroy();\r
+                                       }, wm1);\r
+                                       wm1.add(closeButton, {edge:'south'});\r
+                                       wm1.setModal(true);\r
+                                       wm1.center();\r
+                                       this.getRoot().add(wm1);\r
+                                       wm1.show();\r
+                               }, \r
+                               command         : null\r
+                       }\r
+               }\r
+       }\r
+  },\r
+\r
+  /*\r
+  *****************************************************************************\r
+     MEMBERS\r
+  *****************************************************************************\r
+  */\r
+\r
+  members :\r
+  {\r
+       createCommands : function(){\r
+               this.menus = {};\r
+               this.toolbars = {};\r
+               var defs = this.getDefinitions();\r
+               for(var key in defs){\r
+                       var definition = defs[key];\r
+                       var command = new org.argeo.slc.web.event.Command(key, definition.label, definition.icon, definition.shortcut);\r
+                       if(definition.submenu){\r
+                               var menu = new qx.ui.menu.Menu();\r
+                               command.setMenu(menu);\r
+                               if(definition.submenuCallback){\r
+                                       command.setMenuCallback(definition.submenuCallback);\r
+                               }\r
+                       }\r
+                       command.setEnabled(definition.enabled);\r
+                       command.addListener("execute", definition.callback, this.application);\r
+                       definition.command = command;\r
+                       if(definition.menu){\r
+                               if(!this.menus[definition.menu]) this.menus[definition.menu] = [];\r
+                               this.menus[definition.menu].push(command);\r
+                       }\r
+                       if(definition.toolbar){\r
+                               if(!this.toolbars[definition.toolbar]) this.toolbars[definition.toolbar] = [];\r
+                               this.toolbars[definition.toolbar].push(command);\r
+                       }\r
+               }\r
+               this.setDefinitions(defs);\r
+       },\r
+       \r
+       refreshCommands : function(viewSelection){\r
+               var defs = this.getDefinitions();\r
+               var xmlNodes = null;\r
+               if(viewSelection.getCount() > 0){\r
+                       var xmlNodes = viewSelection.getNodes();\r
+               }\r
+               for(var key in defs){\r
+                       var definition = defs[key];\r
+                       if(!definition.selectionChange) continue;\r
+                       var binded = qx.lang.Function.bind(definition.selectionChange, definition.command);\r
+                       binded(viewSelection.getViewId(), xmlNodes);\r
+               }\r
+       },\r
+       createMenuButtons : function(menuBar){\r
+               for(var key in this.menus){\r
+                       var menu = new qx.ui.menu.Menu();\r
+                       var button = new qx.ui.menubar.Button(key, null, menu);\r
+                       for(var i=0; i<this.menus[key].length;i++){\r
+                               menu.add(this.menus[key][i].getMenuButton());\r
+                       }\r
+                       menuBar.add(button);\r
+               }\r
+\r
+       },\r
+       createToolbarParts : function(toolbar){\r
+               for(var key in this.toolbars){\r
+                       var tPart = new qx.ui.toolbar.Part();\r
+                       toolbar.add(tPart);\r
+                       this.toolbars[key].map(function(command){\r
+                               tPart.add(command.getToolbarButton());\r
+                       });\r
+               }\r
+       },\r
+       createMenuFromIds : function(commandIdsArray){\r
+               var defs = this.getDefinitions();\r
+               var contextMenu = new qx.ui.menu.Menu();\r
+               for(var i=0;i<commandIdsArray.length;i++){\r
+                       var definition = defs[commandIdsArray[i]];\r
+                       var command = definition.command;\r
+                       contextMenu.add(command.getMenuButton());\r
+               }\r
+               return contextMenu;\r
+       },\r
+       executeCommand : function(commandId){\r
+               var defs = this.getDefinitions();\r
+               if(defs[commandId] && defs[commandId].command.getEnabled()){\r
+                       defs[commandId].command.execute();\r
+               }\r
+       },\r
+       addToolbarContextMenu : function(toolbar){\r
+               var menu = new qx.ui.menu.Menu();\r
+               var icon = new qx.ui.menu.RadioButton("Show Icons");\r
+               icon.setValue("icon");\r
+               var text = new qx.ui.menu.RadioButton("Show Text");\r
+               text.setValue("label");\r
+               var both = new qx.ui.menu.RadioButton("Show Both");\r
+               both.setValue("both");\r
+               var mgr = new qx.ui.form.RadioGroup(icon, text, both);\r
+               menu.add(icon);\r
+               menu.add(text);\r
+               menu.add(both);\r
+               toolbar.setContextMenu(menu);           \r
+               mgr.addListener("changeValue", function(e){\r
+                       this.setShow(e.getData());\r
+               }, toolbar);\r
+               \r
+       }\r
+  }\r
+});
\ No newline at end of file