blob: 018b547fefc2a62058e24a210a17ea9a1179488a [file] [log] [blame]
/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
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],{});
}