define("dojox/mobile/viewRegistry", [ "dojo/_base/array", "dojo/dom-class", "dijit/registry" ], function(array, domClass, registry){ // module: // dojox/mobile/viewRegistry var viewRegistry = { // summary: // A registry of existing views. // length: Number // The number of registered views. length: 0, // hash: [private] Object // The object used to register views. hash: {}, // initialView: [private] dojox/mobile/View // The initial view. initialView: null, add: function(/*dojox/mobile/View*/ view){ // summary: // Adds a view to the registry. this.hash[view.id] = view; this.length++; }, remove: function(/*String*/ id){ // summary: // Removes a view from the registry. if(this.hash[id]){ delete this.hash[id]; this.length--; } }, getViews: function(){ // summary: // Gets all registered views. // returns: Array var arr = []; for(var i in this.hash){ arr.push(this.hash[i]); } return arr; }, getParentView: function(/*dojox/mobile/View*/ view){ // summary: // Gets the parent view of the specified view. // returns: dojox/mobile/View for(var v = view.getParent(); v; v = v.getParent()){ if(domClass.contains(v.domNode, "mblView")){ return v; } } return null; }, getChildViews: function(/*dojox/mobile/View*/ parent){ // summary: // Gets the children views of the specified view. // returns: Array return array.filter(this.getViews(), function(v){ return this.getParentView(v) === parent; }, this); }, getEnclosingView: function(/*DomNode*/ node){ // summary: // Gets the view containing the specified DOM node. // returns: dojox/mobile/View for(var n = node; n && n.tagName !== "BODY"; n = n.parentNode){ if(n.nodeType === 1 && domClass.contains(n, "mblView")){ return registry.byNode(n); } } return null; }, getEnclosingScrollable: function(/*DomNode*/ node){ // summary: // Gets the dojox/mobile/scrollable object containing the specified DOM node. // returns: dojox/mobile/scrollable for(var w = registry.getEnclosingWidget(node); w; w = w.getParent()){ if(w.scrollableParams && w._v){ return w; } } return null; } }; return viewRegistry; });