Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/base/test/browser/ui/grid/util.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { IView } from '../../../../browser/ui/grid/grid.js';
8
import { GridNode, isGridBranchNode } from '../../../../browser/ui/grid/gridview.js';
9
import { Emitter, Event } from '../../../../common/event.js';
10
11
export class TestView implements IView {
12
13
private readonly _onDidChange = new Emitter<{ width: number; height: number } | undefined>();
14
readonly onDidChange = this._onDidChange.event;
15
16
get minimumWidth(): number { return this._minimumWidth; }
17
set minimumWidth(size: number) { this._minimumWidth = size; this._onDidChange.fire(undefined); }
18
19
get maximumWidth(): number { return this._maximumWidth; }
20
set maximumWidth(size: number) { this._maximumWidth = size; this._onDidChange.fire(undefined); }
21
22
get minimumHeight(): number { return this._minimumHeight; }
23
set minimumHeight(size: number) { this._minimumHeight = size; this._onDidChange.fire(undefined); }
24
25
get maximumHeight(): number { return this._maximumHeight; }
26
set maximumHeight(size: number) { this._maximumHeight = size; this._onDidChange.fire(undefined); }
27
28
private _element: HTMLElement = document.createElement('div');
29
get element(): HTMLElement { this._onDidGetElement.fire(); return this._element; }
30
31
private readonly _onDidGetElement = new Emitter<void>();
32
readonly onDidGetElement = this._onDidGetElement.event;
33
34
private _width = 0;
35
get width(): number { return this._width; }
36
37
private _height = 0;
38
get height(): number { return this._height; }
39
40
private _top = 0;
41
get top(): number { return this._top; }
42
43
private _left = 0;
44
get left(): number { return this._left; }
45
46
get size(): [number, number] { return [this.width, this.height]; }
47
48
private readonly _onDidLayout = new Emitter<{ width: number; height: number; top: number; left: number }>();
49
readonly onDidLayout: Event<{ width: number; height: number; top: number; left: number }> = this._onDidLayout.event;
50
51
private readonly _onDidFocus = new Emitter<void>();
52
readonly onDidFocus: Event<void> = this._onDidFocus.event;
53
54
constructor(
55
private _minimumWidth: number,
56
private _maximumWidth: number,
57
private _minimumHeight: number,
58
private _maximumHeight: number
59
) {
60
assert(_minimumWidth <= _maximumWidth, 'gridview view minimum width must be <= maximum width');
61
assert(_minimumHeight <= _maximumHeight, 'gridview view minimum height must be <= maximum height');
62
}
63
64
layout(width: number, height: number, top: number, left: number): void {
65
this._width = width;
66
this._height = height;
67
this._top = top;
68
this._left = left;
69
this._onDidLayout.fire({ width, height, top, left });
70
}
71
72
focus(): void {
73
this._onDidFocus.fire();
74
}
75
76
dispose(): void {
77
this._onDidChange.dispose();
78
this._onDidGetElement.dispose();
79
this._onDidLayout.dispose();
80
this._onDidFocus.dispose();
81
}
82
}
83
84
export function nodesToArrays(node: GridNode): any {
85
if (isGridBranchNode(node)) {
86
return node.children.map(nodesToArrays);
87
} else {
88
return node.view;
89
}
90
}
91
92