BusyButton.js 2.3 KB

12345678
  1. /*
  2. Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.form.BusyButton"]){dojo._hasResource["dojox.form.BusyButton"]=true;dojo.provide("dojox.form.BusyButton");dojo.require("dijit.form.Button");dojo.requireLocalization("dijit","loading",null,"ROOT,ar,ca,cs,da,de,el,es,fi,fr,he,hu,it,ja,ko,nb,nl,pl,pt,pt-pt,ru,sk,sl,sv,th,tr,zh,zh-tw");dojo.declare("dojox.form._BusyButtonMixin",null,{isBusy:false,busyLabel:"",timeout:null,useIcon:true,postMixInProperties:function(){this.inherited(arguments);if(!this.busyLabel){this.busyLabel=dojo.i18n.getLocalization("dijit","loading",this.lang).loadingState;}},postCreate:function(){this.inherited(arguments);this._label=this.containerNode.innerHTML;this._initTimeout=this.timeout;if(this.isBusy){this.makeBusy();}},makeBusy:function(){this.isBusy=true;this.attr("disabled",true);this.setLabel(this.busyLabel,this.timeout);},cancel:function(){this.attr("disabled",false);this.isBusy=false;this.setLabel(this._label);if(this._timeout){clearTimeout(this._timeout);}this.timeout=this._initTimeout;},resetTimeout:function(_1){if(this._timeout){clearTimeout(this._timeout);}if(_1){this._timeout=setTimeout(dojo.hitch(this,function(){this.cancel();}),_1);}else{if(_1==undefined||_1===0){this.cancel();}}},setLabel:function(_2,_3){this.label=_2;while(this.containerNode.firstChild){this.containerNode.removeChild(this.containerNode.firstChild);}this.containerNode.innerHTML=this.label;if(this.showLabel==false&&!(dojo.attr(this.domNode,"title"))){this.titleNode.title=dojo.trim(this.containerNode.innerText||this.containerNode.textContent||"");}if(_3){this.resetTimeout(_3);}else{this.timeout=null;}if(this.useIcon&&this.isBusy){var _4=new Image();_4.src=this._blankGif;dojo.attr(_4,"id",this.id+"_icon");dojo.addClass(_4,"dojoxBusyButtonIcon");this.containerNode.appendChild(_4);}},_clicked:function(e){if(!this.isBusy){this.makeBusy();}}});dojo.declare("dojox.form.BusyButton",[dijit.form.Button,dojox.form._BusyButtonMixin],{});dojo.declare("dojox.form.BusyComboButton",[dijit.form.ComboButton,dojox.form._BusyButtonMixin],{});dojo.declare("dojox.form.BusyDropDownButton",[dijit.form.DropDownButton,dojox.form._BusyButtonMixin],{});}