summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/mobile/_ItemBase.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/mobile/_ItemBase.js')
-rw-r--r--js/dojo/dojox/mobile/_ItemBase.js249
1 files changed, 249 insertions, 0 deletions
diff --git a/js/dojo/dojox/mobile/_ItemBase.js b/js/dojo/dojox/mobile/_ItemBase.js
new file mode 100644
index 0000000..d63364b
--- /dev/null
+++ b/js/dojo/dojox/mobile/_ItemBase.js
@@ -0,0 +1,249 @@
+//>>built
+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();
+ }
+ });
+});