From 6ac408eef8af8e6feb4309708cf071bfe357f98f Mon Sep 17 00:00:00 2001 From: Derrell Lipman Date: Sun, 11 Feb 2007 22:59:02 +0000 Subject: r21287: Improve user feedback. Cursor now changes to stopwatch during RPC and module loading. (This used to be commit a6fc47eff3aa87b1dfe4eaf25719b51b24c88425) --- .../source/class/qx/util/fsm/FiniteStateMachine.js | 2 +- .../swat/source/class/swat/main/AbstractModule.js | 22 +++++++++++++++++++++- .../source/class/swat/main/AbstractModuleFsm.js | 19 +++++++++++++++++++ 3 files changed, 41 insertions(+), 2 deletions(-) (limited to 'webapps') diff --git a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js index d91ab45858d..0b42bc24bed 100644 --- a/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js +++ b/webapps/qooxdoo-0.6.5-sdk/frontend/framework/source/class/qx/util/fsm/FiniteStateMachine.js @@ -178,7 +178,7 @@ qx.Proto.addState = function(state) // Ensure that the state name doesn't already exist if (stateName in this._states) { - throw new Error("State " + state + " already exists"); + throw new Error("State " + stateName + " already exists"); } // Add the new state object to the finite state machine diff --git a/webapps/swat/source/class/swat/main/AbstractModule.js b/webapps/swat/source/class/swat/main/AbstractModule.js index 01aae703c37..bf61a86fd8c 100644 --- a/webapps/swat/source/class/swat/main/AbstractModule.js +++ b/webapps/swat/source/class/swat/main/AbstractModule.js @@ -75,6 +75,7 @@ qx.Proto.buildInitialFsm = function(module) * Load module's finite state machine and graphical user interface */ var thisModule = this; + var newModule = module; var trans = new qx.util.fsm.Transition( "Transition_Idle_to_Idle_Load_Gui", { @@ -87,7 +88,26 @@ qx.Proto.buildInitialFsm = function(module) // Call the module's initialAppear function to build FSM and GUI. // That function should *replace* this state, State_Idle, to which // we'll transition. - thisModule.initialAppear(module); + var canvas = fsm.getObject("swat.main.canvas"); + canvas.getTopLevelWidget().setGlobalCursor("progress"); + if (! newModule.bLoaded) + { + window.setTimeout( + function() + { + // Call the module's initial appear handler + thisModule.initialAppear(newModule); + + // Regenerate the appear event, since the original one got + // lost by doing this code inside of the timeout. + canvas.createDispatchEvent("appear"); + + // Reset the cursor to the default + canvas.getTopLevelWidget().setGlobalCursor(null); + + }, 0); + newModule.bLoaded = true; + } } }); state.addTransition(trans); diff --git a/webapps/swat/source/class/swat/main/AbstractModuleFsm.js b/webapps/swat/source/class/swat/main/AbstractModuleFsm.js index 273c9ad8a33..3cf41876769 100644 --- a/webapps/swat/source/class/swat/main/AbstractModuleFsm.js +++ b/webapps/swat/source/class/swat/main/AbstractModuleFsm.js @@ -113,6 +113,10 @@ qx.Proto.addAwaitRpcResultState = function(module, blockedEvents) { var bAuthCompleted = false; + // Change the cursor to indicate RPC in progress + var canvas = fsm.getObject("swat.main.canvas"); + canvas.getTopLevelWidget().setGlobalCursor("progress"); + // See if we just completed an authentication if (fsm.getPreviousState() == "State_Authenticate" && event.getType() == "complete") @@ -130,6 +134,21 @@ qx.Proto.addAwaitRpcResultState = function(module, blockedEvents) } }, + "onexit" : + function(fsm, event) + { + // If we're returning to the calling state (not going to the + // Authenticate state)... + var nextState = fsm.getNextState(); + if (nextState != "State_Authenticate" && + nextState != "State_AwaitRpcResult") + { + // ... then set the cursor back to normal + var canvas = fsm.getObject("swat.main.canvas"); + canvas.getTopLevelWidget().setGlobalCursor(null); + } + }, + "events" : { "execute" : -- cgit