UNPKG

9.04 kBTypeScriptView Raw
1import { Event, Emitter, WaitUntilEvent } from '../../common/event';
2import { DisposableCollection } from '../../common/disposable';
3import { CancellationToken } from '../../common/cancellation';
4import { ILogger } from '../../common/logger';
5import { SelectionProvider } from '../../common/selection-service';
6import { Tree, TreeNode, CompositeTreeNode } from './tree';
7import { TreeSelectionService, SelectableTreeNode, TreeSelection } from './tree-selection';
8import { TreeExpansionService, ExpandableTreeNode } from './tree-expansion';
9import { TreeNavigationService } from './tree-navigation';
10import { TreeIterator } from './tree-iterator';
11import { TreeSearch } from './tree-search';
12import { TreeFocusService } from './tree-focus-service';
13/**
14 * The tree model.
15 */
16export declare const TreeModel: unique symbol;
17export interface TreeModel extends Tree, TreeSelectionService, TreeExpansionService {
18 /**
19 * Expands the given node. If the `node` argument is `undefined`, then expands the currently selected tree node.
20 * If multiple tree nodes are selected, expands the most recently selected tree node.
21 */
22 expandNode(node?: Readonly<ExpandableTreeNode>): Promise<Readonly<ExpandableTreeNode> | undefined>;
23 /**
24 * Collapses the given node. If the `node` argument is `undefined`, then collapses the currently selected tree node.
25 * If multiple tree nodes are selected, collapses the most recently selected tree node.
26 */
27 collapseNode(node?: Readonly<ExpandableTreeNode>): Promise<boolean>;
28 /**
29 * Collapses recursively. If the `node` argument is `undefined`, then collapses the currently selected tree node.
30 * If multiple tree nodes are selected, collapses the most recently selected tree node.
31 */
32 collapseAll(node?: Readonly<CompositeTreeNode>): Promise<boolean>;
33 /**
34 * Toggles the expansion state of the given node. If not give, then it toggles the expansion state of the currently selected node.
35 * If multiple nodes are selected, then the most recently selected tree node's expansion state will be toggled.
36 */
37 toggleNodeExpansion(node?: Readonly<ExpandableTreeNode>): Promise<void>;
38 /**
39 * Opens the given node or the currently selected on if the argument is `undefined`.
40 * If multiple nodes are selected, open the most recently selected node.
41 */
42 openNode(node?: Readonly<TreeNode> | undefined): void;
43 /**
44 * Event when a node should be opened.
45 */
46 readonly onOpenNode: Event<Readonly<TreeNode>>;
47 /**
48 * Selects the parent node relatively to the selected taking into account node expansion.
49 */
50 selectParent(): void;
51 /**
52 * Navigates to the given node if it is defined. This method accepts both the tree node and its ID as an argument.
53 * Navigation sets a node as a root node and expand it. Resolves to the node if the navigation was successful. Otherwise,
54 * resolves to `undefined`.
55 */
56 navigateTo(nodeOrId: Readonly<TreeNode> | string | undefined): Promise<TreeNode | undefined>;
57 /**
58 * Tests whether it is possible to navigate forward.
59 */
60 canNavigateForward(): boolean;
61 /**
62 * Tests whether it is possible to navigate backward.
63 */
64 canNavigateBackward(): boolean;
65 /**
66 * Navigates forward.
67 */
68 navigateForward(): Promise<void>;
69 /**
70 * Navigates backward.
71 */
72 navigateBackward(): Promise<void>;
73 /**
74 * Selects the previous node relatively to the currently selected one. This method takes the expansion state of the tree into consideration.
75 */
76 selectPrevNode(type?: TreeSelection.SelectionType): void;
77 /**
78 * Returns the previous selectable tree node.
79 */
80 getPrevSelectableNode(node?: TreeNode): SelectableTreeNode | undefined;
81 /**
82 * Selects the next node relatively to the currently selected one. This method takes the expansion state of the tree into consideration.
83 */
84 selectNextNode(type?: TreeSelection.SelectionType): void;
85 /**
86 * Returns the next selectable tree node.
87 */
88 getNextSelectableNode(node?: TreeNode): SelectableTreeNode | undefined;
89 /**
90 * Selects the given tree node. Has no effect when the node does not exist in the tree. Discards any previous selection state.
91 */
92 selectNode(node: Readonly<SelectableTreeNode>): void;
93 /**
94 * Selects the given node if it was not yet selected, or unselects it if it was. Keeps the previous selection state and updates it
95 * with the current toggle selection.
96 */
97 toggleNode(node: Readonly<SelectableTreeNode>): void;
98 /**
99 * Selects a range of tree nodes. The target of the selection range is the argument, the from tree node is the previous selected node.
100 * If no node was selected previously, invoking this method does nothing.
101 */
102 selectRange(node: Readonly<SelectableTreeNode>): void;
103 /**
104 * Returns the node currently in focus in this tree, or undefined if no node is focused.
105 */
106 getFocusedNode(): SelectableTreeNode | undefined;
107}
108export declare class TreeModelImpl implements TreeModel, SelectionProvider<ReadonlyArray<Readonly<SelectableTreeNode>>> {
109 protected readonly logger: ILogger;
110 protected readonly tree: Tree;
111 protected readonly selectionService: TreeSelectionService;
112 protected readonly expansionService: TreeExpansionService;
113 protected readonly navigationService: TreeNavigationService;
114 protected readonly focusService: TreeFocusService;
115 protected readonly treeSearch: TreeSearch;
116 protected readonly onChangedEmitter: Emitter<void>;
117 protected readonly onOpenNodeEmitter: Emitter<TreeNode>;
118 protected readonly toDispose: DisposableCollection;
119 protected init(): void;
120 dispose(): void;
121 protected handleExpansion(node: Readonly<ExpandableTreeNode>): void;
122 /**
123 * Select the given node if it is the ancestor of a selected node.
124 */
125 protected selectIfAncestorOfSelected(node: Readonly<ExpandableTreeNode>): void;
126 get root(): TreeNode | undefined;
127 set root(root: TreeNode | undefined);
128 get onChanged(): Event<void>;
129 get onOpenNode(): Event<TreeNode>;
130 protected fireChanged(): void;
131 get onNodeRefreshed(): Event<Readonly<CompositeTreeNode> & WaitUntilEvent>;
132 getNode(id: string | undefined): TreeNode | undefined;
133 getFocusedNode(): SelectableTreeNode | undefined;
134 validateNode(node: TreeNode | undefined): TreeNode | undefined;
135 refresh(parent?: Readonly<CompositeTreeNode>): Promise<CompositeTreeNode | undefined>;
136 get selectedNodes(): readonly Readonly<SelectableTreeNode>[];
137 get onSelectionChanged(): Event<readonly Readonly<SelectableTreeNode>[]>;
138 get onExpansionChanged(): Event<Readonly<ExpandableTreeNode>>;
139 expandNode(raw?: Readonly<ExpandableTreeNode>): Promise<ExpandableTreeNode | undefined>;
140 protected getExpansionCandidates(raw?: Readonly<TreeNode>): IterableIterator<TreeNode | undefined>;
141 collapseNode(raw?: Readonly<ExpandableTreeNode>): Promise<boolean>;
142 collapseAll(raw?: Readonly<CompositeTreeNode>): Promise<boolean>;
143 toggleNodeExpansion(raw?: Readonly<ExpandableTreeNode>): Promise<void>;
144 selectPrevNode(type?: TreeSelection.SelectionType): void;
145 getPrevSelectableNode(node?: TreeNode | undefined): SelectableTreeNode | undefined;
146 selectNextNode(type?: TreeSelection.SelectionType): void;
147 getNextSelectableNode(node?: TreeNode | undefined): SelectableTreeNode | undefined;
148 protected doGetNextNode<T extends TreeNode>(iterator: TreeIterator, criterion: (node: TreeNode) => node is T): T | undefined;
149 protected isVisibleSelectableNode(node: TreeNode): node is SelectableTreeNode;
150 protected createBackwardIterator(node: TreeNode | undefined): TreeIterator | undefined;
151 protected createIterator(node: TreeNode | undefined): TreeIterator | undefined;
152 protected createForwardIteratorForNode(node: TreeNode): TreeIterator;
153 openNode(raw?: TreeNode | undefined): void;
154 protected doOpenNode(node: TreeNode): void;
155 selectParent(): void;
156 navigateTo(nodeOrId: TreeNode | string | undefined): Promise<TreeNode | undefined>;
157 canNavigateForward(): boolean;
158 canNavigateBackward(): boolean;
159 navigateForward(): Promise<void>;
160 navigateBackward(): Promise<void>;
161 protected doNavigate(node: TreeNode): Promise<void>;
162 addSelection(selectionOrTreeNode: TreeSelection | Readonly<SelectableTreeNode>): void;
163 clearSelection(): void;
164 selectNode(node: Readonly<SelectableTreeNode>): void;
165 toggleNode(node: Readonly<SelectableTreeNode>): void;
166 selectRange(node: Readonly<SelectableTreeNode>): void;
167 storeState(): TreeModelImpl.State;
168 restoreState(state: TreeModelImpl.State): void;
169 get onDidChangeBusy(): Event<TreeNode>;
170 markAsBusy(node: Readonly<TreeNode>, ms: number, token: CancellationToken): Promise<void>;
171}
172export declare namespace TreeModelImpl {
173 interface State {
174 selection: object;
175 }
176}
177//# sourceMappingURL=tree-model.d.ts.map
\No newline at end of file