/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; import * as azdata from 'azdata'; /** * Wrapper class to act as a facade over VSCode and Data APIs and allow us to test / mock callbacks into * this API from our code * * @export */ export class ApiWrapper { // Data APIs public registerConnectionProvider(provider: azdata.ConnectionProvider): vscode.Disposable { return azdata.dataprotocol.registerConnectionProvider(provider); } public registerObjectExplorerNodeProvider(provider: azdata.ObjectExplorerNodeProvider): vscode.Disposable { return azdata.dataprotocol.registerObjectExplorerNodeProvider(provider); } public registerTaskServicesProvider(provider: azdata.TaskServicesProvider): vscode.Disposable { return azdata.dataprotocol.registerTaskServicesProvider(provider); } public registerFileBrowserProvider(provider: azdata.FileBrowserProvider): vscode.Disposable { return azdata.dataprotocol.registerFileBrowserProvider(provider); } public createDialog(title: string, dialogName?: string, isWide?: boolean): azdata.window.Dialog { return azdata.window.createModelViewDialog(title, dialogName, isWide); } public openDialog(dialog: azdata.window.Dialog): void { return azdata.window.openDialog(dialog); } public closeDialog(dialog: azdata.window.Dialog): void { return azdata.window.closeDialog(dialog); } public registerTaskHandler(taskId: string, handler: (profile: azdata.IConnectionProfile) => void): void { azdata.tasks.registerTask(taskId, handler); } public startBackgroundOperation(operationInfo: azdata.BackgroundOperationInfo): void { azdata.tasks.startBackgroundOperation(operationInfo); } public getActiveConnections(): Thenable { return azdata.connection.getActiveConnections(); } // VSCode APIs public executeCommand(command: string, ...rest: any[]): Thenable { return vscode.commands.executeCommand(command, ...rest); } public registerCommand(command: string, callback: (...args: any[]) => any, thisArg?: any): vscode.Disposable { return vscode.commands.registerCommand(command, callback, thisArg); } public showErrorMessage(message: string, ...items: string[]): Thenable { return vscode.window.showErrorMessage(message, ...items); } public showWarningMessage(message: string, ...items: string[]): Thenable { return vscode.window.showWarningMessage(message, ...items); } public showInformationMessage(message: string, ...items: string[]): Thenable { return vscode.window.showInformationMessage(message, ...items); } public showOpenDialog(options: vscode.OpenDialogOptions): Thenable { return vscode.window.showOpenDialog(options); } public showSaveDialog(options: vscode.SaveDialogOptions): Thenable { return vscode.window.showSaveDialog(options); } public openTextDocument(uri: vscode.Uri): Thenable; public openTextDocument(options: { language?: string; content?: string; }): Thenable; public openTextDocument(uriOrOptions: any): Thenable { return vscode.workspace.openTextDocument(uriOrOptions); } public showTextDocument(document: vscode.TextDocument, column?: vscode.ViewColumn, preserveFocus?: boolean, preview?: boolean): Thenable { let options: vscode.TextDocumentShowOptions = { viewColumn: column, preserveFocus: preserveFocus, preview: preview }; return vscode.window.showTextDocument(document, options); } public get workspaceFolders(): vscode.WorkspaceFolder[] { return vscode.workspace.workspaceFolders; } public createStatusBarItem(alignment?: vscode.StatusBarAlignment, priority?: number): vscode.StatusBarItem { return vscode.window.createStatusBarItem(alignment, priority); } public createOutputChannel(name: string): vscode.OutputChannel { return vscode.window.createOutputChannel(name); } public createTab(title: string): azdata.window.DialogTab { return azdata.window.createTab(title); } }