Blame | Last modification | View Log | RSS feed
if(!dojo._hasResource["dojox.widget.Loader"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.dojo._hasResource["dojox.widget.Loader"] = true;dojo.provide("dojox.widget.Loader");dojo.experimental("dojox.widget.Loader");dojo.require("dijit._Widget");dojo.require("dijit._Templated");dojo.declare("dojox.widget.Loader", [dijit._Widget,dijit._Templated], {// summary: a configurable global xhr-listener to display// a loading message during running xhr's or to simply provide// base-level topic to subscribe to for custom loading messages// loadIcon: String// location to the icon used.loadIcon: dojo.moduleUrl("dojox.widget.Loader","icons/loading.gif"),// loadMessage: String// string to use for progress loadingloadMessage: 'Loading ...',// hasVisuals: Boolean// true to display a fixed loading message in TR cornder, false to unly provide// "Loader" topic to subscribe to for your own custom loading message.hasVisuals: true,// attachToPointer// true to use visual indicator where cursor isattachToPointer: true,// duration: Integer// time in ms to toggle in/out the visual load indicatorduration: 125,// _offset: Integer// distance in px from the mouse pointer to show attachToPointer avatar_offset: 16,// holder for mousemove connection_pointerConnect: null,_xhrStart: null,_xhrEnd: null,templateString: '<div dojoAttachPoint="loadNode" class="dojoxLoader">'+'<img src="${loadIcon}" class="dojoxLoaderIcon"> <span dojoAttachPoint="loadMessageNode" class="dojoxLoaderMessage"></span>'+'</div>',postCreate: function(){// summary: setup the loaderif(!this.hasVisuals){this.loadNode.style.display = "none"; // _destroy()?}else{if(this.attachToPointer){dojo.removeClass(this.loadNode,"dojoxLoader");dojo.addClass(this.loadNode,"dojoxLoaderPointer");}this._hide();}this._setMessage(this.loadMessage);// FIXME: create our connections. would be easier, and this might be redundant// if Deferred published somethingthis._xhrStart = dojo.connect(dojo,"_ioSetArgs",this,"_show");this._xhrEnd = dojo.connect(dojo.Deferred.prototype,"_fire",this,"_hide");},_setMessage: function(/* String */ message){// summary: set's the message in the loaderthis.loadMessageNode.innerHTML = message;},_putLoader: function(/* Event */ e){// summary: place the floating loading element based on mousemove connection positiondijit.placeOnScreen(this.loadNode,{ x: e.clientX+this._offset, y:e.clientY+this._offset }, ["TL","BR"]);},_show: function(){// summary: publish and show progress indicatordojo.publish("Loader",[{ message: 'started' }]);if(this.hasVisuals){if(this.attachToPointer){this._pointerConnect = dojo.connect(document,"onmousemove",this,"_putLoader");}dojo.fadeIn({ node: this.loadNode, duration:this.duration }).play();}},_hide: function(){// summary: publish "xhr ended" and hide progress indicatordojo.publish("Loader",[{ message: 'ended' }]);if(this.hasVisuals){if(this.attachPointer){dojo.disconnect(this._pointerConnect);}dojo.fadeOut({ node: this.loadNode, duration:this.duration }).play();}}});}