diff --git a/src/mesh/services/Request.as b/src/mesh/services/Request.as index 492de04..5ca5c35 100644 --- a/src/mesh/services/Request.as +++ b/src/mesh/services/Request.as @@ -4,6 +4,8 @@ package mesh.services import mesh.core.proxy.DataProxy; + import mx.managers.CursorManager; + public dynamic class Request extends DataProxy { private var _block:Function; @@ -42,19 +44,31 @@ package mesh.services { if (!_isExecuting) { _isExecuting = true; + + showBusyCursor(); if (handler != null) { addHandler(handler); } + executeBlock(_block); } return this; } + private var _useBusyCursor:Boolean; + public function useBusyCursor():Request + { + _useBusyCursor = true; + return this; + } + protected function fault(fault:Object):void { + hideBusyCursor(); for each (var handler:Object in _handlers) { handler.fault(fault); } + _isExecuting = false; } protected function result(data:Object):void @@ -64,6 +78,7 @@ package mesh.services protected function success():void { + hideBusyCursor(); for each (var handler:Object in _handlers) { handler.success(); } @@ -89,6 +104,20 @@ package mesh.services { block.apply(null, blockArgs()); } + + private function showBusyCursor():void + { + if (_useBusyCursor) { + CursorManager.setBusyCursor(); + } + } + + private function hideBusyCursor():void + { + if (_useBusyCursor) { + CursorManager.removeBusyCursor(); + } + } } }