/** * A simple Hello World applet for documentation purpose. * The only associated command is the "Close" command. */ qx.Class.define("org.argeo.slc.ria.LauncherApplet", { extend : qx.ui.container.Composite, implement : [org.argeo.ria.components.IView], construct : function(){ this.base(arguments); this.setLayout(new qx.ui.layout.Dock()); }, properties : { /** * The viewPane inside which this applet is added. */ view : { init : null }, /** * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions} */ commands : { init : { "submitform" : { label : "Execute", icon : "resource/slc/media-playback-start.png", shortcut : "Control+e", enabled : true, menu : "Launcher", toolbar : "launcher", callback : function(e){ this.getView().getContent().submitForm(); }, command : null }, "reloadagents" : { label : "Reload Agents", icon : "resource/slc/view-refresh.png", shortcut : "Control+r", enabled : true, menu : "Launcher", toolbar : "launcher", callback : function(e){ var req = org.argeo.slc.ria.SlcApi.getListAgentsService("agents"); req.send(); }, command : null }, "close" : { label : "Close", icon : "resource/slc/window-close.png", shortcut : "Control+w", enabled : true, menu : "Launcher", toolbar : "launcher", callback : function(e){ // Call service to delete this.getView().empty(); }, command : null } } } }, members : { /** * Called at applet creation. Just registers viewPane. * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane. */ init : function(viewPane){ this.setView(viewPane); this._createLayout(); this._createForm(); }, /** * Load a given row : the data passed must be a simple data array. * @param data {Element} The text xml description. */ load : function(){ this.getView().setViewTitle("Slc Execution Launcher"); org.argeo.ria.event.CommandsManager.getInstance().getCommandById("reloadagents").execute(); }, addScroll : function(){ return false; }, _createLayout : function(){ this.formPane = new qx.ui.container.Composite(new qx.ui.layout.VBox(5)); this.scroll = new qx.ui.container.Scroll(this.formPane); this.scroll.setWidth(290); this.formPane.setPadding(10); this.add(this.scroll, {edge:'west'}); this.logModel = new qx.ui.table.model.Simple(); this.logModel.setColumns(["Date", "Agent Uuid", "Status", "Type"]); this.logPane = new qx.ui.table.Table(this.logModel, { tableColumnModel: function(obj){ return new qx.ui.table.columnmodel.Resize(obj) } }); this._initLogger(); this.add(this.logPane, {edge:'center'}); }, _initLogger : function(){ this.logPane.set({ statusBarVisible: false, showCellFocusIndicator:false }); var columnModel = this.logPane.getTableColumnModel(); columnModel.getBehavior().setWidth(2, "12%"); columnModel.getBehavior().setWidth(3, "12%"); }, _createForm : function(){ this.fields = {}; this.freeFields = []; var execButtonPane = new qx.ui.container.Composite(new qx.ui.layout.Dock()); var execButton = new qx.ui.form.Button( "Execute", "resource/slc/media-playback-start-32.png" ) execButton.addListener("click", function(){ this.submitForm(); }, this); execButtonPane.setPadding(10, 80); execButtonPane.add(execButton, {edge:"center"}); this.formPane.add(execButtonPane); this.agentSelector = new qx.ui.form.SelectBox(); var serviceManager = org.argeo.ria.remote.RequestManager.getInstance(); serviceManager.addListener("reload", function(reloadEvent){ if(reloadEvent.getDataType()!= "agents") return ; this._xmlListToSelector(reloadEvent.getContent(), this.agentSelector); }, this); this._addFormHeader("Choose Agent Uuid"); this._addFormEntry(new qx.ui.basic.Label("Agent Uuid"), this.agentSelector); this._addFormHeader("Set SlcExecution Parameters"); this._addFormInputText("status", "Status", "STARTED"); this._addFormInputText("type", "Type", "slcAnt"); this._addFormInputText("host", "Host", "localhost"); this._addFormInputText("user", "User", "user"); var moreButton = new qx.ui.basic.Image("resource/slc/list-add.png"); moreButton.setToolTip(new qx.ui.tooltip.ToolTip("Add a parameter")); moreButton.setCursor("pointer"); moreButton.addListener("click", function(){ this._addFormInputText(); }, this); this._addFormHeader("Add optionnal parameters", moreButton); this._addFormInputText(); this._addFormInputText(); }, _addFormInputText : function(fieldName, fieldLabel, defaultValue){ var labelElement; var fieldElement = new qx.ui.form.TextField(); if(defaultValue){ fieldElement.setValue(defaultValue); } if(fieldName && fieldLabel){ labelElement = new qx.ui.basic.Label(fieldLabel); this.fields[fieldName] = fieldElement; }else{ labelElement = new qx.ui.form.TextField(); this.freeFields.push({ labelEl:labelElement, valueEl:fieldElement }); } this._addFormEntry(labelElement, fieldElement); }, _addFormHeader : function(content, additionnalButton){ var header = new qx.ui.basic.Label(''+content+''); header.setRich(true); if(!additionnalButton){ header.setPaddingTop(10); this.formPane.add(header); }else{ var pane = new qx.ui.container.Composite(new qx.ui.layout.Dock()); pane.setPaddingTop(10); pane.setPaddingRight(10); pane.add(header, {edge:'center'}); pane.add(additionnalButton, {edge:'east'}); this.formPane.add(pane); } }, _addFormEntry : function(labelElement, fieldElement){ var entryPane = new qx.ui.container.Composite(new qx.ui.layout.HBox(5)); labelElement.setWidth(100); labelElement.setTextAlign("right"); entryPane.add(labelElement); entryPane.add(new qx.ui.basic.Label(':')); fieldElement.setWidth(150); entryPane.add(fieldElement); this.formPane.add(entryPane); }, _xmlListToSelector : function(xmlDoc, selector){ selector.removeAll(); var NSMap = {slc:"http://argeo.org/projects/slc/schemas"}; var nodes = org.argeo.ria.util.Element.selectNodes(xmlDoc, "//slc:slc-agent-descriptor", NSMap); for(var i=0;i