From 601bd4bd03bedd20e0b30234cf8e0733a95121c0 Mon Sep 17 00:00:00 2001 From: Amir Omidi Date: Thu, 12 Mar 2020 18:49:22 -0700 Subject: [PATCH] ok button target fix (#9561) --- .../azurecore/src/azureResource/commands.ts | 25 ++++++++++++++----- .../services/subscriptionFilterService.ts | 24 ++++++++++-------- src/vs/vscode.d.ts | 3 +++ .../workbench/api/common/extHostQuickOpen.ts | 13 ++++++++++ 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/extensions/azurecore/src/azureResource/commands.ts b/extensions/azurecore/src/azureResource/commands.ts index c4fff0658e..7682d07d1f 100644 --- a/extensions/azurecore/src/azureResource/commands.ts +++ b/extensions/azurecore/src/azureResource/commands.ts @@ -149,13 +149,26 @@ export function registerAzureResourceCommands(appContext: AppContext, tree: Azur }; }).sort((a, b) => a.label.localeCompare(b.label)); - const selectedSubscriptionQuickPickItems = await window.showQuickPick(subscriptionQuickPickItems, { canPickMany: true }); - if (selectedSubscriptionQuickPickItems && selectedSubscriptionQuickPickItems.length > 0) { - await tree.refresh(node, false); + const selectedQuickPickItems = subscriptionQuickPickItems.filter(s => s.picked); - selectedSubscriptions = selectedSubscriptionQuickPickItems.map((subscriptionItem) => subscriptionItem.subscription); - await subscriptionFilterService.saveSelectedSubscriptions(accountNode.account, selectedSubscriptions); - } + const quickPick = window.createQuickPick(); + quickPick.ok = true; + quickPick.items = subscriptionQuickPickItems; + quickPick.canSelectMany = true; + quickPick.selectedItems = selectedQuickPickItems; + + quickPick.show(); + + quickPick.onDidAccept(async event => { + quickPick.hide(); + const selectedSubscriptionQuickPickItems = quickPick.selectedItems; + if (selectedSubscriptionQuickPickItems && selectedSubscriptionQuickPickItems.length > 0) { + await tree.refresh(node, false); + + selectedSubscriptions = selectedSubscriptionQuickPickItems.map((subscriptionItem) => subscriptionItem.subscription); + await subscriptionFilterService.saveSelectedSubscriptions(accountNode.account, selectedSubscriptions); + } + }); }); appContext.apiWrapper.registerCommand('azure.resource.refreshall', () => tree.notifyNodeChanged(undefined)); diff --git a/extensions/azurecore/src/azureResource/services/subscriptionFilterService.ts b/extensions/azurecore/src/azureResource/services/subscriptionFilterService.ts index 16586401a5..2a1743cccd 100644 --- a/extensions/azurecore/src/azureResource/services/subscriptionFilterService.ts +++ b/extensions/azurecore/src/azureResource/services/subscriptionFilterService.ts @@ -54,19 +54,21 @@ export class AzureResourceSubscriptionFilterService implements IAzureResourceSub filters.push(...selectedSubscriptionsCache[accountId].map((subcription) => `${accountId}/${subcription.id}/${subcription.name}`)); } - const resourceFilterConfig = this._config.inspect(AzureResourceSubscriptionFilterService.filterConfigName); - let configTarget = ConfigurationTarget.Global; - if (resourceFilterConfig) { - if (resourceFilterConfig.workspaceFolderValue) { - configTarget = ConfigurationTarget.WorkspaceFolder; - } else if (resourceFilterConfig.workspaceValue) { - configTarget = ConfigurationTarget.Workspace; - } else if (resourceFilterConfig.globalValue) { - configTarget = ConfigurationTarget.Global; + if (this._config) { + const resourceFilterConfig = this._config.inspect(AzureResourceSubscriptionFilterService.filterConfigName); + let configTarget = ConfigurationTarget.Global; + if (resourceFilterConfig) { + if (resourceFilterConfig.workspaceFolderValue) { + configTarget = ConfigurationTarget.WorkspaceFolder; + } else if (resourceFilterConfig.workspaceValue) { + configTarget = ConfigurationTarget.Workspace; + } else if (resourceFilterConfig.globalValue) { + configTarget = ConfigurationTarget.Global; + } } - } - await this._config.update(AzureResourceSubscriptionFilterService.filterConfigName, filters, configTarget); + await this._config.update(AzureResourceSubscriptionFilterService.filterConfigName, filters, configTarget); + } } private _config: WorkspaceConfiguration = undefined; diff --git a/src/vs/vscode.d.ts b/src/vs/vscode.d.ts index 3ae0fc1e87..3581eb56a6 100644 --- a/src/vs/vscode.d.ts +++ b/src/vs/vscode.d.ts @@ -8096,6 +8096,9 @@ declare module 'vscode' { * An event signaling when the selected items have changed. */ readonly onDidChangeSelection: Event; + + // {SQL CARBON EDIT} Allow setting the behavior of the QuickPick + ok: boolean; } /** diff --git a/src/vs/workbench/api/common/extHostQuickOpen.ts b/src/vs/workbench/api/common/extHostQuickOpen.ts index ff7703bdd8..6e09d2684c 100644 --- a/src/vs/workbench/api/common/extHostQuickOpen.ts +++ b/src/vs/workbench/api/common/extHostQuickOpen.ts @@ -261,9 +261,22 @@ class ExtHostQuickInput implements QuickInput { this._onDidChangeValueEmitter ]; + constructor(protected _proxy: MainThreadQuickOpenShape, protected _extensionId: ExtensionIdentifier, private _onDidDispose: () => void) { } + // {SQL CARBON EDIT} START ok button visibility + private _ok = false; + get ok() { + return this._ok; + } + + set ok(ok: boolean) { + this._ok = ok; + this.update({ ok }); + } + // {SQL CARBON EDIT} END ok button visibility + get title() { return this._title; }