74 lines
1.9 KiB
JavaScript
74 lines
1.9 KiB
JavaScript
|
dojo.provide("dijit._Contained");
|
||
|
|
||
|
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
|
||
|
// implements dijit._Container
|
||
|
for(var p=this.domNode.parentNode; p; p=p.parentNode){
|
||
|
var id = p.getAttribute && p.getAttribute("widgetId");
|
||
|
if(id){
|
||
|
var parent = dijit.byId(id);
|
||
|
return parent.isContainer ? parent : null;
|
||
|
}
|
||
|
}
|
||
|
return null;
|
||
|
},
|
||
|
|
||
|
_getSibling: function(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);
|
||
|
if(!node){ return null; } // null
|
||
|
var id = node.getAttribute("widgetId");
|
||
|
return dijit.byId(id);
|
||
|
},
|
||
|
|
||
|
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"); // Mixed
|
||
|
},
|
||
|
|
||
|
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"); // Mixed
|
||
|
},
|
||
|
|
||
|
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
|
||
|
}
|
||
|
}
|
||
|
);
|
||
|
|