]>
git.argeo.org Git - gpl/argeo-slc.git/blob - org.argeo.slc.webapp/src/main/webapp/argeo-ria-lib/slc/class/org/argeo/slc/ria/LauncherApplet.js
2 * A simple Hello World applet for documentation purpose.
3 * The only associated command is the "Close" command.
5 qx
.Class
.define("org.argeo.slc.ria.LauncherApplet",
7 extend
: qx
.ui
.container
.Composite
,
8 implement
: [org
.argeo
.ria
.components
.IView
],
10 construct : function(){
12 this.setLayout(new qx
.ui
.layout
.Dock());
18 * The viewPane inside which this applet is added.
24 * Commands definition, see {@link org.argeo.ria.event.CommandsManager#definitions}
30 icon
: "resource/slc/media-playback-start.png",
31 shortcut
: "Control+e",
35 callback : function(e
){
36 this.getView().getContent().submitForm();
41 label
: "Reload Agents",
42 icon
: "resource/slc/view-refresh.png",
43 shortcut
: "Control+r",
47 callback : function(e
){
48 var req
= org
.argeo
.slc
.ria
.SlcApi
.getListAgentsService("agents");
60 * Called at applet creation. Just registers viewPane.
61 * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.
63 init : function(viewPane
){
64 this.setView(viewPane
);
67 this._amqClient
= new org
.argeo
.ria
.remote
.AmqClient();
68 this._amqClient
.startPolling();
69 qx
.io
.remote
.RequestQueue
.getInstance().setDefaultTimeout(30000);
73 * Load a given row : the data passed must be a simple data array.
74 * @param data {Element} The text xml description.
77 this.getView().setViewTitle("Slc Execution Launcher");
78 org
.argeo
.ria
.event
.CommandsManager
.getInstance().getCommandById("reloadagents").execute();
81 addScroll : function(){
85 _createLayout : function(){
86 this.formPane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.VBox(5));
87 this.scroll
= new qx
.ui
.container
.Scroll(this.formPane
);
88 this.scroll
.setWidth(290);
89 this.formPane
.setPadding(10);
90 this.add(this.scroll
, {edge
:'west'});
92 this.logModel
= new qx
.ui
.table
.model
.Simple();
93 this.logModel
.setColumns(["Date", "Agent Uuid", "Status", "Type"]);
94 this.logPane
= new qx
.ui
.table
.Table(this.logModel
, {
95 tableColumnModel: function(obj
){
96 return new qx
.ui
.table
.columnmodel
.Resize(obj
)
100 this.add(this.logPane
, {edge
:'center'});
103 _initLogger : function(){
105 statusBarVisible
: false,
106 showCellFocusIndicator
:false
108 var columnModel
= this.logPane
.getTableColumnModel();
109 columnModel
.getBehavior().setWidth(2, "12%");
110 columnModel
.getBehavior().setWidth(3, "12%");
113 _createForm : function(){
115 this.freeFields
= [];
117 var execButtonPane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.Dock());
118 var execButton
= new qx
.ui
.form
.Button(
120 "resource/slc/media-playback-start-32.png"
122 execButton
.addListener("click", function(){
125 execButtonPane
.setPadding(10, 80);
126 execButtonPane
.add(execButton
, {edge
:"center"});
127 this.formPane
.add(execButtonPane
);
129 this.agentSelector
= new qx
.ui
.form
.SelectBox();
130 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
131 serviceManager
.addListener("reload", function(reloadEvent
){
132 if(reloadEvent
.getDataType()!= "agents") return ;
133 this._xmlListToSelector(reloadEvent
.getContent(), this.agentSelector
);
136 this._addFormHeader("Choose Agent Uuid");
137 this._addFormEntry(new qx
.ui
.basic
.Label("Agent Uuid"), this.agentSelector
);
138 this._addFormHeader("Set SlcExecution Parameters");
139 this._addFormInputText("status", "Status", "STARTED");
140 this._addFormInputText("type", "Type", "slcAnt");
141 this._addFormInputText("host", "Host", "localhost");
142 this._addFormInputText("user", "User", "user");
144 var moreButton
= new qx
.ui
.basic
.Image("resource/slc/list-add.png");
145 moreButton
.setToolTip(new qx
.ui
.tooltip
.ToolTip("Add a parameter"));
146 moreButton
.setCursor("pointer");
147 moreButton
.addListener("click", function(){
148 this._addFormInputText();
150 this._addFormHeader("Add optionnal parameters", moreButton
);
151 this._addFormInputText();
152 this._addFormInputText();
155 _addFormInputText : function(fieldName
, fieldLabel
, defaultValue
){
157 var fieldElement
= new qx
.ui
.form
.TextField();
159 fieldElement
.setValue(defaultValue
);
161 if(fieldName
&& fieldLabel
){
162 labelElement
= new qx
.ui
.basic
.Label(fieldLabel
);
163 this.fields
[fieldName
] = fieldElement
;
165 labelElement
= new qx
.ui
.form
.TextField();
166 this.freeFields
.push({
167 labelEl
:labelElement
,
171 this._addFormEntry(labelElement
, fieldElement
);
174 _addFormHeader : function(content
, additionnalButton
){
175 var header
= new qx
.ui
.basic
.Label('<b>'+content
+'</b>');
176 header
.setRich(true);
177 if(!additionnalButton
){
178 header
.setPaddingTop(10);
179 this.formPane
.add(header
);
181 var pane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.Dock());
182 pane
.setPaddingTop(10);
183 pane
.setPaddingRight(10);
184 pane
.add(header
, {edge
:'center'});
185 pane
.add(additionnalButton
, {edge
:'east'});
186 this.formPane
.add(pane
);
190 _addFormEntry : function(labelElement
, fieldElement
){
191 var entryPane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.HBox(5));
192 labelElement
.setWidth(100);
193 labelElement
.setTextAlign("right");
194 entryPane
.add(labelElement
);
195 entryPane
.add(new qx
.ui
.basic
.Label(':'));
196 fieldElement
.setWidth(150);
197 entryPane
.add(fieldElement
);
198 this.formPane
.add(entryPane
);
201 _xmlListToSelector : function(xmlDoc
, selector
){
202 selector
.removeAll();
203 var NSMap
= {slc
:"http://argeo.org/projects/slc/schemas"};
204 var nodes
= org
.argeo
.ria
.util
.Element
.selectNodes(xmlDoc
, "//slc:slc-agent-descriptor", NSMap
);
205 for(var i
=0;i
<nodes
.length
;i
++){
206 var uuid
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(nodes
[i
], "@uuid", NSMap
);
207 var host
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(nodes
[i
], "slc:host", NSMap
);
208 var listItem
= new qx
.ui
.form
.ListItem(uuid
+' ('+host
+')', null, uuid
);
209 selector
.add(listItem
);
210 this._addAmqListenerDeferred(uuid
, i
);
214 _addAmqListenerDeferred: function(uuid
, index
){
215 qx
.event
.Timer
.once(function(){
216 this._amqClient
.addListener("launcherId", "topic://agent."+uuid
+".newExecution", function(message
){
217 this.info("Received message!");
218 var slcExec
= new org
.argeo
.slc
.ria
.SlcExecutionMessage(message
.getAttribute("uuid"));
219 slcExec
.fromXml(message
);
220 this.logModel
.addRows([
221 [new Date().toString(), slcExec
.getUuid(), slcExec
.getStatus(), slcExec
.getType()]
227 submitForm : function(){
228 var currentUuid
= this.agentSelector
.getValue();
229 if(!currentUuid
) return;
230 var slcExec
= new org
.argeo
.slc
.ria
.SlcExecutionMessage(currentUuid
);
231 slcExec
.setStatus(this.fields
.status
.getValue());
232 slcExec
.setType(this.fields
.type
.getValue());
233 slcExec
.setHost(this.fields
.host
.getValue());
234 slcExec
.setUser(this.fields
.user
.getValue());
235 for(var i
=0;i
<this.freeFields
.length
;i
++){
236 var fF
= this.freeFields
[i
];
237 if(fF
.labelEl
.getValue() != "" && fF
.valueEl
.getValue() != ""){
238 slcExec
.addAttribute(fF
.labelEl
.getValue(), fF
.valueEl
.getValue());
241 var destination
= "topic://agent."+currentUuid
+".newExecution";
242 this._amqClient
.sendMessage(destination
, slcExec
.toXml());