]>
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
162453861e6d23dc6c3d20f685ff65d9f2d5aff6
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");
58 event
: "changeRegisteredTopics"
65 * Called at applet creation. Just registers viewPane.
66 * @param viewPane {org.argeo.ria.components.ViewPane} The viewPane.
68 init : function(viewPane
){
69 this.setView(viewPane
);
72 this._amqClient
= org
.argeo
.ria
.remote
.JmsClient
.getInstance();
73 this._amqClient
.startPolling();
80 this.getView().setViewTitle("Execution Launcher");
81 this.addListener("changeRegisteredTopics", function(event
){
82 this._refreshTopicsSubscriptions(event
);
83 this._feedSelector(event
);
85 var reloadHandler = function(message
){
86 org
.argeo
.ria
.event
.CommandsManager
.getInstance().getCommandById("reloadagents").execute();
88 this._amqClient
.addListener("agentregister", "topic://agent.register", reloadHandler
, this);
89 //qx.event.Timer.once(function(){
90 this._amqClient
.addListener("agentunregister", "topic://agent.unregister", reloadHandler
, this);
95 addScroll : function(){
100 this._amqClient
.removeListener("agentregister", "topic://agent.register");
101 this._amqClient
.removeListener("agentunregister", "topic://agent.unregister");
103 this.setRegisteredTopics({});
104 this._amqClient
.stopPolling();
107 _createLayout : function(){
108 this.formPane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.VBox(5));
109 this.scroll
= new qx
.ui
.container
.Scroll(this.formPane
);
110 this.scroll
.setWidth(290);
111 this.formPane
.setPadding(10);
112 this.add(this.scroll
, {edge
:'west'});
114 this.logModel
= new qx
.ui
.table
.model
.Simple();
115 this.logModel
.setColumns(["Date", "Agent Uuid", "Status"]);
116 this.logPane
= new qx
.ui
.table
.Table(this.logModel
, {
117 tableColumnModel: function(obj
){
118 return new qx
.ui
.table
.columnmodel
.Resize(obj
)
122 this.add(this.logPane
, {edge
:'center'});
125 _initLogger : function(){
127 statusBarVisible
: false,
128 showCellFocusIndicator
:false
130 var columnModel
= this.logPane
.getTableColumnModel();
131 columnModel
.getBehavior().setWidth(2, "12%");
134 _createForm : function(){
136 this.freeFields
= [];
138 var execButtonPane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.Dock());
139 var execButton
= new qx
.ui
.form
.Button(
141 "resource/slc/media-playback-start-32.png"
143 execButton
.addListener("click", function(){
146 execButtonPane
.setPadding(10, 80);
147 execButtonPane
.add(execButton
, {edge
:"center"});
148 this.formPane
.add(execButtonPane
);
150 this.agentSelector
= new qx
.ui
.form
.SelectBox();
151 var serviceManager
= org
.argeo
.ria
.remote
.RequestManager
.getInstance();
152 serviceManager
.addListener("reload", function(reloadEvent
){
153 if(reloadEvent
.getDataType()!= "agents") return ;
154 var xmlDoc
= reloadEvent
.getContent();
155 var nodes
= org
.argeo
.ria
.util
.Element
.selectNodes(xmlDoc
, "//slc:slc-agent-descriptor");
157 for(var i
=0;i
<nodes
.length
;i
++){
158 var uuid
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(nodes
[i
], "@uuid");
159 var host
= org
.argeo
.ria
.util
.Element
.getSingleNodeText(nodes
[i
], "slc:host");
160 newTopics
[uuid
] = host
+" ("+uuid
+")";
162 this.setRegisteredTopics(newTopics
);
165 this._addFormHeader("Choose Agent Uuid");
166 this._addFormEntry(new qx
.ui
.basic
.Label("Agent Uuid"), this.agentSelector
);
167 this._addFormHeader("Set Execution Parameters");
168 this._addFormInputText("status", "Status", "STARTED");
169 this._addFormInputText("host", "Host", "localhost");
170 this._addFormInputText("user", "User", "user");
172 var moreButton
= new qx
.ui
.basic
.Image("resource/slc/list-add.png");
173 moreButton
.setToolTip(new qx
.ui
.tooltip
.ToolTip("Add a parameter"));
174 moreButton
.setCursor("pointer");
175 moreButton
.addListener("click", function(){
176 this._addFormInputText();
178 this._addFormHeader("Add optionnal parameters", moreButton
);
179 this._addFormInputText();
180 this._addFormInputText();
183 _addFormInputText : function(fieldName
, fieldLabel
, defaultValue
){
185 var fieldElement
= new qx
.ui
.form
.TextField();
187 fieldElement
.setValue(defaultValue
);
189 if(fieldName
&& fieldLabel
){
190 labelElement
= new qx
.ui
.basic
.Label(fieldLabel
);
191 this.fields
[fieldName
] = fieldElement
;
193 labelElement
= new qx
.ui
.form
.TextField();
194 this.freeFields
.push({
195 labelEl
:labelElement
,
199 this._addFormEntry(labelElement
, fieldElement
);
202 _addFormHeader : function(content
, additionnalButton
){
203 var header
= new qx
.ui
.basic
.Label('<b>'+content
+'</b>');
204 header
.setRich(true);
205 if(!additionnalButton
){
206 header
.setPaddingTop(10);
207 this.formPane
.add(header
);
209 var pane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.Dock());
210 pane
.setPaddingTop(10);
211 pane
.setPaddingRight(10);
212 pane
.add(header
, {edge
:'center'});
213 pane
.add(additionnalButton
, {edge
:'east'});
214 this.formPane
.add(pane
);
218 _addFormEntry : function(labelElement
, fieldElement
){
219 var entryPane
= new qx
.ui
.container
.Composite(new qx
.ui
.layout
.HBox(5));
220 labelElement
.setWidth(100);
221 labelElement
.setTextAlign("right");
222 entryPane
.add(labelElement
);
223 entryPane
.add(new qx
.ui
.basic
.Label(':'));
224 fieldElement
.setWidth(150);
225 entryPane
.add(fieldElement
);
226 this.formPane
.add(entryPane
);
229 _refreshTopicsSubscriptions : function(changeTopicsEvent
){
230 var oldTopics
= changeTopicsEvent
.getOldData() || {};
231 var newTopics
= changeTopicsEvent
.getData();
234 for(var key
in oldTopics
){
235 if(!newTopics
[key
]) {
236 this._removeAmqListener(key
);
239 for(var key
in newTopics
){
240 if(!oldTopics
[key
]) {
241 this._addAmqListener(key
);
246 _feedSelector : function(changeTopicsEvent
){
247 var topics
= changeTopicsEvent
.getData();
248 this.agentSelector
.removeAll();
249 var emptyItem
= new qx
.ui
.form
.ListItem("", null, "");
250 this.agentSelector
.add(emptyItem
);
251 this.agentSelector
.setSelected(emptyItem
);
252 for(var key
in topics
){
253 var listItem
= new qx
.ui
.form
.ListItem(topics
[key
], null, key
);
254 this.agentSelector
.add(listItem
);
258 _addAmqListener: function(uuid
){
259 this._amqClient
.addListener("slcExec", "topic://agent."+uuid
+".newExecution", function(response
){
260 var message
= org
.argeo
.ria
.util
.Element
.selectSingleNode(response
, "slc:slc-execution");
261 var slcExec
= new org
.argeo
.slc
.ria
.SlcExecutionMessage(message
.getAttribute("uuid"));
262 slcExec
.fromXml(message
);
263 this.logModel
.addRows([
264 [new Date().toString(), slcExec
.getHost()+' ('+slcExec
.getUuid()+')', slcExec
.getStatus()]
269 _removeAmqListener : function(uuid
){
270 this._amqClient
.removeListener("slcExec", "topic://agent."+uuid
+".newExecution");
273 submitForm : function(){
274 var currentUuid
= this.agentSelector
.getValue();
275 if(!currentUuid
) return;
276 var slcExec
= new org
.argeo
.slc
.ria
.SlcExecutionMessage(currentUuid
);
277 slcExec
.setStatus(this.fields
.status
.getValue());
278 slcExec
.setHost(this.fields
.host
.getValue());
279 slcExec
.setUser(this.fields
.user
.getValue());
280 for(var i
=0;i
<this.freeFields
.length
;i
++){
281 var fF
= this.freeFields
[i
];
282 if(fF
.labelEl
.getValue() != "" && fF
.valueEl
.getValue() != ""){
283 slcExec
.addAttribute(fF
.labelEl
.getValue(), fF
.valueEl
.getValue());
286 var destination
= "topic://agent."+currentUuid
+".newExecution";
287 this._amqClient
.sendMessage(destination
, slcExec
.toXml());