/** * トラバース可能なミックスイン。 * @private */ Ext.define('Ext.mixin.Traversable', { extend: 'Ext.Mixin', mixinConfig: { id: 'traversable' }, setParent: function(parent) { this.parent = parent; return this; }, /** * このコンポーネントが親を持つ場合は`true`を返します。 * @return {Boolean} このコンポーネントが親を持つ場合は`true` */ hasParent: function() { return Boolean(this.parent); }, /** * このコンポーネントの親がある場合はそれを返します。 * @return {Ext.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; } });