提交 d19a0709 编写于 作者: J Joao Moreno

add treeview to strict null checks

fixes #66557
上级 65fcf318
......@@ -42,7 +42,9 @@
"./vs/base/parts/tree/browser/treeDnd.ts",
"./vs/base/parts/tree/browser/treeModel.ts",
"./vs/base/parts/tree/browser/treeUtils.ts",
"./vs/base/parts/tree/browser/treeViewModel.ts",
"./vs/base/parts/tree/test/browser/treeModel.test.ts",
"./vs/base/parts/tree/test/browser/treeViewModel.test.ts",
"./vs/base/test/browser/browser.test.ts",
"./vs/base/test/browser/comparers.test.ts",
"./vs/base/test/browser/dom.test.ts",
......@@ -868,4 +870,4 @@
"exclude": [
"./typings/require-monaco.d.ts"
]
}
}
\ No newline at end of file
......@@ -15,21 +15,16 @@ export interface IViewItem {
export class HeightMap {
private heightMap: IViewItem[];
private indexes: { [item: string]: number; };
private heightMap: IViewItem[] = [];
private indexes: { [item: string]: number; } = {};
constructor() {
this.heightMap = [];
this.indexes = {};
}
public getContentHeight(): number {
getContentHeight(): number {
let last = this.heightMap[this.heightMap.length - 1];
return !last ? 0 : last.top + last.height;
}
public onInsertItems(iterator: INextIterator<Item>, afterItemId: string | null = null): number {
let item: Item;
onInsertItems(iterator: INextIterator<Item>, afterItemId: string | null = null): number | undefined {
let item: Item | null = null;
let viewItem: IViewItem;
let i: number, j: number;
let totalSize: number;
......@@ -82,16 +77,16 @@ export class HeightMap {
return sizeDiff;
}
public onInsertItem(item: IViewItem): void {
onInsertItem(item: IViewItem): void {
// noop
}
// Contiguous items
public onRemoveItems(iterator: INextIterator<string>): void {
let itemId: string;
onRemoveItems(iterator: INextIterator<string>): void {
let itemId: string | null = null;
let viewItem: IViewItem;
let startIndex: number | null = null;
let i: number;
let i = 0;
let sizeDiff = 0;
while (itemId = iterator.next()) {
......@@ -112,7 +107,7 @@ export class HeightMap {
}
}
if (sizeDiff === 0) {
if (sizeDiff === 0 || startIndex === null) {
return;
}
......@@ -126,18 +121,18 @@ export class HeightMap {
}
}
public onRemoveItem(item: IViewItem): void {
onRemoveItem(item: IViewItem): void {
// noop
}
public onRefreshItemSet(items: Item[]): void {
onRefreshItemSet(items: Item[]): void {
let sortedItems = items.sort((a, b) => this.indexes[a.id] - this.indexes[b.id]);
this.onRefreshItems(new ArrayIterator(sortedItems));
}
// Ordered, but not necessarily contiguous items
public onRefreshItems(iterator: INextIterator<Item>): void {
let item: Item;
onRefreshItems(iterator: INextIterator<Item>): void {
let item: Item | null = null;
let viewItem: IViewItem;
let newHeight: number;
let i: number, j: number | null = null;
......@@ -171,19 +166,19 @@ export class HeightMap {
}
}
public onRefreshItem(item: IViewItem, needsRender: boolean = false): void {
onRefreshItem(item: IViewItem, needsRender: boolean = false): void {
// noop
}
public itemsCount(): number {
itemsCount(): number {
return this.heightMap.length;
}
public itemAt(position: number): string {
itemAt(position: number): string {
return this.heightMap[this.indexAt(position)].model.id;
}
public withItemsInRange(start: number, end: number, fn: (item: string) => void): void {
withItemsInRange(start: number, end: number, fn: (item: string) => void): void {
start = this.indexAt(start);
end = this.indexAt(end);
for (let i = start; i <= end; i++) {
......@@ -191,7 +186,7 @@ export class HeightMap {
}
}
public indexAt(position: number): number {
indexAt(position: number): number {
let left = 0;
let right = this.heightMap.length;
let center: number;
......@@ -217,15 +212,15 @@ export class HeightMap {
return this.heightMap.length;
}
public indexAfter(position: number): number {
indexAfter(position: number): number {
return Math.min(this.indexAt(position) + 1, this.heightMap.length);
}
public itemAtIndex(index: number): IViewItem {
itemAtIndex(index: number): IViewItem {
return this.heightMap[index];
}
public itemAfter(item: IViewItem): IViewItem {
itemAfter(item: IViewItem): IViewItem {
return this.heightMap[this.indexes[item.model.id] + 1] || null;
}
......@@ -233,8 +228,8 @@ export class HeightMap {
throw new Error('not implemented');
}
public dispose(): void {
this.heightMap = null;
this.indexes = null;
dispose(): void {
this.heightMap = [];
this.indexes = {};
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册