diff options
author | Tobi Oetiker <tobi@oetiker.ch> | 2008-11-04 11:14:06 +0100 |
---|---|---|
committer | Tobi Oetiker <tobi@oetiker.ch> | 2008-11-04 11:14:06 +0100 |
commit | 996d9e92e597bc462d874b335865ff7844e2d332 (patch) | |
tree | 136211ddffb3eebacf540783a82bd7e31bc34f9b /qx08/source/class/tr/ui/ActionButton.js | |
parent | 2bb54a7dd3145c431b0e63cfd83df37f9a4b40d4 (diff) | |
download | smokeping-996d9e92e597bc462d874b335865ff7844e2d332.tar.gz smokeping-996d9e92e597bc462d874b335865ff7844e2d332.tar.xz |
added 0.8 port
Diffstat (limited to 'qx08/source/class/tr/ui/ActionButton.js')
-rw-r--r-- | qx08/source/class/tr/ui/ActionButton.js | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/qx08/source/class/tr/ui/ActionButton.js b/qx08/source/class/tr/ui/ActionButton.js new file mode 100644 index 0000000..5d6eb5d --- /dev/null +++ b/qx08/source/class/tr/ui/ActionButton.js @@ -0,0 +1,196 @@ +/* ************************************************************************ +#module(Tr) +************************************************************************ */ + +/** + * a widget showing the Tr graph overview + */ + +qx.Class.define('Tr.ui.ActionButton', +{ + extend: qx.ui.Containter. + + /* + ***************************************************************************** + CONSTRUCTOR + ***************************************************************************** + */ + + construct: function () { + this.base(arguments); + + this.set({ + height: 'auto', + width: 'auto', + horizontalChildrenAlign: 'left' + }); + var hbox = new qx.ui.layout.HorizontalBoxLayout; + hbox.set({ + height: 'auto', + width: 'auto', + verticalChildrenAlign: 'middle' + }); + var lab1 = new qx.ui.basic.Label(this.tr("Host")); + lab1.set({ + paddingRight: 6 + }); + hbox.add(lab1); + var host = new qx.ui.form.TextField(); + host.set({ + width: 200, + height: 'auto', + border: 'dark-shadow', + padding: 1 + }); + hbox.add(host); + this.__host = host; + var lab2 = new qx.ui.basic.Label(this.tr("Delay")); + lab2.set({ + paddingRight: 6, + paddingLeft: 12 + }); + hbox.add(lab2); + var delay = new qx.ui.form.Spinner(1,2,60); + delay.set({ + border: 'dark-shadow', + width: 45 + }); + hbox.add(delay); + this.__delay = delay; + + var lab3 = new qx.ui.basic.Label(this.tr("Rounds")); + lab3.set({ + paddingRight: 6, + paddingLeft: 12 + }); + hbox.add(lab3); + var rounds = new qx.ui.form.Spinner(1,20,200); + rounds.set({ + border: 'dark-shadow', + width: 45 + }); + hbox.add(rounds); + this.__rounds = rounds; + + var button = new qx.ui.form.Button(''); + this.__button = button; + button.set({ + marginLeft: 10, + width: 60, + height: 'auto', + border: 'dark-shadow', + padding: 2 + }); + hbox.add(button); + this.add(hbox); + var info = new qx.ui.basic.Atom(); + info.set({ + marginTop: 3, + padding: 3, + textColor: 'red', + width: '100%', + height: 'auto', + backgroundColor: '#f0f0f0', + visibility: false + }); + qx.event.message.Bus.subscribe('tr.info',this.__set_info,this); + this.add(info); + this.__info = info; + + qx.event.message.Bus.subscribe('tr.status',this.__set_status,this); + qx.event.message.Bus.dispatch('tr.status','stopped'); + + var start_trace = function(event) { + qx.event.message.Bus.dispatch('tr.cmd',{ + action: button.getUserData('action'), + host: host.getValue(), + delay: delay.getValue(), + rounds: rounds.getValue() + }); + }; + +// var self=this; +// host.addEventListener('keyup',function(e){if(e.getKeyIdentifier() == 'Enter'){start_trace()}}); + host.addEventListener('execute',start_trace); + button.addEventListener('execute', start_trace ); + + var history = qx.client.History.getInstance(); + var history_action = function(event){ + var targ = event.getData(); + host.setValue(targ); + history.addToHistory(targ,'SmokeTrace to '+targ); + start_trace(); + } + history.addEventListener('request', history_action); + + // if we got called with a host on the commandline + var initial_host = qx.client.History.getInstance().getState(); + if (initial_host){ + host.setValue(initial_host); + history.addToHistory(initial_host,'SmokeTrace to '+initial_host); + // dispatch this task once all the initializations are done + qx.client.Timer.once(start_trace,this,0); + } + }, + + members: { + __set_info: function(e){ + this.__info.set({ + label: e.getData(), + visibility: true + }); + }, + __set_status: function(m){ + var host = this.__host; + var rounds = this.__rounds; + var delay = this.__delay; + with(this.__button){ + // this.debug(m.getData()); + switch(m.getData()){ + case 'starting': + if (getUserData('action') == 'go') { + setLabel(this.tr("Starting")); + this.__info.setVisibility(false); + border: 'dark-shadow' + setEnabled(false); + host.setEnabled(false); + rounds.setEnabled(false); + delay.setEnabled(false); + } + break; + case 'stopping': + if (getUserData('action') == 'stop') { + setLabel(this.tr("Stopping")); + setEnabled(false); + host.setEnabled(false); + rounds.setEnabled(false); + delay.setEnabled(false); + } + break; + case 'stopped': + setUserData('action','go'); + setLabel(this.tr("Go")); + setEnabled(true); + host.setEnabled(true); + rounds.setEnabled(true); + delay.setEnabled(true); + break; + case 'started': + setUserData('action','stop'); + setLabel(this.tr("Stop")); + setEnabled(true); + host.setEnabled(false); + rounds.setEnabled(false); + delay.setEnabled(false); + break; + default: + alert('Unknown Status Message: '+m.getData()); + } + } + } + } + + +}); + + |