summaryrefslogtreecommitdiffstats
path: root/qx08/source/class/tr/ui/ActionButton.js
diff options
context:
space:
mode:
Diffstat (limited to 'qx08/source/class/tr/ui/ActionButton.js')
-rw-r--r--qx08/source/class/tr/ui/ActionButton.js196
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());
+ }
+ }
+ }
+ }
+
+
+});
+
+