From 84e5cdec2936f3d4b947a609d5cd1a3695222577 Mon Sep 17 00:00:00 2001 From: Sandeep Somavarapu Date: Fri, 11 Dec 2020 12:54:07 +0100 Subject: [PATCH] #92038 Use menu registry --- .../userDataSync/browser/userDataSync.ts | 50 +++++++++++++++--- .../userDataSync/browser/userDataSyncViews.ts | 52 ++----------------- 2 files changed, 46 insertions(+), 56 deletions(-) diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts index 8a1aa13b2d8..29c63183c85 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSync.ts @@ -20,7 +20,7 @@ import { localize } from 'vs/nls'; import { MenuId, MenuRegistry, registerAction2, Action2 } from 'vs/platform/actions/common/actions'; import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; +import { ContextKeyEqualsExpr, ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; @@ -50,8 +50,10 @@ import { IAuthenticationService } from 'vs/workbench/services/authentication/bro import { Registry } from 'vs/platform/registry/common/platform'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { ViewContainerLocation, IViewContainersRegistry, Extensions, ViewContainer } from 'vs/workbench/common/views'; -import { UserDataSyncViewPaneContainer, UserDataSyncDataViews } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncViews'; +import { UserDataSyncDataViews } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncViews'; import { IUserDataSyncWorkbenchService, getSyncAreaLabel, AccountStatus, CONTEXT_SYNC_STATE, CONTEXT_SYNC_ENABLEMENT, CONTEXT_ACCOUNT_STATE, CONFIGURE_SYNC_COMMAND_ID, SHOW_SYNC_LOG_COMMAND_ID, SYNC_VIEW_CONTAINER_ID, SYNC_TITLE, SYNC_VIEW_ICON } from 'vs/workbench/services/userDataSync/common/userDataSync'; +import { Codicon } from 'vs/base/common/codicons'; +import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; const CONTEXT_CONFLICTS_SOURCES = new RawContextKey('conflictsSources', ''); @@ -732,6 +734,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo this.registerConfigureSyncAction(); this.registerShowSettingsAction(); this.registerShowLogAction(); + this.registerResetSyncDataAction(); } private registerTurnOnSyncAction(): void { @@ -1064,10 +1067,17 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo super({ id: configureSyncCommand.id, title: configureSyncCommand.title, - menu: { + icon: Codicon.settingsGear, + tooltip: localize('configure', "Configure..."), + menu: [{ id: MenuId.CommandPalette, when - } + }, { + id: MenuId.ViewContainerTitle, + when: ContextKeyEqualsExpr.create('viewContainer', SYNC_VIEW_CONTAINER_ID), + group: 'navigation', + order: 2 + }] }); } run(): any { return that.configureSyncOptions(); } @@ -1081,10 +1091,17 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo super({ id: SHOW_SYNC_LOG_COMMAND_ID, title: localize('show sync log title', "{0}: Show Log", SYNC_TITLE), - menu: { + tooltip: localize('show sync log toolrip', "Show Log"), + icon: Codicon.output, + menu: [{ id: MenuId.CommandPalette, when: ContextKeyExpr.and(CONTEXT_SYNC_STATE.notEqualsTo(SyncStatus.Uninitialized)), - }, + }, { + id: MenuId.ViewContainerTitle, + when: ContextKeyEqualsExpr.create('viewContainer', SYNC_VIEW_CONTAINER_ID), + group: 'navigation', + order: 1 + }], }); } run(): any { return that.showSyncActivity(); } @@ -1120,14 +1137,31 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo id: SYNC_VIEW_CONTAINER_ID, name: SYNC_TITLE, ctorDescriptor: new SyncDescriptor( - UserDataSyncViewPaneContainer, - [SYNC_VIEW_CONTAINER_ID] + ViewPaneContainer, + [SYNC_VIEW_CONTAINER_ID, { mergeViewWithContainerWhenSingleView: true }] ), icon: SYNC_VIEW_ICON, hideIfEmpty: true, }, ViewContainerLocation.Sidebar); } + private registerResetSyncDataAction(): void { + const that = this; + this._register(registerAction2(class extends Action2 { + constructor() { + super({ + id: 'workbench.actions.syncData.reset', + title: localize('workbench.actions.syncData.reset', "Clear Data in Cloud..."), + menu: [{ + id: MenuId.ViewContainerTitle, + when: ContextKeyEqualsExpr.create('viewContainer', SYNC_VIEW_CONTAINER_ID) + }], + }); + } + run(): any { return that.userDataSyncWorkbenchService.resetSyncedData(); } + })); + } + private registerDataViews(container: ViewContainer): void { this._register(this.instantiationService.createInstance(UserDataSyncDataViews, container)); } diff --git a/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts b/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts index d26d9dd1aa0..86c71c405da 100644 --- a/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts +++ b/src/vs/workbench/contrib/userDataSync/browser/userDataSyncViews.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Registry } from 'vs/platform/registry/common/platform'; -import { IViewsRegistry, Extensions, ITreeViewDescriptor, ITreeViewDataProvider, ITreeItem, TreeItemCollapsibleState, TreeViewItemHandleArg, ViewContainer, IViewDescriptorService } from 'vs/workbench/common/views'; +import { IViewsRegistry, Extensions, ITreeViewDescriptor, ITreeViewDataProvider, ITreeItem, TreeItemCollapsibleState, TreeViewItemHandleArg, ViewContainer } from 'vs/workbench/common/views'; import { localize } from 'vs/nls'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { TreeView, TreeViewPane } from 'vs/workbench/browser/parts/views/treeView'; @@ -14,23 +14,14 @@ import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/act import { ContextKeyExpr, ContextKeyEqualsExpr } from 'vs/platform/contextkey/common/contextkey'; import { URI } from 'vs/base/common/uri'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; -import { FolderThemeIcon, IThemeService } from 'vs/platform/theme/common/themeService'; +import { FolderThemeIcon } from 'vs/platform/theme/common/themeService'; import { fromNow } from 'vs/base/common/date'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { Event } from 'vs/base/common/event'; import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; -import { ICommandService } from 'vs/platform/commands/common/commands'; -import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; -import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { Codicon } from 'vs/base/common/codicons'; -import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; -import { IStorageService } from 'vs/platform/storage/common/storage'; -import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { IExtensionService } from 'vs/workbench/services/extensions/common/extensions'; -import { IAction, Action } from 'vs/base/common/actions'; -import { IUserDataSyncWorkbenchService, CONTEXT_SYNC_STATE, getSyncAreaLabel, CONTEXT_ACCOUNT_STATE, AccountStatus, CONTEXT_ENABLE_ACTIVITY_VIEWS, SHOW_SYNC_LOG_COMMAND_ID, CONFIGURE_SYNC_COMMAND_ID, SYNC_MERGES_VIEW_ID, CONTEXT_ENABLE_SYNC_MERGES_VIEW, SYNC_TITLE } from 'vs/workbench/services/userDataSync/common/userDataSync'; +import { Action } from 'vs/base/common/actions'; +import { IUserDataSyncWorkbenchService, CONTEXT_SYNC_STATE, getSyncAreaLabel, CONTEXT_ACCOUNT_STATE, AccountStatus, CONTEXT_ENABLE_ACTIVITY_VIEWS, SYNC_MERGES_VIEW_ID, CONTEXT_ENABLE_SYNC_MERGES_VIEW, SYNC_TITLE } from 'vs/workbench/services/userDataSync/common/userDataSync'; import { IUserDataSyncMachinesService, IUserDataSyncMachine } from 'vs/platform/userDataSync/common/userDataSyncMachines'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; @@ -38,41 +29,6 @@ import { flatten } from 'vs/base/common/arrays'; import { UserDataSyncMergesViewPane } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncMergesView'; import { basename } from 'vs/base/common/resources'; -export class UserDataSyncViewPaneContainer extends ViewPaneContainer { - - constructor( - containerId: string, - @IUserDataSyncWorkbenchService private readonly userDataSyncWorkbenchService: IUserDataSyncWorkbenchService, - @ICommandService private readonly commandService: ICommandService, - @IWorkbenchLayoutService layoutService: IWorkbenchLayoutService, - @ITelemetryService telemetryService: ITelemetryService, - @IInstantiationService instantiationService: IInstantiationService, - @IThemeService themeService: IThemeService, - @IConfigurationService configurationService: IConfigurationService, - @IStorageService storageService: IStorageService, - @IWorkspaceContextService contextService: IWorkspaceContextService, - @IContextMenuService contextMenuService: IContextMenuService, - @IExtensionService extensionService: IExtensionService, - @IViewDescriptorService viewDescriptorService: IViewDescriptorService, - ) { - super(containerId, { mergeViewWithContainerWhenSingleView: true }, instantiationService, configurationService, layoutService, contextMenuService, telemetryService, extensionService, themeService, storageService, contextService, viewDescriptorService); - } - - getActions(): IAction[] { - return [ - new Action(SHOW_SYNC_LOG_COMMAND_ID, localize('showLog', "Show Log"), Codicon.output.classNames, true, async () => this.commandService.executeCommand(SHOW_SYNC_LOG_COMMAND_ID)), - new Action(CONFIGURE_SYNC_COMMAND_ID, localize('configure', "Configure..."), Codicon.settingsGear.classNames, true, async () => this.commandService.executeCommand(CONFIGURE_SYNC_COMMAND_ID)), - ]; - } - - getSecondaryActions(): IAction[] { - return [ - new Action('workbench.actions.syncData.reset', localize('workbench.actions.syncData.reset', "Clear Data in Cloud..."), undefined, true, () => this.userDataSyncWorkbenchService.resetSyncedData()), - ]; - } - -} - export class UserDataSyncDataViews extends Disposable { constructor( -- GitLab