diff options
Diffstat (limited to 'lib/dijit/_Contained.js')
-rw-r--r-- | lib/dijit/_Contained.js | 91 |
1 files changed, 68 insertions, 23 deletions
diff --git a/lib/dijit/_Contained.js b/lib/dijit/_Contained.js index 50d9dc559..fcefca1f8 100644 --- a/lib/dijit/_Contained.js +++ b/lib/dijit/_Contained.js @@ -1,31 +1,76 @@ /* - Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. + Copyright (c) 2004-2011, 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["dijit._Contained"]){ -dojo._hasResource["dijit._Contained"]=true; +if(!dojo._hasResource["dijit._Contained"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. +dojo._hasResource["dijit._Contained"] = true; dojo.provide("dijit._Contained"); -dojo.declare("dijit._Contained",null,{getParent:function(){ -var _1=dijit.getEnclosingWidget(this.domNode.parentNode); -return _1&&_1.isContainer?_1:null; -},_getSibling:function(_2){ -var _3=this.domNode; -do{ -_3=_3[_2+"Sibling"]; -}while(_3&&_3.nodeType!=1); -return _3&&dijit.byNode(_3); -},getPreviousSibling:function(){ -return this._getSibling("previous"); -},getNextSibling:function(){ -return this._getSibling("next"); -},getIndexInParent:function(){ -var p=this.getParent(); -if(!p||!p.getIndexOfChild){ -return -1; -} -return p.getIndexOfChild(this); -}}); + + +dojo.declare("dijit._Contained", + null, + { + // summary: + // Mixin for widgets that are children of a container widget + // + // example: + // | // make a basic custom widget that knows about it's parents + // | dojo.declare("my.customClass",[dijit._Widget,dijit._Contained],{}); + + getParent: function(){ + // summary: + // Returns the parent widget of this widget, assuming the parent + // specifies isContainer + var parent = dijit.getEnclosingWidget(this.domNode.parentNode); + return parent && parent.isContainer ? parent : null; + }, + + _getSibling: function(/*String*/ which){ + // summary: + // Returns next or previous sibling + // which: + // Either "next" or "previous" + // tags: + // private + var node = this.domNode; + do{ + node = node[which+"Sibling"]; + }while(node && node.nodeType != 1); + return node && dijit.byNode(node); // dijit._Widget + }, + + getPreviousSibling: function(){ + // summary: + // Returns null if this is the first child of the parent, + // otherwise returns the next element sibling to the "left". + + return this._getSibling("previous"); // dijit._Widget + }, + + getNextSibling: function(){ + // summary: + // Returns null if this is the last child of the parent, + // otherwise returns the next element sibling to the "right". + + return this._getSibling("next"); // dijit._Widget + }, + + getIndexInParent: function(){ + // summary: + // Returns the index of this widget within its container parent. + // It returns -1 if the parent does not exist, or if the parent + // is not a dijit._Container + + var p = this.getParent(); + if(!p || !p.getIndexOfChild){ + return -1; // int + } + return p.getIndexOfChild(this); // int + } + } + ); + } |