| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248 | define("dojox/mobile/_ItemBase", [	"dojo/_base/kernel",	"dojo/_base/config",	"dojo/_base/declare",	"dijit/registry",	// registry.getEnclosingWidget	"dijit/_Contained",	"dijit/_Container",	"dijit/_WidgetBase",	"./TransitionEvent",	"./View"], function(kernel, config, declare, registry, Contained, Container, WidgetBase, TransitionEvent, View){/*=====	var Contained = dijit._Contained;	var Container = dijit._Container;	var WidgetBase = dijit._WidgetBase;	var TransitionEvent = dojox.mobile.TransitionEvent;	var View = dojox.mobile.View;=====*/	// module:	//		dojox/mobile/_ItemBase	// summary:	//		A base class for item classes (e.g. ListItem, IconItem, etc.)	return declare("dojox.mobile._ItemBase", [WidgetBase, Container, Contained],{		// summary:		//		A base class for item classes (e.g. ListItem, IconItem, etc.)		// description:		//		_ItemBase is a base class for widgets that have capability to		//		make a view transition when clicked.		// icon: String		//		An icon image to display. The value can be either a path for an		//		image file or a class name of a DOM button. If icon is not		//		specified, the iconBase parameter of the parent widget is used.		icon: "",		// iconPos: String		//		The position of an aggregated icon. IconPos is comma separated		//		values like top,left,width,height (ex. "0,0,29,29"). If iconPos		//		is not specified, the iconPos parameter of the parent widget is		//		used.		iconPos: "", // top,left,width,height (ex. "0,0,29,29")		// alt: String		//		An alt text for the icon image.		alt: "",		// href: String		//		A URL of another web page to go to.		href: "",		// hrefTarget: String		//		A target that specifies where to open a page specified by		//		href. The value will be passed to the 2nd argument of		//		window.open().		hrefTarget: "",		// moveTo: String		//		The id of the transition destination view which resides in the		//		current page.		//		//		If the value has a hash sign ('#') before the id (e.g. #view1)		//		and the dojo.hash module is loaded by the user application, the		//		view transition updates the hash in the browser URL so that the		//		user can bookmark the destination view. In this case, the user		//		can also use the browser's back/forward button to navigate		//		through the views in the browser history.		//		//		If null, transitions to a blank view.		//		If '#', returns immediately without transition.		moveTo: "",		// scene: String		//		The name of a scene. Used from dojox.mobile.app.		scene: "",		// clickable: Boolean		//		If true, this item becomes clickable even if a transition		//		destination (moveTo, etc.) is not specified.		clickable: false,		// url: String		//		A URL of an html fragment page or JSON data that represents a		//		new view content. The view content is loaded with XHR and		//		inserted in the current page. Then a view transition occurs to		//		the newly created view. The view is cached so that subsequent		//		requests would not load the content again.		url: "",		// urlTarget: String		//		Node id under which a new view will be created according to the		//		url parameter. If not specified, The new view will be created as		//		a sibling of the current view.		urlTarget: "",		// transition: String		//		A type of animated transition effect. You can choose from the		//		standard transition types, "slide", "fade", "flip", or from the		//		extended transition types, "cover", "coverv", "dissolve",		//		"reveal", "revealv", "scaleIn", "scaleOut", "slidev",		//		"swirl", "zoomIn", "zoomOut". If "none" is specified, transition		//		occurs immediately without animation.		transition: "",		// transitionDir: Number		//		The transition direction. If 1, transition forward. If -1,		//		transition backward. For example, the slide transition slides		//		the view from right to left when dir == 1, and from left to		//		right when dir == -1.		transitionDir: 1,		// transitionOptions: Object		//		A hash object that holds transition options.		transitionOptions: null,		// callback: Function|String		//		A callback function that is called when the transition has been		//		finished. A function reference, or name of a function in		//		context.		callback: null,		// sync: Boolean		//		If true, XHR for the view content specified with the url		//		parameter is performed synchronously. If false, it is done		//		asynchronously and the progress indicator is displayed while		//		loading the content. This parameter is effective only when the		//		url parameter is used.		sync: true,		// label: String		//		A label of the item. If the label is not specified, innerHTML is		//		used as a label.		label: "",		// toggle: Boolean		//		If true, the item acts like a toggle button.		toggle: false,		// _duration: Number		//		Duration of selection, milliseconds.		_duration: 800,			inheritParams: function(){			var parent = this.getParent();			if(parent){				if(!this.transition){ this.transition = parent.transition; }				if(this.icon && parent.iconBase &&					parent.iconBase.charAt(parent.iconBase.length - 1) === '/'){					this.icon = parent.iconBase + this.icon;				}				if(!this.icon){ this.icon = parent.iconBase; }				if(!this.iconPos){ this.iconPos = parent.iconPos; }			}		},			select: function(){			// summary:			//		Makes this widget in the selected state.			// description:			//		Subclass must implement.		},			deselect: function(){			// summary:			//		Makes this widget in the deselected state.			// description:			//		Subclass must implement.		},			defaultClickAction: function(e){			if(this.toggle){				if(this.selected){					this.deselect();				}else{					this.select();				}			}else if(!this.selected){				this.select();				if(!this.selectOne){					var _this = this;					setTimeout(function(){						_this.deselect();					}, this._duration);				}				var transOpts;				if(this.moveTo || this.href || this.url || this.scene){					transOpts = {moveTo: this.moveTo, href: this.href, url: this.url, scene: this.scene, transition: this.transition, transitionDir: this.transitionDir};				}else if(this.transitionOptions){					transOpts = this.transitionOptions;				}					if(transOpts){					return new TransitionEvent(this.domNode,transOpts,e).dispatch();				}			}		},			getParent: function(){			// summary:			//		Gets the parent widget.			// description:			//		Almost equivalent to _Contained#getParent, but this method			//		does not cause a script error even if this widget has no			//		parent yet.			var ref = this.srcNodeRef || this.domNode;			return ref && ref.parentNode ? registry.getEnclosingWidget(ref.parentNode) : null;		},		setTransitionPos: function(e){			// summary:			//		Stores the clicked position for later use.			// description:			//		Some of the transition animations (e.g. ScaleIn) needs the			//		clicked position.			var w = this;			while(true){				w = w.getParent();				if(!w || w instanceof View){ break; }			}			if(w){				w.clickedPosX = e.clientX;				w.clickedPosY = e.clientY;			}		},		transitionTo: function(moveTo, href, url, scene){			// summary:			//		Performs a view transition.			// description:			//		Given a transition destination, this method performs a view			//		transition. This method is typically called when this item			//		is clicked.			if(config.isDebug){				var alreadyCalledHash = arguments.callee._ach || (arguments.callee._ach = {}),					caller = (arguments.callee.caller || "unknown caller").toString();				if(!alreadyCalledHash[caller]){					kernel.deprecated(this.declaredClass + "::transitionTo() is deprecated." +					caller, "", "2.0");					alreadyCalledHash[caller] = true;				}			}			new TransitionEvent(this.domNode, {moveTo: moveTo, href: href, url: url, scene: scene,						transition: this.transition, transitionDir: this.transitionDir}).dispatch();		}	});});
 |