Merge VS Code 1.30.1 (#4092)

This commit is contained in:
Matt Irvine
2019-02-21 17:17:23 -08:00
committed by GitHub
parent a764a481f3
commit 826856c390
11465 changed files with 119542 additions and 255338 deletions

View File

@@ -316,6 +316,7 @@ export interface ToolbarLayout {
}
export class TreeComponentItem extends vsExtTypes.TreeItem {
label?: string;
checked?: boolean;
}
@@ -325,6 +326,7 @@ export enum AzureResource {
}
export class TreeItem extends vsExtTypes.TreeItem {
label?: string;
payload: IConnectionProfile;
providerHandle: string;
}

View File

@@ -7,7 +7,7 @@
import { IMainContext } from 'vs/workbench/api/node/extHost.protocol';
import { Emitter } from 'vs/base/common/event';
import { deepClone } from 'vs/base/common/objects';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import * as nls from 'vs/nls';
import * as vscode from 'vscode';
@@ -15,6 +15,7 @@ import * as sqlops from 'sqlops';
import { SqlMainContext, ExtHostModelViewShape, MainThreadModelViewShape, ExtHostModelViewTreeViewsShape } from 'sql/workbench/api/node/sqlExtHost.protocol';
import { IItemConfig, ModelComponentTypes, IComponentShape, IComponentEventArgs, ComponentEventType } from 'sql/workbench/api/common/sqlExtHostTypes';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
class ModelBuilderImpl implements sqlops.ModelBuilder {
private nextComponentId: number;
@@ -25,7 +26,7 @@ class ModelBuilderImpl implements sqlops.ModelBuilder {
private readonly _handle: number,
private readonly _mainContext: IMainContext,
private readonly _extHostModelViewTree: ExtHostModelViewTreeViewsShape,
private readonly _extensionLocation: URI
private readonly _extension: IExtensionDescription
) {
this.nextComponentId = 0;
}
@@ -81,7 +82,7 @@ class ModelBuilderImpl implements sqlops.ModelBuilder {
tree<T>(): sqlops.ComponentBuilder<sqlops.TreeComponent<T>> {
let id = this.getNextComponentId();
let builder: ComponentBuilderImpl<sqlops.TreeComponent<T>> = this.getComponentBuilder(new TreeComponentWrapper(this._extHostModelViewTree, this._proxy, this._handle, id), id);
let builder: ComponentBuilderImpl<sqlops.TreeComponent<T>> = this.getComponentBuilder(new TreeComponentWrapper(this._extHostModelViewTree, this._proxy, this._handle, id, this._extension), id);
this._componentBuilders.set(id, builder);
return builder;
}
@@ -116,7 +117,7 @@ class ModelBuilderImpl implements sqlops.ModelBuilder {
webView(): sqlops.ComponentBuilder<sqlops.WebViewComponent> {
let id = this.getNextComponentId();
let builder: ComponentBuilderImpl<sqlops.WebViewComponent> = this.getComponentBuilder(new WebViewWrapper(this._proxy, this._handle, id, this._extensionLocation), id);
let builder: ComponentBuilderImpl<sqlops.WebViewComponent> = this.getComponentBuilder(new WebViewWrapper(this._proxy, this._handle, id, this._extension.extensionLocation), id);
this._componentBuilders.set(id, builder);
return builder;
}
@@ -1237,14 +1238,14 @@ class TreeComponentWrapper<T> extends ComponentWrapper implements sqlops.TreeCom
constructor(
private _extHostModelViewTree: ExtHostModelViewTreeViewsShape,
proxy: MainThreadModelViewShape, handle: number, id: string) {
proxy: MainThreadModelViewShape, handle: number, id: string, private _extension: IExtensionDescription) {
super(proxy, handle, ModelComponentTypes.TreeComponent, id);
this.properties = {};
}
public registerDataProvider<T>(dataProvider: sqlops.TreeComponentDataProvider<T>): sqlops.TreeComponentView<T> {
this.setDataProvider();
return this._extHostModelViewTree.$createTreeView(this._handle, this.id, { treeDataProvider: dataProvider });
return this._extHostModelViewTree.$createTreeView(this._handle, this.id, { treeDataProvider: dataProvider }, this._extension);
}
public get withCheckbox(): boolean {
@@ -1293,9 +1294,9 @@ class ModelViewImpl implements sqlops.ModelView {
private readonly _serverInfo: sqlops.ServerInfo,
private readonly mainContext: IMainContext,
private readonly _extHostModelViewTree: ExtHostModelViewTreeViewsShape,
private readonly _extensionLocation: URI
_extension: IExtensionDescription
) {
this._modelBuilder = new ModelBuilderImpl(this._proxy, this._handle, this.mainContext, this._extHostModelViewTree, _extensionLocation);
this._modelBuilder = new ModelBuilderImpl(this._proxy, this._handle, this.mainContext, this._extHostModelViewTree, _extension);
}
public get onClosed(): vscode.Event<any> {
@@ -1346,7 +1347,7 @@ export class ExtHostModelView implements ExtHostModelViewShape {
private readonly _modelViews = new Map<number, ModelViewImpl>();
private readonly _handlers = new Map<string, (view: sqlops.ModelView) => void>();
private readonly _handlerToExtensionPath = new Map<string, URI>();
private readonly _handlerToExtension = new Map<string, IExtensionDescription>();
constructor(
private _mainContext: IMainContext,
private _extHostModelViewTree: ExtHostModelViewTreeViewsShape
@@ -1360,15 +1361,15 @@ export class ExtHostModelView implements ExtHostModelViewShape {
this._modelViews.delete(handle);
}
$registerProvider(widgetId: string, handler: (webview: sqlops.ModelView) => void, extensionLocation: URI): void {
$registerProvider(widgetId: string, handler: (webview: sqlops.ModelView) => void, extension: IExtensionDescription): void {
this._handlers.set(widgetId, handler);
this._handlerToExtensionPath.set(widgetId, extensionLocation);
this._handlerToExtension.set(widgetId, extension);
this._proxy.$registerProvider(widgetId);
}
$registerWidget(handle: number, id: string, connection: sqlops.connection.Connection, serverInfo: sqlops.ServerInfo): void {
let extensionLocation = this._handlerToExtensionPath.get(id);
let view = new ModelViewImpl(this._proxy, handle, connection, serverInfo, this._mainContext, this._extHostModelViewTree, extensionLocation);
let extension = this._handlerToExtension.get(id);
let view = new ModelViewImpl(this._proxy, handle, connection, serverInfo, this._mainContext, this._extHostModelViewTree, extension);
this._modelViews.set(handle, view);
this._handlers.get(id)(view);
}

View File

@@ -9,7 +9,7 @@ import { Event, Emitter } from 'vs/base/common/event';
import { deepClone } from 'vs/base/common/objects';
import * as nls from 'vs/nls';
import { generateUuid } from 'vs/base/common/uuid';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import * as vscode from 'vscode';
import * as sqlops from 'sqlops';
@@ -18,6 +18,7 @@ import { SqlMainContext, ExtHostModelViewDialogShape, MainThreadModelViewDialogS
import { IItemConfig, ModelComponentTypes, IComponentShape } from 'sql/workbench/api/common/sqlExtHostTypes';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { Inject } from '@angular/core';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
const DONE_LABEL = nls.localize('dialogDoneLabel', 'Done');
const CANCEL_LABEL = nls.localize('dialogCancelLabel', 'Cancel');
@@ -35,7 +36,7 @@ class ModelViewPanelImpl implements sqlops.window.ModelViewPanel {
constructor(private _viewType: string,
protected _extHostModelViewDialog: ExtHostModelViewDialog,
protected _extHostModelView: ExtHostModelViewShape,
protected _extensionLocation: URI) {
protected _extension: IExtensionDescription) {
this._onValidityChanged = this._extHostModelViewDialog.getValidityChangedEvent(this);
this._onValidityChanged(valid => this._valid = valid);
}
@@ -47,7 +48,7 @@ class ModelViewPanelImpl implements sqlops.window.ModelViewPanel {
this._extHostModelView.$registerProvider(viewId, modelView => {
this._modelView = modelView;
handler(modelView);
}, this._extensionLocation);
}, this._extension);
}
}
@@ -83,12 +84,12 @@ class ModelViewEditorImpl extends ModelViewPanelImpl implements sqlops.workspace
constructor(
extHostModelViewDialog: ExtHostModelViewDialog,
extHostModelView: ExtHostModelViewShape,
extensionLocation: URI,
extension: IExtensionDescription,
private _proxy: MainThreadModelViewDialogShape,
private _title: string,
private _options: sqlops.ModelViewEditorOptions
) {
super('modelViewEditor', extHostModelViewDialog, extHostModelView, extensionLocation);
super('modelViewEditor', extHostModelViewDialog, extHostModelView, extension);
this._isDirty = false;
}
@@ -132,8 +133,8 @@ class DialogImpl extends ModelViewPanelImpl implements sqlops.window.Dialog {
constructor(extHostModelViewDialog: ExtHostModelViewDialog,
extHostModelView: ExtHostModelViewShape,
extHostTaskManagement: ExtHostBackgroundTaskManagementShape,
extensionLocation: URI) {
super('modelViewDialog', extHostModelViewDialog, extHostModelView, extensionLocation);
extension: IExtensionDescription) {
super('modelViewDialog', extHostModelViewDialog, extHostModelView, extension);
this.okButton = this._extHostModelViewDialog.createButton(DONE_LABEL);
this.cancelButton = this._extHostModelViewDialog.createButton(CANCEL_LABEL);
this._operationHandler = new BackgroundOperationHandler('dialog', extHostTaskManagement);
@@ -185,8 +186,8 @@ class TabImpl extends ModelViewPanelImpl implements sqlops.window.DialogTab {
constructor(
extHostModelViewDialog: ExtHostModelViewDialog,
extHostModelView: ExtHostModelViewShape,
extensionLocation: URI) {
super('modelViewDialogTab', extHostModelViewDialog, extHostModelView, extensionLocation);
extension: IExtensionDescription) {
super('modelViewDialogTab', extHostModelViewDialog, extHostModelView, extension);
}
public title: string;
@@ -281,8 +282,8 @@ class WizardPageImpl extends ModelViewPanelImpl implements sqlops.window.WizardP
constructor(public title: string,
extHostModelViewDialog: ExtHostModelViewDialog,
extHostModelView: ExtHostModelViewShape,
extensionLocation: URI) {
super('modelViewWizardPage', extHostModelViewDialog, extHostModelView, extensionLocation);
extension: IExtensionDescription) {
super('modelViewWizardPage', extHostModelViewDialog, extHostModelView, extension);
}
public get enabled(): boolean {
@@ -523,8 +524,8 @@ export class ExtHostModelViewDialog implements ExtHostModelViewDialogShape {
this._proxy.$closeDialog(handle);
}
public createModelViewEditor(title: string, extensionLocation: URI, options?: sqlops.ModelViewEditorOptions): sqlops.workspace.ModelViewEditor {
let editor = new ModelViewEditorImpl(this, this._extHostModelView, extensionLocation, this._proxy, title, options);
public createModelViewEditor(title: string, extension: IExtensionDescription, options?: sqlops.ModelViewEditorOptions): sqlops.workspace.ModelViewEditor {
let editor = new ModelViewEditorImpl(this, this._extHostModelView, extension, this._proxy, title, options);
editor.handle = this.getHandle(editor);
return editor;
}
@@ -572,8 +573,8 @@ export class ExtHostModelViewDialog implements ExtHostModelViewDialogShape {
this._onClickCallbacks.set(handle, callback);
}
public createDialog(title: string, dialogName?: string, extensionLocation?: URI): sqlops.window.Dialog {
let dialog = new DialogImpl(this, this._extHostModelView, this._extHostTaskManagement, extensionLocation);
public createDialog(title: string, dialogName?: string, extension?: IExtensionDescription): sqlops.window.Dialog {
let dialog = new DialogImpl(this, this._extHostModelView, this._extHostTaskManagement, extension);
if (dialogName) {
dialog.dialogName = dialogName;
}
@@ -582,8 +583,8 @@ export class ExtHostModelViewDialog implements ExtHostModelViewDialogShape {
return dialog;
}
public createTab(title: string, extensionLocation?: URI): sqlops.window.DialogTab {
let tab = new TabImpl(this, this._extHostModelView, extensionLocation);
public createTab(title: string, extension?: IExtensionDescription): sqlops.window.DialogTab {
let tab = new TabImpl(this, this._extHostModelView, extension);
tab.title = title;
tab.handle = this.getHandle(tab);
return tab;
@@ -612,8 +613,8 @@ export class ExtHostModelViewDialog implements ExtHostModelViewDialogShape {
this._pageInfoChangedCallbacks.set(handle, callback);
}
public createWizardPage(title: string, extensionLocation?: URI): sqlops.window.WizardPage {
let page = new WizardPageImpl(title, this, this._extHostModelView, extensionLocation);
public createWizardPage(title: string, extension?: IExtensionDescription): sqlops.window.WizardPage {
let page = new WizardPageImpl(title, this, this._extHostModelView, extension);
page.handle = this.getHandle(page);
return page;
}

View File

@@ -10,11 +10,11 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { SqlMainContext, ExtHostModelViewTreeViewsShape, MainThreadModelViewShape } from 'sql/workbench/api/node/sqlExtHost.protocol';
import { ITreeComponentItem } from 'sql/workbench/common/views';
import { CommandsConverter } from 'vs/workbench/api/node/extHostCommands';
import { asWinJsPromise } from 'vs/base/common/async';
import { IMainContext } from 'vs/workbench/api/node/extHost.protocol';
import * as sqlops from 'sqlops';
import * as vsTreeExt from 'vs/workbench/api/node/extHostTreeViews';
import { Emitter } from 'vs/base/common/event';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
export class ExtHostModelViewTreeViews implements ExtHostModelViewTreeViewsShape {
private _proxy: MainThreadModelViewShape;
@@ -27,12 +27,12 @@ export class ExtHostModelViewTreeViews implements ExtHostModelViewTreeViewsShape
this._proxy = this._mainContext.getProxy(SqlMainContext.MainThreadModelView);
}
$createTreeView<T>(handle: number, componentId: string, options: { treeDataProvider: sqlops.TreeComponentDataProvider<T> }): sqlops.TreeComponentView<T> {
$createTreeView<T>(handle: number, componentId: string, options: { treeDataProvider: sqlops.TreeComponentDataProvider<T> }, extension: IExtensionDescription): sqlops.TreeComponentView<T> {
if (!options || !options.treeDataProvider) {
throw new Error('Options with treeDataProvider is mandatory');
}
const treeView = this.createExtHostTreeViewer(handle, componentId, options.treeDataProvider);
const treeView = this.createExtHostTreeViewer(handle, componentId, options.treeDataProvider, extension);
return {
dispose: () => {
this.treeViews.delete(componentId);
@@ -75,8 +75,8 @@ export class ExtHostModelViewTreeViews implements ExtHostModelViewTreeViewsShape
$setVisible(treeViewId: string, visible: boolean): void {
}
private createExtHostTreeViewer<T>(handle: number, id: string, dataProvider: sqlops.TreeComponentDataProvider<T>): ExtHostTreeView<T> {
const treeView = new ExtHostTreeView<T>(handle, id, dataProvider, this._proxy, undefined);
private createExtHostTreeViewer<T>(handle: number, id: string, dataProvider: sqlops.TreeComponentDataProvider<T>, extension: IExtensionDescription): ExtHostTreeView<T> {
const treeView = new ExtHostTreeView<T>(handle, id, dataProvider, this._proxy, undefined, extension);
this.treeViews.set(`${handle}-${id}`, treeView);
return treeView;
}
@@ -90,8 +90,8 @@ export class ExtHostTreeView<T> extends vsTreeExt.ExtHostTreeView<T> {
public readonly ChangeSelection: vscode.Event<vscode.TreeViewSelectionChangeEvent<T>> = this._onChangeSelection.event;
constructor(
private handle: number, private componentId: string, private componentDataProvider: sqlops.TreeComponentDataProvider<T>,
private modelViewProxy: MainThreadModelViewShape, commands: CommandsConverter) {
super(componentId, componentDataProvider, undefined, commands, undefined);
private modelViewProxy: MainThreadModelViewShape, commands: CommandsConverter, extension: IExtensionDescription) {
super(componentId, { treeDataProvider: componentDataProvider }, undefined, commands, undefined, extension);
}
onNodeCheckedChanged(parentHandle?: vsTreeExt.TreeItemHandle, checked?: boolean): void {
@@ -112,14 +112,14 @@ export class ExtHostTreeView<T> extends vsTreeExt.ExtHostTreeView<T> {
}
}
reveal(element: T, options?: { select?: boolean }): TPromise<void> {
reveal(element: T, options?: { select?: boolean }): Promise<void> {
if (typeof this.componentDataProvider.getParent !== 'function') {
return TPromise.wrapError(new Error(`Required registered TreeDataProvider to implement 'getParent' method to access 'reveal' method`));
return Promise.reject(new Error(`Required registered TreeDataProvider to implement 'getParent' method to access 'reveal' method`));
}
let i: void;
return this.resolveUnknownParentChain(element)
return Promise.resolve(this.resolveUnknownParentChain(element)
.then(parentChain => this.resolveTreeNode(element, parentChain[parentChain.length - 1])
.then(treeNode => i));
.then(treeNode => i)));
}
protected refreshElements(elements: T[]): void {
@@ -135,9 +135,9 @@ export class ExtHostTreeView<T> extends vsTreeExt.ExtHostTreeView<T> {
}
}
protected refreshHandles(itemHandles: vsTreeExt.TreeItemHandle[]): TPromise<void> {
protected refreshHandles(itemHandles: vsTreeExt.TreeItemHandle[]): Promise<void> {
const itemsToRefresh: { [treeItemHandle: string]: ITreeComponentItem } = {};
return TPromise.join(itemHandles.map(treeItemHandle =>
return Promise.all(itemHandles.map(treeItemHandle =>
this.refreshNode(treeItemHandle)
.then(node => {
if (node) {
@@ -147,11 +147,11 @@ export class ExtHostTreeView<T> extends vsTreeExt.ExtHostTreeView<T> {
.then(() => Object.keys(itemsToRefresh).length ? this.modelViewProxy.$refreshDataProvider(this.handle, this.componentId, itemsToRefresh) : null);
}
protected refreshNode(treeItemHandle: vsTreeExt.TreeItemHandle): TPromise<vsTreeExt.TreeNode> {
protected refreshNode(treeItemHandle: vsTreeExt.TreeItemHandle): Promise<vsTreeExt.TreeNode> {
const extElement = this.getExtensionElement(treeItemHandle);
const existing = this.nodes.get(extElement);
//this.clearChildren(extElement); // clear children cache
return asWinJsPromise(() => this.componentDataProvider.getTreeItem(extElement))
return Promise.resolve(this.componentDataProvider.getTreeItem(extElement))
.then(extTreeItem => {
if (extTreeItem) {
const newNode = this.createTreeNode(extElement, extTreeItem, existing.parent);

View File

@@ -11,11 +11,10 @@ import { TPromise } from 'vs/base/common/winjs.base';
import { IMainContext } from 'vs/workbench/api/node/extHost.protocol';
import { Disposable } from 'vs/workbench/api/node/extHostTypes';
import { localize } from 'vs/nls';
import URI, { UriComponents } from 'vs/base/common/uri';
import { URI, UriComponents } from 'vs/base/common/uri';
import { ExtHostNotebookShape, MainThreadNotebookShape, SqlMainContext } from 'sql/workbench/api/node/sqlExtHost.protocol';
import { INotebookManagerDetails, INotebookSessionDetails, INotebookKernelDetails, INotebookFutureDetails, FutureMessageType } from 'sql/workbench/api/common/sqlExtHostTypes';
import { Event, Emitter } from 'vs/base/common/event';
type Adapter = sqlops.nb.NotebookProvider | sqlops.nb.NotebookManager | sqlops.nb.ISession | sqlops.nb.IKernel | sqlops.nb.IFuture;

View File

@@ -7,7 +7,7 @@
import * as sqlops from 'sqlops';
import { IDisposable } from 'vs/base/common/lifecycle';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { ok } from 'vs/base/common/assert';
import { Schemas } from 'vs/base/common/network';
import { TPromise } from 'vs/base/common/winjs.base';

View File

@@ -9,7 +9,7 @@ import * as vscode from 'vscode';
import { Event, Emitter } from 'vs/base/common/event';
import { dispose } from 'vs/base/common/lifecycle';
import URI, { UriComponents } from 'vs/base/common/uri';
import { URI, UriComponents } from 'vs/base/common/uri';
import { Disposable } from 'vs/workbench/api/node/extHostTypes';
import * as typeConverters from 'vs/workbench/api/node/extHostTypeConverters';
import { IMainContext } from 'vs/workbench/api/node/extHost.protocol';

View File

@@ -8,7 +8,8 @@ import { SqlMainContext, MainThreadExtensionManagementShape } from 'sql/workbenc
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement';
import { IExtensionManagementService, IExtensionIdentifier } from 'vs/platform/extensionManagement/common/extensionManagement';
import { URI } from 'vs/base/common/uri';
@extHostNamedCustomer(SqlMainContext.MainThreadExtensionManagement)
export class MainThreadExtensionManagement implements MainThreadExtensionManagementShape {
@@ -27,6 +28,6 @@ export class MainThreadExtensionManagement implements MainThreadExtensionManagem
}
public $install(vsixPath: string): Thenable<string> {
return this._extensionService.install(vsixPath).then((value: void) => { return undefined; }, (reason: any) => { return reason ? reason.toString() : undefined; });
return this._extensionService.install(URI.parse(vsixPath)).then((value: IExtensionIdentifier) => { return undefined; }, (reason: any) => { return reason ? reason.toString() : undefined; });
}
}

View File

@@ -10,7 +10,7 @@ import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostC
import { Disposable } from 'vs/base/common/lifecycle';
import { IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
import { Event, Emitter } from 'vs/base/common/event';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { INotebookService, INotebookProvider, INotebookManager } from 'sql/workbench/services/notebook/common/notebookService';
import { INotebookManagerDetails, INotebookSessionDetails, INotebookKernelDetails, FutureMessageType, INotebookFutureDetails, INotebookFutureDone } from 'sql/workbench/api/common/sqlExtHostTypes';

View File

@@ -7,7 +7,7 @@
import * as sqlops from 'sqlops';
import { extHostNamedCustomer } from 'vs/workbench/api/electron-browser/extHostCustomers';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import URI, { UriComponents } from 'vs/base/common/uri';
import { URI, UriComponents } from 'vs/base/common/uri';
import { Event, Emitter } from 'vs/base/common/event';
import { IExtHostContext, IUndoStopOptions } from 'vs/workbench/api/node/extHost.protocol';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
@@ -326,11 +326,11 @@ export class MainThreadNotebookDocumentsAndEditors extends Disposable implements
return TPromise.as(editor.applyEdits(modelVersionId, edits, opts));
}
$runCell(id: string, cellUri: UriComponents): TPromise<boolean, any> {
$runCell(id: string, cellUri: UriComponents): Promise<boolean> {
// Requires an editor and the matching cell in that editor
let editor = this.getEditor(id);
if (!editor) {
return TPromise.wrapError<boolean>(disposed(`TextEditor(${id})`));
return Promise.reject(disposed(`TextEditor(${id})`));
}
let cell: ICellModel;
if (cellUri) {
@@ -345,10 +345,10 @@ export class MainThreadNotebookDocumentsAndEditors extends Disposable implements
}
}
if (!cell) {
return TPromise.wrapError<boolean>(disposed(`Could not find cell for this Notebook`));
return Promise.reject(disposed(`Could not find cell for this Notebook`));
}
return TPromise.wrap(editor.runCell(cell));
return editor.runCell(cell);
}
//#endregion

View File

@@ -7,12 +7,12 @@
import * as extHostApi from 'vs/workbench/api/node/extHost.api.impl';
import { TrieMap } from 'sql/base/common/map';
import { TPromise } from 'vs/base/common/winjs.base';
import { IInitData, IExtHostContext } from 'vs/workbench/api/node/extHost.protocol';
import { IInitData, IExtHostContext, IMainContext } from 'vs/workbench/api/node/extHost.protocol';
import { ExtHostExtensionService } from 'vs/workbench/api/node/extHostExtensionService';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
import { realpath } from 'fs';
import * as extHostTypes from 'vs/workbench/api/node/extHostTypes';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import * as sqlops from 'sqlops';
import * as vscode from 'vscode';
@@ -39,10 +39,12 @@ import { ExtHostQueryEditor } from 'sql/workbench/api/node/extHostQueryEditor';
import { ExtHostBackgroundTaskManagement } from './extHostBackgroundTaskManagement';
import { ExtHostNotebook } from 'sql/workbench/api/node/extHostNotebook';
import { ExtHostNotebookDocumentsAndEditors } from 'sql/workbench/api/node/extHostNotebookDocumentsAndEditors';
import { ExtHostStorage } from 'vs/workbench/api/node/extHostStorage';
import { ExtensionDescriptionRegistry } from 'vs/workbench/services/extensions/node/extensionDescriptionRegistry';
import { ExtHostExtensionManagement } from 'sql/workbench/api/node/extHostExtensionManagement';
export interface ISqlExtensionApiFactory {
vsCodeFactory(extension: IExtensionDescription): typeof vscode;
vsCodeFactory(extension: IExtensionDescription, registry: ExtensionDescriptionRegistry): typeof vscode;
sqlopsFactory(extension: IExtensionDescription): typeof sqlops;
}
@@ -51,13 +53,14 @@ export interface ISqlExtensionApiFactory {
*/
export function createApiFactory(
initData: IInitData,
rpcProtocol: IExtHostContext,
rpcProtocol: IMainContext,
extHostWorkspace: ExtHostWorkspace,
extHostConfiguration: ExtHostConfiguration,
extensionService: ExtHostExtensionService,
logService: ExtHostLogService
logService: ExtHostLogService,
extHostStorage: ExtHostStorage
): ISqlExtensionApiFactory {
let vsCodeFactory = extHostApi.createApiFactory(initData, rpcProtocol, extHostWorkspace, extHostConfiguration, extensionService, logService);
let vsCodeFactory = extHostApi.createApiFactory(initData, rpcProtocol, extHostWorkspace, extHostConfiguration, extensionService, logService, extHostStorage);
// Addressable instances
const extHostAccountManagement = rpcProtocol.set(SqlExtHostContext.ExtHostAccountManagement, new ExtHostAccountManagement(rpcProtocol));
@@ -373,11 +376,11 @@ export function createApiFactory(
const modelViewDialog: typeof sqlops.window.modelviewdialog = {
createDialog(title: string, dialogName?: string): sqlops.window.modelviewdialog.Dialog {
console.warn('the method sqlops.window.modelviewdialog.createDialog has been deprecated, replace it with sqlops.window.createModelViewDialog');
return extHostModelViewDialog.createDialog(title, dialogName, extension.extensionLocation);
return extHostModelViewDialog.createDialog(title, dialogName, extension);
},
createTab(title: string): sqlops.window.modelviewdialog.DialogTab {
console.warn('the method sqlops.window.modelviewdialog.createTab has been deprecated, replace it with sqlops.window.createTab');
return extHostModelViewDialog.createTab(title, extension.extensionLocation);
return extHostModelViewDialog.createTab(title, extension);
},
createButton(label: string): sqlops.window.modelviewdialog.Button {
console.warn('the method sqlops.window.modelviewdialog.createButton has been deprecated, replace it with sqlops.window.createButton');
@@ -412,10 +415,10 @@ export function createApiFactory(
return extHostModalDialogs.createDialog(name);
},
createModelViewDialog(title: string, dialogName?: string): sqlops.window.Dialog {
return extHostModelViewDialog.createDialog(title, dialogName, extension.extensionLocation);
return extHostModelViewDialog.createDialog(title, dialogName, extension);
},
createTab(title: string): sqlops.window.DialogTab {
return extHostModelViewDialog.createTab(title, extension.extensionLocation);
return extHostModelViewDialog.createTab(title, extension);
},
createButton(label: string): sqlops.window.Button {
return extHostModelViewDialog.createButton(label);
@@ -449,7 +452,7 @@ export function createApiFactory(
onDidOpenDashboard: extHostDashboard.onDidOpenDashboard,
onDidChangeToDashboard: extHostDashboard.onDidChangeToDashboard,
createModelViewEditor(title: string, options?: sqlops.ModelViewEditorOptions): sqlops.workspace.ModelViewEditor {
return extHostModelViewDialog.createModelViewEditor(title, extension.extensionLocation, options);
return extHostModelViewDialog.createModelViewEditor(title, extension, options);
}
};
@@ -461,7 +464,7 @@ export function createApiFactory(
const ui = {
registerModelViewProvider(modelViewId: string, handler: (view: sqlops.ModelView) => void): void {
extHostModelView.$registerProvider(modelViewId, handler, extension.extensionLocation);
extHostModelView.$registerProvider(modelViewId, handler, extension);
}
};
@@ -553,19 +556,19 @@ export function createApiFactory(
};
}
export function initializeExtensionApi(extensionService: ExtHostExtensionService, apiFactory: ISqlExtensionApiFactory): TPromise<void> {
return createExtensionPathIndex(extensionService).then(trie => defineAPI(apiFactory, trie));
export function initializeExtensionApi(extensionService: ExtHostExtensionService, apiFactory: ISqlExtensionApiFactory, extensionRegistry: ExtensionDescriptionRegistry): TPromise<void> {
return createExtensionPathIndex(extensionService, extensionRegistry).then(trie => defineAPI(apiFactory, trie, extensionRegistry));
}
function createExtensionPathIndex(extensionService: ExtHostExtensionService): TPromise<TrieMap<IExtensionDescription>> {
function createExtensionPathIndex(extensionService: ExtHostExtensionService, extensionRegistry: ExtensionDescriptionRegistry): Promise<TrieMap<IExtensionDescription>> {
// create trie to enable fast 'filename -> extension id' look up
const trie = new TrieMap<IExtensionDescription>(TrieMap.PathSplitter);
const extensions = extensionService.getAllExtensionDescriptions().map(ext => {
const extensions = extensionRegistry.getAllExtensionDescriptions().map(ext => {
if (!ext.main) {
return undefined;
}
return new TPromise((resolve, reject) => {
return new Promise((resolve, reject) => {
realpath(ext.extensionLocation.fsPath, (err, path) => {
if (err) {
reject(err);
@@ -577,10 +580,10 @@ function createExtensionPathIndex(extensionService: ExtHostExtensionService): TP
});
});
return TPromise.join(extensions).then(() => trie);
return Promise.all(extensions).then(() => trie);
}
function defineAPI(factory: ISqlExtensionApiFactory, extensionPaths: TrieMap<IExtensionDescription>): void {
function defineAPI(factory: ISqlExtensionApiFactory, extensionPaths: TrieMap<IExtensionDescription>, extensionRegistry: ExtensionDescriptionRegistry): void {
type ApiImpl = typeof vscode | typeof sqlops;
// each extension is meant to get its own api implementation
@@ -622,7 +625,7 @@ function defineAPI(factory: ISqlExtensionApiFactory, extensionPaths: TrieMap<IEx
// TODO look into de-duplicating this code
node_module._load = function load(request, parent, isMain) {
if (request === 'vscode') {
return getModuleFactory(extApiImpl, (ext) => factory.vsCodeFactory(ext),
return getModuleFactory(extApiImpl, (ext) => factory.vsCodeFactory(ext, extensionRegistry),
defaultApiImpl,
(impl) => defaultApiImpl = <typeof vscode>impl,
parent);

View File

@@ -44,5 +44,5 @@ export class SqlExtHostContribution implements IWorkbenchContribution {
// Register File Tracker
Registry.as<IWorkbenchContributionsRegistry>(WorkbenchExtensions.Workbench).registerWorkbenchContribution(
SqlExtHostContribution,
LifecyclePhase.Running
LifecyclePhase.Restored
);

View File

@@ -9,7 +9,7 @@ import {
createExtHostContextProxyIdentifier as createExtId,
ProxyIdentifier, IRPCProtocol
} from 'vs/workbench/services/extensions/node/proxyIdentifier';
import URI, { UriComponents } from 'vs/base/common/uri';
import { UriComponents } from 'vs/base/common/uri';
import { TPromise } from 'vs/base/common/winjs.base';
import { IDisposable } from 'vs/base/common/lifecycle';
@@ -25,6 +25,7 @@ import {
} from 'sql/workbench/api/common/sqlExtHostTypes';
import { EditorViewColumn } from 'vs/workbench/api/shared/editor';
import { IUndoStopOptions } from 'vs/workbench/api/node/extHost.protocol';
import { IExtensionDescription } from 'vs/workbench/services/extensions/common/extensions';
export abstract class ExtHostAccountManagementShape {
$autoOAuthCancelled(handle: number): Thenable<void> { throw ni(); }
@@ -671,7 +672,7 @@ export interface MainThreadDashboardWebviewShape extends IDisposable {
}
export interface ExtHostModelViewShape {
$registerProvider(widgetId: string, handler: (webview: sqlops.ModelView) => void, extensionLocation: UriComponents): void;
$registerProvider(widgetId: string, handler: (webview: sqlops.ModelView) => void, extension: IExtensionDescription): void;
$onClosed(handle: number): void;
$registerWidget(handle: number, id: string, connection: sqlops.connection.Connection, serverInfo: sqlops.ServerInfo): void;
$handleEvent(handle: number, id: string, eventArgs: any);
@@ -680,7 +681,7 @@ export interface ExtHostModelViewShape {
export interface ExtHostModelViewTreeViewsShape {
$getChildren(treeViewId: string, treeItemHandle?: string): TPromise<ITreeComponentItem[]>;
$createTreeView(handle: number, componentId: string, options: { treeDataProvider: vscode.TreeDataProvider<any> }): sqlops.TreeComponentView<any>;
$createTreeView(handle: number, componentId: string, options: { treeDataProvider: vscode.TreeDataProvider<any> }, extension: IExtensionDescription): sqlops.TreeComponentView<any>;
$onNodeCheckedChanged(treeViewId: string, treeItemHandle?: string, checked?: boolean): void;
$onNodeSelected(treeViewId: string, nodes: string[]): void;

View File

@@ -7,7 +7,7 @@
import { SelectBox } from 'sql/base/browser/ui/selectBox/selectBox';
import { Button } from 'sql/base/browser/ui/button/button';
import { Builder } from 'vs/base/browser/builder';
import { Builder } from 'sql/base/browser/builder';
import * as types from 'vs/base/common/types';
import * as sqlops from 'sqlops';
@@ -39,7 +39,7 @@ export function appendRowLink(container: Builder, label: string, labelClass: str
});
rowContainer.element('td', { class: cellContainerClass }, (inputCellContainer) => {
inputCellContainer.element('div', {}, (rowContainer) => {
rowButton = new Button(rowContainer);
rowButton = new Button(rowContainer.getHTMLElement());
});
});

View File

@@ -10,7 +10,7 @@ import { KeyCode, KeyMod } from 'vs/base/common/keyCodes';
import { mixin } from 'vs/base/common/objects';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { Builder, $ } from 'vs/base/browser/builder';
import { Builder, $ } from 'sql/base/browser/builder';
import * as DOM from 'vs/base/browser/dom';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { generateUuid } from 'vs/base/common/uuid';
@@ -178,7 +178,7 @@ export abstract class Modal extends Disposable implements IThemable {
this._modalHeaderSection = $().div({ class: 'modal-header' }, (modalHeader) => {
if (this._modalOptions.hasBackButton) {
modalHeader.div({ class: 'modal-go-back' }, (cellContainer) => {
this._backButton = new Button(cellContainer);
this._backButton = new Button(cellContainer.getHTMLElement());
this._backButton.icon = 'backButtonIcon';
this._backButton.title = localize('modalBack', "Back");
});
@@ -207,7 +207,7 @@ export abstract class Modal extends Disposable implements IThemable {
this._messageSeverity = messageSeverityContainer;
});
headerContainer.div({ class: 'dialog-message-button' }, (buttonContainer) => {
this._toggleMessageDetailButton = new Button(buttonContainer);
this._toggleMessageDetailButton = new Button(buttonContainer.getHTMLElement());
this._toggleMessageDetailButton.icon = 'message-details-icon';
this._toggleMessageDetailButton.label = SHOW_DETAILS_TEXT;
this._toggleMessageDetailButton.onDidClick((e) => {
@@ -215,7 +215,7 @@ export abstract class Modal extends Disposable implements IThemable {
});
});
headerContainer.div({ class: 'dialog-message-button' }, (buttonContainer) => {
this._copyMessageButton = new Button(buttonContainer);
this._copyMessageButton = new Button(buttonContainer.getHTMLElement());
this._copyMessageButton.icon = 'copy-message-icon';
this._copyMessageButton.label = COPY_TEXT;
this._copyMessageButton.onDidClick((e) => {
@@ -223,7 +223,7 @@ export abstract class Modal extends Disposable implements IThemable {
});
});
headerContainer.div({ class: 'dialog-message-button' }, (buttonContainer) => {
this._closeMessageButton = new Button(buttonContainer);
this._closeMessageButton = new Button(buttonContainer.getHTMLElement());
this._closeMessageButton.icon = 'close-message-icon';
this._closeMessageButton.label = CLOSE_TEXT;
this._closeMessageButton.onDidClick((e) => {
@@ -394,7 +394,7 @@ export abstract class Modal extends Disposable implements IThemable {
*/
protected show() {
this._modalShowingContext.get().push(this._staticKey);
this._builder.appendTo(document.getElementById(this._partService.getWorkbenchElementId()));
this._builder.appendTo(this._partService.getWorkbenchElement());
this.setFocusableElements();
@@ -447,7 +447,7 @@ export abstract class Modal extends Disposable implements IThemable {
*/
protected addFooterButton(label: string, onSelect: () => void, orientation: 'left' | 'right' = 'right'): Button {
let footerButton = $('div.footer-button');
let button = new Button(footerButton);
let button = new Button(footerButton.getHTMLElement());
button.label = label;
button.onDidClick(() => onSelect());
if (orientation === 'left') {

View File

@@ -27,7 +27,7 @@ import { IWorkbenchThemeService, IColorTheme } from 'vs/workbench/services/theme
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
import * as styler from 'vs/platform/theme/common/styler';
import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
import { Builder, $ } from 'vs/base/browser/builder';
import { Builder, $ } from 'sql/base/browser/builder';
import { Widget } from 'vs/base/browser/ui/widget';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { IViewletPanelOptions, ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet';

View File

@@ -6,7 +6,7 @@
'use strict';
import * as DialogHelper from './dialogHelper';
import { Builder } from 'vs/base/browser/builder';
import { Builder } from 'sql/base/browser/builder';
import { SelectBox } from 'sql/base/browser/ui/selectBox/selectBox';
import { MessageType } from 'vs/base/browser/ui/inputbox/inputBox';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';

View File

@@ -4,8 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import { IDataSource, ITree, IRenderer, ContextMenuEvent } from 'vs/base/parts/tree/browser/tree';
import { ViewContainer, TreeItemCollapsibleState, ITreeViewer, ITreeViewDataProvider, TreeViewItemHandleArg, ITreeItem as vsITreeItem } from 'vs/workbench/common/views';
import { IProgressService2 } from 'vs/workbench/services/progress/common/progress';
import { ViewContainer, TreeItemCollapsibleState, ITreeView, ITreeViewDataProvider, TreeViewItemHandleArg, ITreeItem as vsITreeItem } from 'vs/workbench/common/views';
import { TPromise } from 'vs/base/common/winjs.base';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
import { FileIconThemableWorkbenchTree } from 'vs/workbench/browser/parts/views/viewsViewlet';
@@ -22,7 +21,7 @@ import { MenuItemAction, IMenuService, MenuId } from 'vs/platform/actions/common
import { ContextAwareMenuItemActionItem, fillInContextMenuActions } from 'vs/platform/actions/browser/menuItemActionItem';
import { isUndefinedOrNull } from 'vs/base/common/types';
import { IActionItemProvider, ActionBar, ActionItem } from 'vs/base/browser/ui/actionbar/actionbar';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { LIGHT, FileThemeIcon, FolderThemeIcon } from 'vs/platform/theme/common/themeService';
import { basename } from 'vs/base/common/paths';
import { ResourceLabel } from 'vs/workbench/browser/labels';
@@ -37,17 +36,20 @@ import { equalsIgnoreCase } from 'vs/base/common/strings';
import { IOEShimService } from 'sql/parts/objectExplorer/common/objectExplorerViewTreeShim';
import { ITreeItem } from 'sql/workbench/common/views';
import { IProgressService2 } from 'vs/platform/progress/common/progress';
class Root implements ITreeItem {
constructor(public readonly childProvider: string) { }
label = 'root';
label = {
label: 'root'
};
handle = '0';
parentHandle = null;
collapsibleState = TreeItemCollapsibleState.Expanded;
children = void 0;
}
export class CustomTreeViewer extends Disposable implements ITreeViewer {
export class CustomTreeView extends Disposable implements ITreeView {
private isVisible: boolean = false;
private activated: boolean = false;
@@ -73,6 +75,12 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
private _onDidChangeVisibility: Emitter<boolean> = this._register(new Emitter<boolean>());
readonly onDidChangeVisibility: Event<boolean> = this._onDidChangeVisibility.event;
private _onDidChangeActions: Emitter<void> = this._register(new Emitter<void>());
readonly onDidChangeActions: Event<void> = this._onDidChangeActions.event;
public showCollapseAllAction: boolean = false;
public message = undefined;
constructor(
private id: string,
private container: ViewContainer,
@@ -112,6 +120,35 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
return this.isVisible;
}
expand(itemOrItems: ITreeItem | ITreeItem[]): Thenable<void> {
if (this.tree) {
itemOrItems = Array.isArray(itemOrItems) ? itemOrItems : [itemOrItems];
return this.tree.expandAll(itemOrItems);
}
return Promise.arguments(null);
}
setSelection(items: ITreeItem[]): void {
if (this.tree) {
this.tree.setSelection(items, { source: 'api' });
}
}
setFocus(item: ITreeItem): void {
if (this.tree) {
this.focus();
this.tree.setFocus(item);
}
}
getPrimaryActions(): IAction[] {
return [];
}
getSecondaryActions(): IAction[] {
return [];
}
setVisibility(isVisible: boolean): void {
isVisible = !!isVisible;
if (this.isVisible === isVisible) {
@@ -150,7 +187,7 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
// Make sure the current selected element is revealed
const selectedElement = this.tree.getSelection()[0];
if (selectedElement) {
this.tree.reveal(selectedElement, 0.5).done(null, errors.onUnexpectedError);
this.tree.reveal(selectedElement, 0.5).then(null, errors.onUnexpectedError);
}
// Pass Focus to Viewer
@@ -198,7 +235,7 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
return 0;
}
refresh(elements?: ITreeItem[]): TPromise<void> {
refresh(elements?: ITreeItem[]): Promise<void> {
if (this.tree) {
elements = elements || [this.root];
for (const element of elements) {
@@ -210,22 +247,24 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
this.elementsToRefresh.push(...elements);
}
}
return TPromise.as(null);
return Promise.resolve(null);
}
reveal(item: ITreeItem, parentChain: ITreeItem[], options?: { select?: boolean, focus?: boolean }): TPromise<void> {
reveal(item: ITreeItem, parentChain?: ITreeItem[], options?: { select?: boolean, focus?: boolean }): Thenable<void> {
if (this.tree && this.isVisible) {
options = options ? options : { select: false, focus: false };
const select = isUndefinedOrNull(options.select) ? false : options.select;
const focus = isUndefinedOrNull(options.focus) ? false : options.focus;
const root: Root = this.tree.getInput();
const promise = root.children ? TPromise.as(null) : this.refresh(); // Refresh if root is not populated
const promise = root.children ? Promise.resolve(null) : this.refresh(); // Refresh if root is not populated
return promise.then(() => {
var result = TPromise.as(null);
parentChain.forEach((e) => {
result = result.then(() => this.tree.expand(e));
});
if (parentChain) {
parentChain.forEach((e) => {
result = result.then(() => this.tree.expand(e));
});
}
return result.then(() => this.tree.reveal(item))
.then(() => {
if (select) {
@@ -238,7 +277,7 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
});
});
}
return TPromise.as(null);
return Promise.resolve(null);
}
private activate() {
@@ -248,11 +287,11 @@ export class CustomTreeViewer extends Disposable implements ITreeViewer {
}
}
private doRefresh(elements: ITreeItem[]): TPromise<void> {
private doRefresh(elements: ITreeItem[]): Promise<void> {
if (this.tree) {
return TPromise.join(elements.map(e => this.tree.refresh(e))).then(() => null);
return Promise.all(elements.map(e => this.tree.refresh(e))).then(() => null);
}
return TPromise.as(null);
return Promise.resolve(null);
}
private onSelection({ payload }: any): void {
@@ -293,7 +332,7 @@ class TreeDataSource implements IDataSource {
getChildren(tree: ITree, node: ITreeItem): TPromise<any[]> {
if (this.objectExplorerService.providerExists(node.childProvider)) {
return TPromise.wrap(this.progressService.withProgress({ location: this.container }, () => {
return TPromise.wrap(this.progressService.withProgress({ location: this.container.id }, () => {
// this is replicating what vscode does when calling initial children
if (node instanceof Root) {
node = deepClone(node);
@@ -364,8 +403,8 @@ class TreeRenderer implements IRenderer {
renderElement(tree: ITree, node: ITreeItem, templateId: string, templateData: ITreeExplorerTemplateData): void {
const resource = node.resourceUri ? URI.revive(node.resourceUri) : null;
const label = node.label ? node.label : resource ? basename(resource.path) : '';
let icon = this.themeService.getTheme().type === LIGHT ? node.icon : node.iconDark;
const label = node.label ? node.label.label : resource ? basename(resource.path) : '';
let icon = this.themeService.getTheme().type === LIGHT ? node.icon.path : node.iconDark.path;
const title = node.tooltip ? node.tooltip : resource ? void 0 : label;
// reset
@@ -496,9 +535,7 @@ class TreeController extends WorkbenchTreeController {
this.contextMenuService.showContextMenu({
getAnchor: () => anchor,
getActions: () => {
return TPromise.as(actions);
},
getActions: () => actions,
getActionItem: (action) => {
const keybinding = this._keybindingService.lookupKeybinding(action.id);

View File

@@ -21,7 +21,6 @@ import { IBackupUiService } from 'sql/workbench/services/backup/common/backupUiS
import { ObjectMetadata } from 'sqlops';
import { TPromise } from 'vs/base/common/winjs.base';
import { Action } from 'vs/base/common/actions';
import { IWindowsService } from 'vs/platform/windows/common/windows';
import * as nls from 'vs/nls';
@@ -53,13 +52,13 @@ export class NewQueryAction extends Task {
super({
id: NewQueryAction.ID,
title: NewQueryAction.LABEL,
iconPath: { dark: NewQueryAction.ICON, light: NewQueryAction.ICON },
iconPath: undefined,
iconClass: NewQueryAction.ICON
});
}
public runTask(accessor: ServicesAccessor, profile: IConnectionProfile): TPromise<void> {
return new TPromise<void>((resolve, reject) => {
public runTask(accessor: ServicesAccessor, profile: IConnectionProfile): Promise<void> {
return new Promise<void>((resolve, reject) => {
TaskUtilities.newQuery(
profile,
accessor.get<IConnectionManagementService>(IConnectionManagementService),
@@ -91,8 +90,8 @@ export class ScriptSelectAction extends Action {
super(id, label);
}
public run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
public run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.scriptSelect(
actionContext.profile,
actionContext.object,
@@ -124,8 +123,8 @@ export class ScriptExecuteAction extends Action {
super(id, label);
}
public run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
public run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.script(
actionContext.profile,
actionContext.object,
@@ -160,8 +159,8 @@ export class ScriptAlterAction extends Action {
super(id, label);
}
public run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
public run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.script(
actionContext.profile,
actionContext.object,
@@ -195,8 +194,8 @@ export class EditDataAction extends Action {
super(id, label);
}
public run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
public run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.scriptEditSelect(
actionContext.profile,
actionContext.object,
@@ -229,8 +228,8 @@ export class ScriptCreateAction extends Action {
super(id, label);
}
public run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
public run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.script(
actionContext.profile,
actionContext.object,
@@ -265,8 +264,8 @@ export class ScriptDeleteAction extends Action {
super(id, label);
}
public run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
public run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.script(
actionContext.profile,
actionContext.object,
@@ -296,12 +295,12 @@ export class BackupAction extends Task {
super({
id: BackupAction.ID,
title: BackupAction.LABEL,
iconPath: { dark: BackupAction.ICON, light: BackupAction.ICON },
iconPath: undefined,
iconClass: BackupAction.ICON
});
}
runTask(accessor: ServicesAccessor, profile: IConnectionProfile): TPromise<void> {
runTask(accessor: ServicesAccessor, profile: IConnectionProfile): Promise<void> {
if (!profile) {
let objectExplorerService = accessor.get<IObjectExplorerService>(IObjectExplorerService);
let connectionManagementService = accessor.get<IConnectionManagementService>(IConnectionManagementService);
@@ -311,12 +310,12 @@ export class BackupAction extends Task {
let configurationService = accessor.get<IWorkspaceConfigurationService>(IWorkspaceConfigurationService);
let previewFeaturesEnabled: boolean = configurationService.getValue('workbench')['enablePreviewFeatures'];
if (!previewFeaturesEnabled) {
return new TPromise<void>((resolve, reject) => {
return new Promise<void>((resolve, reject) => {
accessor.get<INotificationService>(INotificationService).info(nls.localize('backup.isPreviewFeature', 'You must enable preview features in order to use backup'));
});
}
return new TPromise<void>((resolve, reject) => {
return new Promise<void>((resolve, reject) => {
TaskUtilities.showBackup(
profile,
accessor.get<IBackupUiService>(IBackupUiService)
@@ -341,21 +340,21 @@ export class RestoreAction extends Task {
super({
id: RestoreAction.ID,
title: RestoreAction.LABEL,
iconPath: { dark: RestoreAction.ICON, light: RestoreAction.ICON },
iconPath: undefined,
iconClass: RestoreAction.ICON
});
}
runTask(accessor: ServicesAccessor, profile: IConnectionProfile): TPromise<void> {
runTask(accessor: ServicesAccessor, profile: IConnectionProfile): Promise<void> {
let configurationService = accessor.get<IWorkspaceConfigurationService>(IWorkspaceConfigurationService);
let previewFeaturesEnabled: boolean = configurationService.getValue('workbench')['enablePreviewFeatures'];
if (!previewFeaturesEnabled) {
return new TPromise<void>((resolve, reject) => {
return new Promise<void>((resolve, reject) => {
accessor.get<INotificationService>(INotificationService).info(nls.localize('restore.isPreviewFeature', 'You must enable preview features in order to use restore'));
});
}
return new TPromise<void>((resolve, reject) => {
return new Promise<void>((resolve, reject) => {
TaskUtilities.showRestore(
profile,
accessor.get<IRestoreDialogController>(IRestoreDialogController)
@@ -383,9 +382,9 @@ export class ManageAction extends Action {
super(id, label);
}
run(actionContext: ManageActionContext): TPromise<boolean> {
run(actionContext: ManageActionContext): Promise<boolean> {
let self = this;
return new TPromise<boolean>((resolve, reject) => {
return new Promise<boolean>((resolve, reject) => {
self._connectionManagementService.connect(actionContext.profile, actionContext.uri, { showDashboard: true, saveTheConnection: false, params: undefined, showConnectionDialogOnError: false, showFirewallRuleOnError: true }).then(
() => {
self._angularEventingService.sendAngularEvent(actionContext.uri, AngularEventType.NAV_DATABASE);
@@ -410,9 +409,9 @@ export class InsightAction extends Action {
super(id, label);
}
run(actionContext: InsightActionContext): TPromise<boolean> {
run(actionContext: InsightActionContext): Promise<boolean> {
let self = this;
return new TPromise<boolean>((resolve, reject) => {
return new Promise<boolean>((resolve, reject) => {
self._insightsDialogService.show(actionContext.insight, actionContext.profile);
resolve(true);
});
@@ -432,8 +431,8 @@ export class NewDatabaseAction extends Action {
super(id, label, icon);
}
run(actionContext: BaseActionContext): TPromise<boolean> {
return new TPromise<boolean>((resolve, reject) => {
run(actionContext: BaseActionContext): Promise<boolean> {
return new Promise<boolean>((resolve, reject) => {
TaskUtilities.showCreateDatabase(actionContext.profile, this._adminService, this._errorMessageService);
});
}
@@ -449,13 +448,13 @@ export class ConfigureDashboardAction extends Task {
super({
id: ConfigureDashboardAction.ID,
title: ConfigureDashboardAction.LABEL,
iconPath: { dark: ConfigureDashboardAction.ICON, light: ConfigureDashboardAction.ICON },
iconPath: undefined,
iconClass: ConfigureDashboardAction.ICON
});
}
runTask(accessor: ServicesAccessor): TPromise<void> {
return new TPromise<void>((resolve, reject) => {
runTask(accessor: ServicesAccessor): Promise<void> {
return new Promise<void>((resolve, reject) => {
accessor.get<IWindowsService>(IWindowsService).openExternal(ConfigureDashboardAction.configHelpUri).then((result) => {
resolve(void 0);
}, err => {

View File

@@ -8,7 +8,7 @@ import ConnectionConstants = require('sql/platform/connection/common/constants')
import { QueryInput } from 'sql/parts/query/common/queryInput';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { IEditorInput } from 'vs/workbench/common/editor';
/**

View File

@@ -5,7 +5,7 @@
'use strict';
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
@@ -28,7 +28,7 @@ export class EnablePreviewFeatures implements IWorkbenchContribution {
@IConfigurationService configurationService: IConfigurationService
) {
let previewFeaturesEnabled = configurationService.getValue('workbench')['enablePreviewFeatures'];
if (previewFeaturesEnabled || storageService.get(EnablePreviewFeatures.ENABLE_PREVIEW_FEATURES_SHOWN)) {
if (previewFeaturesEnabled || storageService.get(EnablePreviewFeatures.ENABLE_PREVIEW_FEATURES_SHOWN, StorageScope.GLOBAL)) {
return;
}
Promise.all([
@@ -48,7 +48,7 @@ export class EnablePreviewFeatures implements IWorkbenchContribution {
label: localize('enablePreviewFeatures.yes', "Yes"),
run: () => {
configurationService.updateValue('workbench.enablePreviewFeatures', true);
storageService.store(EnablePreviewFeatures.ENABLE_PREVIEW_FEATURES_SHOWN, true);
storageService.store(EnablePreviewFeatures.ENABLE_PREVIEW_FEATURES_SHOWN, true, StorageScope.GLOBAL);
}
}, {
label: localize('enablePreviewFeatures.no', "No"),
@@ -59,7 +59,7 @@ export class EnablePreviewFeatures implements IWorkbenchContribution {
label: localize('enablePreviewFeatures.never', "No, don't show again"),
run: () => {
configurationService.updateValue('workbench.enablePreviewFeatures', false);
storageService.store(EnablePreviewFeatures.ENABLE_PREVIEW_FEATURES_SHOWN, true);
storageService.store(EnablePreviewFeatures.ENABLE_PREVIEW_FEATURES_SHOWN, true, StorageScope.GLOBAL);
},
isSecondary: true
}]

File diff suppressed because it is too large Load Diff

View File

@@ -8,7 +8,7 @@
import 'vs/css!./media/connectionViewlet';
import * as DOM from 'vs/base/browser/dom';
import { TPromise } from 'vs/base/common/winjs.base';
import { Builder } from 'vs/base/browser/builder';
import { Builder } from 'sql/base/browser/builder';
import { Viewlet } from 'vs/workbench/browser/viewlet';
import { IAction } from 'vs/base/common/actions';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
@@ -27,6 +27,8 @@ import { IObjectExplorerService } from 'sql/workbench/services/objectExplorer/co
import { IPartService } from 'vs/workbench/services/part/common/partService';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { localize } from 'vs/nls';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { IConnectionsViewlet } from 'sql/workbench/parts/connection/common/connectionViewlet';
export class ConnectionViewlet extends Viewlet implements IConnectionsViewlet {
@@ -46,10 +48,12 @@ export class ConnectionViewlet extends Viewlet implements IConnectionsViewlet {
@IInstantiationService private _instantiationService: IInstantiationService,
@INotificationService private _notificationService: INotificationService,
@IObjectExplorerService private objectExplorerService: IObjectExplorerService,
@IPartService partService: IPartService
@IPartService partService: IPartService,
@IConfigurationService configurationService: IConfigurationService,
@IStorageService storageService: IStorageService
) {
super(VIEWLET_ID, partService, telemetryService, _themeService);
super(VIEWLET_ID, configurationService, partService, telemetryService, _themeService, storageService);
this._clearSearchAction = this._instantiationService.createInstance(ClearSearchAction, ClearSearchAction.ID, ClearSearchAction.LABEL, this);
this._addServerAction = this._instantiationService.createInstance(AddServerAction,
@@ -120,10 +124,9 @@ export class ConnectionViewlet extends Viewlet implements IConnectionsViewlet {
}
}
public setVisible(visible: boolean): TPromise<void> {
return super.setVisible(visible).then(() => {
this._serverTreeView.setVisible(visible);
});
public setVisible(visible: boolean): void {
super.setVisible(visible);
this._serverTreeView.setVisible(visible);
}
/**

View File

@@ -10,7 +10,7 @@ import { Button } from 'sql/base/browser/ui/button/button';
import { Modal } from 'sql/workbench/browser/modal/modal';
import * as TelemetryKeys from 'sql/common/telemetryKeys';
import { attachButtonStyler, attachModalDialogStyler } from 'sql/platform/theme/common/styler';
import { Builder } from 'vs/base/browser/builder';
import { Builder } from 'sql/base/browser/builder';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { IPartService, Parts } from 'vs/workbench/services/part/common/partService';
import { Event, Emitter } from 'vs/base/common/event';
@@ -39,9 +39,6 @@ export class WebViewDialog extends Modal {
private contentDisposables: IDisposable[] = [];
private _onMessage = new Emitter<any>();
protected contextKey: IContextKey<boolean>;
protected findInputFocusContextKey: IContextKey<boolean>;
constructor(
@IThemeService themeService: IThemeService,
@IClipboardService clipboardService: IClipboardService,
@@ -93,8 +90,6 @@ export class WebViewDialog extends Modal {
this._webview = this._instantiationService.createInstance(WebviewElement,
this._webViewPartService.getContainer(Parts.EDITOR_PART),
this.contextKey,
this.findInputFocusContextKey,
{
enableWrappedPostMessage: true,
allowScripts: true

View File

@@ -8,12 +8,13 @@
import * as sqlops from 'sqlops';
import * as platform from 'vs/platform/registry/common/platform';
import * as statusbar from 'vs/workbench/browser/parts/statusbar/statusbar';
import { StatusbarAlignment } from 'vs/platform/statusbar/common/statusbar';
import { Event, Emitter } from 'vs/base/common/event';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { Memento, Scope as MementoScope } from 'vs/workbench/common/memento';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { Memento } from 'vs/workbench/common/memento';
import AccountStore from 'sql/platform/accountManagement/common/accountStore';
import { AccountDialogController } from 'sql/parts/accountManagement/accountDialog/accountDialogController';
@@ -54,8 +55,8 @@ export class AccountManagementService implements IAccountManagementService {
) {
// Create the account store
if (!this._mementoObj) {
this._mementoContext = new Memento(AccountManagementService.ACCOUNT_MEMENTO);
this._mementoObj = this._mementoContext.getMemento(this._storageService, MementoScope.GLOBAL);
this._mementoContext = new Memento(AccountManagementService.ACCOUNT_MEMENTO, this._storageService);
this._mementoObj = this._mementoContext.getMemento(StorageScope.GLOBAL);
}
this._accountStore = this._instantiationService.createInstance(AccountStore, this._mementoObj);
@@ -67,7 +68,7 @@ export class AccountManagementService implements IAccountManagementService {
// Register status bar item
let statusbarDescriptor = new statusbar.StatusbarItemDescriptor(
AccountListStatusbarItem,
statusbar.StatusbarAlignment.LEFT,
StatusbarAlignment.LEFT,
15000 /* Highest Priority */
);
(<statusbar.IStatusbarRegistry>platform.Registry.as(statusbar.Extensions.Statusbar)).registerStatusbarItem(statusbarDescriptor);

View File

@@ -375,7 +375,7 @@ export class ConnectionDialogService implements IConnectionDialogService {
private doShowDialog(params: INewConnectionParams): TPromise<void> {
if (!this._connectionDialog) {
let container = document.getElementById(this._partService.getWorkbenchElementId()).parentElement;
let container = this._partService.getWorkbenchElement().parentElement;
this._container = container;
this._connectionDialog = this._instantiationService.createInstance(ConnectionDialogWidget, this._providerTypes, this._providerNameToDisplayNameMap[this._model.providerName], this._providerNameToDisplayNameMap);
this._connectionDialog.onCancel(() => {

View File

@@ -25,7 +25,7 @@ import { IWorkbenchThemeService, IColorTheme } from 'vs/workbench/services/theme
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
import { IPartService } from 'vs/workbench/services/part/common/partService';
import { Event, Emitter } from 'vs/base/common/event';
import { Builder, $ } from 'vs/base/browser/builder';
import { Builder, $ } from 'sql/base/browser/builder';
import { ICancelableEvent } from 'vs/base/parts/tree/browser/treeDefaults';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';

View File

@@ -32,7 +32,7 @@ import { localize } from 'vs/nls';
import * as DOM from 'vs/base/browser/dom';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { OS, OperatingSystem } from 'vs/base/common/platform';
import { Builder, $ } from 'vs/base/browser/builder';
import { Builder, $ } from 'sql/base/browser/builder';
import { MessageType } from 'vs/base/browser/ui/inputbox/inputBox';
import { endsWith, startsWith } from 'vs/base/common/strings';
import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService';
@@ -264,7 +264,7 @@ export class ConnectionWidget {
rowContainer.element('td');
rowContainer.element('td', { align: 'right' }, (cellContainer) => {
cellContainer.div({ class: 'advanced-button' }, (divContainer) => {
button = new Button(divContainer);
button = new Button(divContainer.getHTMLElement());
button.label = title;
button.onDidClick(() => {
//open advanced page

View File

@@ -17,7 +17,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
import { attachListStyler } from 'vs/platform/theme/common/styler';
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { IVirtualDelegate, IRenderer } from 'vs/base/browser/ui/list/list';
import { IListVirtualDelegate, IListRenderer } from 'vs/base/browser/ui/list/list';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyCode } from 'vs/base/common/keyCodes';
@@ -28,8 +28,9 @@ import * as TelemetryKeys from 'sql/common/telemetryKeys';
import { NewDashboardTabViewModel, IDashboardUITab } from 'sql/workbench/services/dashboard/common/newDashboardTabViewModel';
import { IDashboardTab } from 'sql/platform/dashboard/common/dashboardRegistry';
import { IClipboardService } from 'sql/platform/clipboard/common/clipboardService';
import { Orientation } from 'vs/base/browser/ui/sash/sash';
class ExtensionListDelegate implements IVirtualDelegate<IDashboardUITab> {
class ExtensionListDelegate implements IListVirtualDelegate<IDashboardUITab> {
constructor(
private _height: number
@@ -53,7 +54,7 @@ interface ExtensionListTemplate {
publisher: HTMLElement;
}
class ExtensionListRenderer implements IRenderer<IDashboardUITab, ExtensionListTemplate> {
class ExtensionListRenderer implements IListRenderer<IDashboardUITab, ExtensionListTemplate> {
public static TEMPLATE_ID = 'extensionListRenderer';
private static readonly OPENED_TAB_CLASS = 'success';
private static readonly ICON_CLASS = 'extension-status-icon icon';

View File

@@ -11,7 +11,7 @@ import { Modal } from 'sql/workbench/browser/modal/modal';
import * as TelemetryKeys from 'sql/common/telemetryKeys';
import { attachButtonStyler, attachModalDialogStyler } from 'sql/platform/theme/common/styler';
import { Builder } from 'vs/base/browser/builder';
import { Builder } from 'sql/base/browser/builder';
import Severity from 'vs/base/common/severity';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { SIDE_BAR_BACKGROUND, SIDE_BAR_FOREGROUND } from 'vs/workbench/common/theme';

View File

@@ -19,11 +19,9 @@ import { FileBrowserTreeView } from 'sql/workbench/services/fileBrowser/browser/
import { FileBrowserViewModel } from 'sql/workbench/services/fileBrowser/common/fileBrowserViewModel';
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
import { Builder } from 'vs/base/browser/builder';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { Builder } from 'sql/base/browser/builder';
import { MessageType } from 'vs/base/browser/ui/inputbox/inputBox';
import { Event, Emitter } from 'vs/base/common/event';
import { KeyCode } from 'vs/base/common/keyCodes';
import { localize } from 'vs/nls';
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';

View File

@@ -7,7 +7,7 @@
import { FileNode } from 'sql/workbench/services/fileBrowser/common/fileNode';
import { ITree, IRenderer } from 'vs/base/parts/tree/browser/tree';
import { FileKind } from 'vs/platform/files/common/files';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { FileLabel } from 'vs/workbench/browser/labels';
import { IFileTemplateData } from 'vs/workbench/parts/files/electron-browser/views/explorerViewer';

View File

@@ -252,7 +252,7 @@ export class InsightsDialogView extends Modal {
this._register(this._bottomTable.onContextMenu(e => {
this._contextMenuService.showContextMenu({
getAnchor: () => e.anchor,
getActions: () => TPromise.as([this._instantiationService.createInstance(CopyInsightDialogSelectionAction, CopyInsightDialogSelectionAction.ID, CopyInsightDialogSelectionAction.LABEL)]),
getActions: () => [this._instantiationService.createInstance(CopyInsightDialogSelectionAction, CopyInsightDialogSelectionAction.ID, CopyInsightDialogSelectionAction.LABEL)],
getActionsContext: () => this.bottomInsightContext(this._bottomTableData.getItem(e.cell.row), e.cell)
});
}));
@@ -388,7 +388,7 @@ export class InsightsDialogView extends Modal {
&& this._insight.actions.types.length > 0);
}
private get insightActions(): TPromise<IAction[]> {
private get insightActions(): IAction[] {
let tasks = TaskRegistry.getTasks();
let actions = this._insight.actions.types;
let returnActions: IAction[] = [];
@@ -399,7 +399,7 @@ export class InsightsDialogView extends Modal {
returnActions.push(this._instantiationService.createInstance(ExecuteCommandAction, commandAction.id, commandAction.title));
}
}
return TPromise.as(returnActions);
return returnActions;
}
/**

View File

@@ -73,7 +73,7 @@ export class InsightsDialogController {
filePathArray = filePathArray.filter(i => !!i);
let folder = this._workspaceContextService.getWorkspace().folders.find(i => i.name === filePathArray[0]);
if (!folder) {
return Promise.reject<void>(new Error(`Could not find workspace folder ${filePathArray[0]}`));
return Promise.reject(new Error(`Could not find workspace folder ${filePathArray[0]}`));
}
// remove the folder name from the filepath
filePathArray.shift();

View File

@@ -9,7 +9,7 @@ import * as sqlops from 'sqlops';
import { Event } from 'vs/base/common/event';
import { createDecorator } from 'vs/platform/instantiation/common/instantiation';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { IBootstrapParams } from 'sql/services/bootstrap/bootstrapService';
import { RenderMimeRegistry } from 'sql/parts/notebook/outputs/registry';
import { ModelFactory } from 'sql/parts/notebook/models/modelFactory';

View File

@@ -7,7 +7,7 @@
import { nb } from 'sqlops';
import { localize } from 'vs/nls';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { Registry } from 'vs/platform/registry/common/platform';
import {
@@ -21,7 +21,7 @@ import { SessionManager, noKernel } from 'sql/workbench/services/notebook/common
import { Extensions, INotebookProviderRegistry, NotebookProviderRegistration } from 'sql/workbench/services/notebook/common/notebookRegistry';
import { Emitter, Event } from 'vs/base/common/event';
import { Memento } from 'vs/workbench/common/memento';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions';
import { IExtensionManagementService, IExtensionIdentifier } from 'vs/platform/extensionManagement/common/extensionManagement';
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
@@ -79,7 +79,7 @@ class ProviderDescriptor {
export class NotebookService extends Disposable implements INotebookService {
_serviceBrand: any;
private _memento = new Memento('notebookProviders');
private _memento: Memento;
private _mimeRegistry: RenderMimeRegistry;
private _providers: Map<string, ProviderDescriptor> = new Map();
private _managersMap: Map<string, INotebookManager[]> = new Map();
@@ -109,6 +109,7 @@ export class NotebookService extends Disposable implements INotebookService {
@IQueryManagementService private readonly _queryManagementService
) {
super();
this._memento = new Memento('notebookProviders', this._storageService);
this._register(notebookRegistry.onNewRegistration(this.updateRegisteredProviders, this));
this.registerBuiltInProvider();
@@ -432,7 +433,7 @@ export class NotebookService extends Disposable implements INotebookService {
}
private get providersMemento(): NotebookProvidersMemento {
return this._memento.getMemento(this._storageService) as NotebookProvidersMemento;
return this._memento.getMemento(StorageScope.GLOBAL) as NotebookProvidersMemento;
}
private cleanupProviders(): void {

View File

@@ -11,7 +11,7 @@ import { nb } from 'sqlops';
import * as json from 'vs/base/common/json';
import * as pfs from 'vs/base/node/pfs';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { localize } from 'vs/nls';
import { JSONObject } from 'sql/parts/notebook/models/jsonext';
@@ -40,7 +40,7 @@ export class LocalContentManager implements nb.ContentManager {
return v3.readNotebook(<any>contents);
}
if (contents.nbformat) {
throw new TypeError(localize('nbformatNotRecognized', 'nbformat v{0}.{1} not recognized', contents.nbformat, contents.nbformat_minor));
throw new TypeError(localize('nbformatNotRecognized', 'nbformat v{0}.{1} not recognized', contents.nbformat as any, contents.nbformat_minor as any));
}
} else if (stringContents === '' || stringContents === undefined) {
// Empty?

View File

@@ -677,9 +677,8 @@ export class ObjectExplorerService implements IObjectExplorerService {
*/
public getNodeActions(connectionId: string, nodePath: string): Thenable<string[]> {
return this.getTreeNode(connectionId, nodePath).then(node => {
return this._serverTreeView.treeActionProvider.getActions(this._serverTreeView.tree, this.getTreeItem(node)).then((actions) => {
return actions.filter(action => action.label).map(action => action.label);
});
let actions = this._serverTreeView.treeActionProvider.getActions(this._serverTreeView.tree, this.getTreeItem(node));
return actions.filter(action => action.label).map(action => action.label);
});
}

View File

@@ -19,8 +19,8 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { INotificationService } from 'vs/platform/notification/common/notification';
import { ICommandService } from 'vs/platform/commands/common/commands';
import { IStorageService } from 'vs/platform/storage/common/storage';
import { Scope as MementoScope, Memento } from 'vs/workbench/common/memento';
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
import { Memento } from 'vs/workbench/common/memento';
import { ProfilerFilterDialog } from 'sql/parts/profiler/dialog/profilerFilterDialog';
class TwoWayMap<T, K> {
@@ -66,8 +66,8 @@ export class ProfilerService implements IProfilerService {
@ICommandService private _commandService: ICommandService,
@IStorageService private _storageService: IStorageService
) {
this._context = new Memento('ProfilerEditor');
this._memento = this._context.getMemento(this._storageService, MementoScope.GLOBAL);
this._context = new Memento('ProfilerEditor', this._storageService);
this._memento = this._context.getMemento(StorageScope.GLOBAL);
}
public registerProvider(providerId: string, provider: sqlops.ProfilerProvider): void {

View File

@@ -21,7 +21,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti
import { FileEditorInput } from 'vs/workbench/parts/files/common/editors/fileEditorInput';
import Severity from 'vs/base/common/severity';
import nls = require('vs/nls');
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import paths = require('vs/base/common/paths');
import { isLinux } from 'vs/base/common/platform';
import { Schemas } from 'vs/base/common/network';
@@ -29,6 +29,7 @@ import { INotificationService } from 'vs/platform/notification/common/notificati
import { EditDataResultsInput } from 'sql/parts/editData/common/editDataResultsInput';
import { IEditorInput, IEditor } from 'vs/workbench/common/editor';
import { ICodeEditor } from 'vs/editor/browser/editorBrowser';
import { ILanguageSelection } from 'vs/editor/common/services/modeService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
const fs = require('fs');
@@ -74,7 +75,7 @@ export class QueryEditorService implements IQueryEditorService {
* Creates new untitled document for SQL query and opens in new editor tab
*/
public newSqlEditor(sqlContent?: string, connectionProviderName?: string, isDirty?: boolean): Promise<IConnectableInput> {
return new Promise<IConnectableInput>((resolve, reject) => {
return new Promise<IConnectableInput>(async (resolve, reject) => {
try {
// Create file path and file URI
let filePath = this.createUntitledSqlFilePath();
@@ -82,14 +83,13 @@ export class QueryEditorService implements IQueryEditorService {
// Create a sql document pane with accoutrements
const fileInput = this._untitledEditorService.createOrGet(docUri, 'sql');
fileInput.resolve().then(m => {
if (sqlContent) {
m.textEditorModel.setValue(sqlContent);
if (isDirty === false || (isDirty === undefined && !this._configurationService.getValue<boolean>('sql.promptToSaveGeneratedFiles'))) {
m.setDirty(false);
}
let untitledEditorModel = await fileInput.resolve();
if (sqlContent) {
untitledEditorModel.textEditorModel.setValue(sqlContent);
if (isDirty === false || (isDirty === undefined && !this._configurationService.getValue<boolean>('sql.promptToSaveGeneratedFiles'))) {
untitledEditorModel.setDirty(false);
}
});
}
const queryResultsInput: QueryResultsInput = this._instantiationService.createInstance(QueryResultsInput, docUri.toString());
let queryInput: QueryInput = this._instantiationService.createInstance(QueryInput, '', fileInput, queryResultsInput, connectionProviderName);
@@ -195,12 +195,12 @@ export class QueryEditorService implements IQueryEditorService {
* In all other cases (when SQL is involved in the language change and the editor is not dirty),
* returns a promise that will resolve when the old editor has been replaced by a new editor.
*/
public static sqlLanguageModeCheck(model: ITextModel, mode: IMode, editor: IEditor): Promise<ITextModel> {
if (!model || !mode || !editor) {
public static sqlLanguageModeCheck(model: ITextModel, languageSelection: ILanguageSelection, editor: IEditor): Promise<ITextModel> {
if (!model || !languageSelection || !editor) {
return Promise.resolve(undefined);
}
let newLanguage: string = mode.getLanguageIdentifier().language;
let newLanguage: string = languageSelection.languageIdentifier.language;
let oldLanguage: string = model.getLanguageIdentifier().language;
let changingToSql = sqlModeId === newLanguage;
let changingFromSql = sqlModeId === oldLanguage;

View File

@@ -7,7 +7,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'
import { IConnectableInput } from 'sql/platform/connection/common/connectionManagement';
import { IEditorOptions } from 'vs/platform/editor/common/editor';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
export interface IQueryEditorOptions extends IEditorOptions {

View File

@@ -11,7 +11,7 @@ import { Action } from 'vs/base/common/actions';
import pkg from 'vs/platform/node/package';
import product from 'vs/platform/node/product';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import URI from 'vs/base/common/uri';
import { URI } from 'vs/base/common/uri';
import { IOpenerService } from 'vs/platform/opener/common/opener';
import { AbstractShowReleaseNotesAction } from 'vs/workbench/parts/update/electron-browser/update';