60 lines
1.2 KiB
JavaScript
60 lines
1.2 KiB
JavaScript
/**
|
|
* A Traversable mixin.
|
|
* @private
|
|
*/
|
|
Ext.define('Ext.mixin.Traversable', {
|
|
extend: 'Ext.mixin.Mixin',
|
|
|
|
mixinConfig: {
|
|
id: 'traversable'
|
|
},
|
|
|
|
setParent: function(parent) {
|
|
this.parent = parent;
|
|
|
|
return this;
|
|
},
|
|
|
|
/**
|
|
* @member Ext.Component
|
|
* Returns `true` if this component has a parent.
|
|
* @return {Boolean} `true` if this component has a parent.
|
|
*/
|
|
hasParent: function() {
|
|
return Boolean(this.parent);
|
|
},
|
|
|
|
/**
|
|
* @member Ext.Component
|
|
* Returns the parent of this component, if it has one.
|
|
* @return {Ext.Component} The parent of this component.
|
|
*/
|
|
getParent: function() {
|
|
return this.parent;
|
|
},
|
|
|
|
getAncestors: function() {
|
|
var ancestors = [],
|
|
parent = this.getParent();
|
|
|
|
while (parent) {
|
|
ancestors.push(parent);
|
|
parent = parent.getParent();
|
|
}
|
|
|
|
return ancestors;
|
|
},
|
|
|
|
getAncestorIds: function() {
|
|
var ancestorIds = [],
|
|
parent = this.getParent();
|
|
|
|
while (parent) {
|
|
ancestorIds.push(parent.getId());
|
|
parent = parent.getParent();
|
|
}
|
|
|
|
return ancestorIds;
|
|
}
|
|
});
|