--- /dev/null
+/**\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