| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 | // wrapped by build appdefine("dojox/mobile/app/AlertDialog", ["dijit","dojo","dojox","dojo/require!dijit/_WidgetBase"], function(dijit,dojo,dojox){dojo.provide("dojox.mobile.app.AlertDialog");dojo.experimental("dojox.mobile.app.AlertDialog");dojo.require("dijit._WidgetBase");dojo.declare("dojox.mobile.app.AlertDialog", dijit._WidgetBase, {	// title: String	//		The title of the AlertDialog	title: "",	// text: String	//		The text message displayed in the AlertDialog	text: "",	// controller: Object	//		The SceneController for the currently active scene	controller: null,	// buttons: Array	buttons: null,	defaultButtonLabel: "OK",	// onChoose: Function	//		The callback function that is invoked when a button is tapped.	//		If the dialog is cancelled, no parameter is passed to this function.	onChoose: null,	constructor: function(){		this.onClick = dojo.hitch(this, this.onClick);		this._handleSelect = dojo.hitch(this, this._handleSelect);	},	buildRendering: function(){		this.domNode = dojo.create("div",{			"class": "alertDialog"		});		// Create the outer dialog body		var dlgBody = dojo.create("div", {"class": "alertDialogBody"}, this.domNode);		// Create the title		dojo.create("div", {"class": "alertTitle", innerHTML: this.title || ""}, dlgBody);		// Create the text		dojo.create("div", {"class": "alertText", innerHTML: this.text || ""}, dlgBody);		// Create the node that encapsulates all the buttons		var btnContainer = dojo.create("div", {"class": "alertBtns"}, dlgBody);		// If no buttons have been defined, default to a single button saying OK		if(!this.buttons || this.buttons.length == 0){			this.buttons = [{				label: this.defaultButtonLabel,				value: "ok",				"class": "affirmative"			}];		}		var _this = this;		// Create each of the buttons		dojo.forEach(this.buttons, function(btnInfo){			var btn = new dojox.mobile.Button({				btnClass: btnInfo["class"] || "",				label: btnInfo.label			});			btn._dialogValue = btnInfo.value;			dojo.place(btn.domNode, btnContainer);			_this.connect(btn, "onClick", _this._handleSelect);		});		var viewportSize = this.controller.getWindowSize();		// Create the mask that blocks out the rest of the screen		this.mask = dojo.create("div", {"class": "dialogUnderlayWrapper",			innerHTML: "<div class=\"dialogUnderlay\"></div>",			style: {				width: viewportSize.w + "px",				height: viewportSize.h + "px"			}		}, this.controller.assistant.domNode);		this.connect(this.mask, "onclick", function(){			_this.onChoose && _this.onChoose();			_this.hide();		});	},	postCreate: function(){		this.subscribe("/dojox/mobile/app/goback", this._handleSelect);	},	_handleSelect: function(event){		// summary:		//		Handle the selection of a value		var node;		console.log("handleSelect");		if(event && event.target){			node = event.target;			// Find the widget that was tapped.			while(!dijit.byNode(node)){				node - node.parentNode;			}		}		// If an onChoose function was provided, tell it what button		// value was chosen		if(this.onChoose){			this.onChoose(node ? dijit.byNode(node)._dialogValue: undefined);		}		// Hide the dialog		this.hide();	},	show: function(){		// summary:		//		Show the dialog		this._doTransition(1);	},	hide: function(){		// summary:		//		Hide the dialog		this._doTransition(-1);	},	_doTransition: function(dir){		// summary:		//		Either shows or hides the dialog.		// dir:		//		An integer.  If positive, the dialog is shown. If negative,		//		the dialog is hidden.		// TODO: replace this with CSS transitions		var anim;		var h = dojo.marginBox(this.domNode.firstChild).h;		var bodyHeight = this.controller.getWindowSize().h;		console.log("dialog height = " + h, " body height = " + bodyHeight);		var high = bodyHeight - h;		var low = bodyHeight;		var anim1 = dojo.fx.slideTo({			node: this.domNode,			duration: 400,			top: {start: dir < 0 ? high : low, end: dir < 0 ? low: high}		});		var anim2 = dojo[dir < 0 ? "fadeOut" : "fadeIn"]({			node: this.mask,			duration: 400		});		var anim = dojo.fx.combine([anim1, anim2]);		var _this = this;		dojo.connect(anim, "onEnd", this, function(){			if(dir < 0){				_this.domNode.style.display = "none";				dojo.destroy(_this.domNode);				dojo.destroy(_this.mask);			}		});		anim.play();	},	destroy: function(){		this.inherited(arguments);		dojo.destroy(this.mask);	},	onClick: function(){	}});});
 |