Skip to content

Commit b557d59

Browse files
committed
tree model: cleanup interface
1 parent 94ee300 commit b557d59

4 files changed

Lines changed: 20 additions & 33 deletions

File tree

src/vs/base/browser/ui/tree/abstractTree.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -321,11 +321,11 @@ export abstract class AbstractTree<T, TFilterData, TRef> implements IDisposable
321321
}
322322

323323
expandAll(): void {
324-
this.model.expandAll();
324+
this.model.setCollapsed(this.model.rootRef, false, true);
325325
}
326326

327327
collapseAll(): void {
328-
this.model.collapseAll();
328+
this.model.setCollapsed(this.model.rootRef, true, true);
329329
}
330330

331331
isCollapsible(location: TRef): boolean {

src/vs/base/browser/ui/tree/indexTreeModel.ts

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ export interface IIndexTreeModelOptions<T, TFilterData> {
4545

4646
export class IndexTreeModel<T extends Exclude<any, undefined>, TFilterData = void> implements ITreeModel<T, TFilterData, number[]> {
4747

48+
readonly rootRef = [];
49+
4850
private root: IMutableTreeNode<T, TFilterData>;
4951
private eventBufferer = new EventBufferer(); // TODO@joao is this really necessary
5052

@@ -123,6 +125,14 @@ export class IndexTreeModel<T extends Exclude<any, undefined>, TFilterData = voi
123125
return this.getTreeNodeWithListIndex(location).listIndex;
124126
}
125127

128+
isCollapsible(location: number[]): boolean {
129+
return this.getTreeNode(location).collapsible;
130+
}
131+
132+
isCollapsed(location: number[]): boolean {
133+
return this.getTreeNode(location).collapsed;
134+
}
135+
126136
setCollapsed(location: number[], collapsed?: boolean, recursive = false): boolean {
127137
const { node, listIndex, revealed } = this.getTreeNodeWithListIndex(location);
128138

@@ -167,22 +177,6 @@ export class IndexTreeModel<T extends Exclude<any, undefined>, TFilterData = voi
167177
return result;
168178
}
169179

170-
expandAll(): void {
171-
this.setCollapsed([], false, true);
172-
}
173-
174-
collapseAll(): void {
175-
this.setCollapsed([], true, true);
176-
}
177-
178-
isCollapsible(location: number[]): boolean {
179-
return this.getTreeNode(location).collapsible;
180-
}
181-
182-
isCollapsed(location: number[]): boolean {
183-
return this.getTreeNode(location).collapsed;
184-
}
185-
186180
refilter(): void {
187181
const previousRenderNodeCount = this.root.renderNodeCount;
188182
const toInsert = this.updateNodeAfterFilterChange(this.root);

src/vs/base/browser/ui/tree/objectTreeModel.ts

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ export interface IObjectTreeModelOptions<T, TFilterData> extends IIndexTreeModel
1313

1414
export class ObjectTreeModel<T extends NonNullable<any>, TFilterData extends NonNullable<any> = void> implements ITreeModel<T | null, TFilterData, T | null> {
1515

16+
readonly rootRef = null;
17+
1618
private model: IndexTreeModel<T | null, TFilterData>;
1719
private nodes = new Map<T | null, ITreeNode<T, TFilterData>>();
1820

@@ -106,19 +108,6 @@ export class ObjectTreeModel<T extends NonNullable<any>, TFilterData extends Non
106108
return this.model.getListIndex(location);
107109
}
108110

109-
setCollapsed(element: T, collapsed: boolean): boolean {
110-
const location = this.getElementLocation(element);
111-
return this.model.setCollapsed(location, collapsed);
112-
}
113-
114-
expandAll(): void {
115-
this.model.expandAll();
116-
}
117-
118-
collapseAll(): void {
119-
this.model.collapseAll();
120-
}
121-
122111
isCollapsible(element: T): boolean {
123112
const location = this.getElementLocation(element);
124113
return this.model.isCollapsible(location);
@@ -129,6 +118,11 @@ export class ObjectTreeModel<T extends NonNullable<any>, TFilterData extends Non
129118
return this.model.isCollapsed(location);
130119
}
131120

121+
setCollapsed(element: T, collapsed: boolean): boolean {
122+
const location = this.getElementLocation(element);
123+
return this.model.setCollapsed(location, collapsed);
124+
}
125+
132126
refilter(): void {
133127
this.model.refilter();
134128
}

src/vs/base/browser/ui/tree/tree.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ export interface ITreeNode<T, TFilterData = void> {
8686
}
8787

8888
export interface ITreeModel<T, TFilterData, TRef> {
89+
readonly rootRef: TRef;
8990
readonly onDidChangeCollapseState: Event<ITreeNode<T, TFilterData>>;
9091
readonly onDidChangeRenderNodeCount: Event<ITreeNode<T, TFilterData>>;
9192

@@ -101,8 +102,6 @@ export interface ITreeModel<T, TFilterData, TRef> {
101102
isCollapsible(location: TRef): boolean;
102103
isCollapsed(location: TRef): boolean;
103104
setCollapsed(location: TRef, collapsed?: boolean, recursive?: boolean): boolean;
104-
expandAll(): void;
105-
collapseAll(): void;
106105

107106
refilter(): void;
108107
}

0 commit comments

Comments
 (0)