split methods and add a new API getAncestorTabs()

This commit is contained in:
SHIMODA Hiroshi 2010-12-01 17:40:18 +09:00
parent 34cd4244c1
commit fabd5f546d
2 changed files with 30 additions and 21 deletions

View File

@ -4171,15 +4171,8 @@ TreeStyleTabBrowser.prototype = {
{ {
if (!aTabs || !aTabs.length || !this._treeViewEnabled) return; if (!aTabs || !aTabs.length || !this._treeViewEnabled) return;
if (aLevel === void(0)) { if (aLevel === void(0))
var parentTab = this.getParentTab(aTabs[0]); aLevel = this.getAncestorTabs(aTabs[0]).length;
var aLevel = 0;
while (parentTab)
{
aLevel++;
parentTab = this.getParentTab(parentTab);
}
}
var b = this.mTabBrowser; var b = this.mTabBrowser;
var margin = this.indent < 0 ? this.baseIndent : this.indent ; var margin = this.indent < 0 ? this.baseIndent : this.indent ;
@ -4195,18 +4188,7 @@ TreeStyleTabBrowser.prototype = {
if (!aTab.parentNode) return; // ignore removed tabs if (!aTab.parentNode) return; // ignore removed tabs
this.updateTabIndent(aTab, indent, aJustNow); this.updateTabIndent(aTab, indent, aJustNow);
aTab.setAttribute(this.kNEST, aLevel); aTab.setAttribute(this.kNEST, aLevel);
if ( this.updateCanCollapseSubtree(aTab, aLevel);
!aLevel ||
this.maxTreeLevel < 0 ||
this.maxTreeLevel > aLevel
) {
aTab.setAttribute(this.kALLOW_COLLAPSE, true);
this.collapseExpandSubtree(aTab, this.isSubtreeCollapsed(aTab));
}
else {
this.collapseExpandSubtree(aTab, false);
aTab.removeAttribute(this.kALLOW_COLLAPSE);
}
this.updateTabsIndent(this.getChildTabs(aTab), aLevel+1, aJustNow); this.updateTabsIndent(this.getChildTabs(aTab), aLevel+1, aJustNow);
}, this); }, this);
}, },
@ -4393,6 +4375,22 @@ TreeStyleTabBrowser.prototype = {
}, },
_horizontalTabMaxIndentBase : 0, _horizontalTabMaxIndentBase : 0,
updateCanCollapseSubtree : function TSTBrowser_updateCanCollapseSubtree(aTab, aLevel)
{
if (
!aLevel ||
this.maxTreeLevel < 0 ||
this.maxTreeLevel > aLevel
) {
aTab.setAttribute(this.kALLOW_COLLAPSE, true);
this.collapseExpandSubtree(aTab, this.isSubtreeCollapsed(aTab));
}
else {
this.collapseExpandSubtree(aTab, false);
aTab.removeAttribute(this.kALLOW_COLLAPSE);
}
},
updateTabsCount : function TSTBrowser_updateTabsCount(aTab, aDontUpdateAncestor) updateTabsCount : function TSTBrowser_updateTabsCount(aTab, aDontUpdateAncestor)
{ {
var count = document.getAnonymousElementByAttribute(aTab, 'class', this.kCOUNTER); var count = document.getAnonymousElementByAttribute(aTab, 'class', this.kCOUNTER);

View File

@ -1428,6 +1428,17 @@ var TreeStyleTabUtils = {
).singleNodeValue; ).singleNodeValue;
}, },
getAncestorTabs : function TSTUtils_getAncestorTabs(aTab) /* PUBLIC API */
{
var tabs = [];
var parentTab = aTab;
while (parentTab = this.getParentTab(parentTab))
{
tabs.push(parentTab);
}
return tabs;
},
getRootTab : function TSTUtils_getRootTab(aTab) /* PUBLIC API */ getRootTab : function TSTUtils_getRootTab(aTab) /* PUBLIC API */
{ {
if (!aTab) return null; if (!aTab) return null;