/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ // This is the place for API experiments and proposal. declare module 'vscode' { export namespace window { export function sampleFunction(): Thenable; } export namespace window { /** * Register a [TreeExplorerNodeProvider](#TreeExplorerNodeProvider). * * @param providerId A unique id that identifies the provider. * @param provider A [TreeExplorerNodeProvider](#TreeExplorerNodeProvider). * @return A [disposable](#Disposable) that unregisters this provider when being disposed. */ export function registerTreeExplorerNodeProvider(providerId: string, provider: TreeExplorerNodeProvider): Disposable; } /** * A node provider for a tree explorer contribution. * * Providers are registered through (#window.registerTreeExplorerNodeProvider) with a * `providerId` that corresponds to the `treeExplorerNodeProviderId` in the extension's * `contributes.explorer` section. * * The contributed tree explorer will ask the corresponding provider to provide the root * node and resolve children for each node. In addition, the provider could **optionally** * provide the following information for each node: * - label: A human-readable label used for rendering the node. * - hasChildren: Whether the node has children and is expandable. * - clickCommand: A command to execute when the node is clicked. */ export interface TreeExplorerNodeProvider { /** * Provide the root node. This function will be called when the tree explorer is activated * for the first time. The root node is hidden and its direct children will be displayed on the first level of * the tree explorer. * * @return The root node. */ provideRootNode(): T | Thenable; /** * Resolve the children of `node`. * * @param node The node from which the provider resolves children. * @return Children of `node`. */ resolveChildren(node: T): T[] | Thenable; /** * Provide a human-readable string that will be used for rendering the node. Default to use * `node.toString()` if not provided. * * @param node The node from which the provider computes label. * @return A human-readable label. */ getLabel?(node: T): string; /** * Determine if `node` has children and is expandable. Default to `true` if not provided. * * @param node The node to determine if it has children and is expandable. * @return A boolean that determines if `node` has children and is expandable. */ getHasChildren?(node: T): boolean; /** * Get the command to execute when `node` is clicked. * * Commands can be registered through [registerCommand](#commands.registerCommand). `node` will be provided * as the first argument to the command's callback function. * * @param node The node that the command is associated with. * @return The command to execute when `node` is clicked. */ getClickCommand?(node: T): string; } export interface SCMResource { uri: Uri; } export interface SCMResourceGroup { resources: SCMResource[]; } export interface SCMProvider { commitCommand?: string; clickCommand?: string; dragCommand?: string; resourceGroups: SCMResourceGroup[]; onDidChangeResourceGroup: Event; getOriginalResource?(uri: Uri, token: CancellationToken): ProviderResult; } export namespace scm { export const onDidChangeActiveProvider: Event; export let activeProvider: SCMProvider | undefined; export function registerSCMProvider(id: string, provider: SCMProvider): Disposable; } }