/** * @author Charles * */ qx.Class.define("org.argeo.slc.web.event.CommandsManager", { extend : qx.core.Object, construct : function(application){ this.base(arguments); this.application = application; this.setInitialDefinitions(qx.lang.Object.copy(this.getDefinitions())); this.addListener("changedCommands", this.createCommands, this); }, properties : { definitions : { init : { "loadtestlist" : { label : "Load Tests", icon : "resource/slc/view-refresh.png", shortcut : "Control+l", enabled : true, menu : "File", toolbar : "list", callback : function(e){ this.loadTable("/org.argeo.slc.webapp/resultList.ui"); }, command : null }, "stop" : { label : "Stop", icon : "resource/slc/process-stop.png", shortcut : "Control+s", enabled : false, menu : null, toolbar : "list", callback : function(e){}, command : null }, "quit" : { label : "Quit", icon : "resource/slc/system-shutdown.png", shortcut : "Control+q", enabled : true, menu : "File", toolbar : false, callback : function(e){}, command : null }, "opentest" : { label : "Open", icon : "resource/slc/document-open.png", shortcut : "Control+o", enabled : false, menu : "Test", toolbar : "test", callback : function(e){ var xmlNodes = this.getSelectionForView("list").getNodes(); this.createTestApplet(xmlNodes[0]); }, selectionChange : function(viewId, xmlNodes){ if(viewId != "list") return; this.setEnabled(false); if(xmlNodes == null || !xmlNodes.length) return; var applet = org.argeo.slc.web.util.Element.selectSingleNode(xmlNodes[0],'report[@type="applet"]'); if(applet != null && qx.dom.Node.getText(applet) != ""){ this.setEnabled(true); } }, command : null }, "download" : { label : "Download as...", icon : "resource/slc/go-down.png", shortcut : null, enabled : false, menu : "Test", toolbar : "test", callback : function(e){ }, command : null, submenu : {}, submenuCallback : function(commandId){ var xmlNodes = this.getSelectionForView("list").getNodes(); // Single selection var uuid = qx.xml.Element.getSingleNodeText(xmlNodes[0], 'param[@name="uuid"]'); var urls = { xsl : "resultView.xslt", xml : "resultViewXml.xslt", xls : "resultView.xls", pdf : "resultView.pdf" }; var url = "../"+urls[commandId]+"?uuid="+uuid; if(commandId == "xls" || commandId == "pdf"){ document.location.href = url; }else{ var win = window.open(url); } }, selectionChange : function(viewId, xmlNodes){ if(viewId!="list")return; this.clearMenus(); this.setEnabled(false); if(xmlNodes == null) return; var reports = qx.xml.Element.selectNodes(xmlNodes[0],'report[@type="download"]'); if(reports == null || !reports.length)return; for(var i=0; i 0){ var xmlNodes = viewSelection.getNodes(); } for(var key in defs){ var definition = defs[key]; if(!definition.selectionChange) continue; var binded = qx.lang.Function.bind(definition.selectionChange, definition.command); binded(viewSelection.getViewId(), xmlNodes); } }, registerMenuBar : function(menuBar){ this.addListener("changedCommands", function(){ this.createMenuButtons(menuBar); }, this); this.createMenuButtons(menuBar); }, registerToolBar : function(toolBar){ this.addListener("changedCommands", function(){ this.createToolbarParts(toolBar); }, this); this.createToolbarParts(toolBar); }, createMenuButtons : function(menuBar){ menuBar.removeAll(); for(var key in this.menus){ var menu = new qx.ui.menu.Menu(); var button = new qx.ui.menubar.Button(key, null, menu); for(var i=0; i