提交 84e5cdec 编写于 作者: S Sandeep Somavarapu

#92038 Use menu registry

上级 a029dda2
...@@ -20,7 +20,7 @@ import { localize } from 'vs/nls'; ...@@ -20,7 +20,7 @@ import { localize } from 'vs/nls';
import { MenuId, MenuRegistry, registerAction2, Action2 } from 'vs/platform/actions/common/actions'; import { MenuId, MenuRegistry, registerAction2, Action2 } from 'vs/platform/actions/common/actions';
import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; 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 { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
...@@ -50,8 +50,10 @@ import { IAuthenticationService } from 'vs/workbench/services/authentication/bro ...@@ -50,8 +50,10 @@ import { IAuthenticationService } from 'vs/workbench/services/authentication/bro
import { Registry } from 'vs/platform/registry/common/platform'; import { Registry } from 'vs/platform/registry/common/platform';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { ViewContainerLocation, IViewContainersRegistry, Extensions, ViewContainer } from 'vs/workbench/common/views'; 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 { 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<string>('conflictsSources', ''); const CONTEXT_CONFLICTS_SOURCES = new RawContextKey<string>('conflictsSources', '');
...@@ -732,6 +734,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo ...@@ -732,6 +734,7 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
this.registerConfigureSyncAction(); this.registerConfigureSyncAction();
this.registerShowSettingsAction(); this.registerShowSettingsAction();
this.registerShowLogAction(); this.registerShowLogAction();
this.registerResetSyncDataAction();
} }
private registerTurnOnSyncAction(): void { private registerTurnOnSyncAction(): void {
...@@ -1064,10 +1067,17 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo ...@@ -1064,10 +1067,17 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
super({ super({
id: configureSyncCommand.id, id: configureSyncCommand.id,
title: configureSyncCommand.title, title: configureSyncCommand.title,
menu: { icon: Codicon.settingsGear,
tooltip: localize('configure', "Configure..."),
menu: [{
id: MenuId.CommandPalette, id: MenuId.CommandPalette,
when when
} }, {
id: MenuId.ViewContainerTitle,
when: ContextKeyEqualsExpr.create('viewContainer', SYNC_VIEW_CONTAINER_ID),
group: 'navigation',
order: 2
}]
}); });
} }
run(): any { return that.configureSyncOptions(); } run(): any { return that.configureSyncOptions(); }
...@@ -1081,10 +1091,17 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo ...@@ -1081,10 +1091,17 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
super({ super({
id: SHOW_SYNC_LOG_COMMAND_ID, id: SHOW_SYNC_LOG_COMMAND_ID,
title: localize('show sync log title', "{0}: Show Log", SYNC_TITLE), 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, id: MenuId.CommandPalette,
when: ContextKeyExpr.and(CONTEXT_SYNC_STATE.notEqualsTo(SyncStatus.Uninitialized)), 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(); } run(): any { return that.showSyncActivity(); }
...@@ -1120,14 +1137,31 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo ...@@ -1120,14 +1137,31 @@ export class UserDataSyncWorkbenchContribution extends Disposable implements IWo
id: SYNC_VIEW_CONTAINER_ID, id: SYNC_VIEW_CONTAINER_ID,
name: SYNC_TITLE, name: SYNC_TITLE,
ctorDescriptor: new SyncDescriptor( ctorDescriptor: new SyncDescriptor(
UserDataSyncViewPaneContainer, ViewPaneContainer,
[SYNC_VIEW_CONTAINER_ID] [SYNC_VIEW_CONTAINER_ID, { mergeViewWithContainerWhenSingleView: true }]
), ),
icon: SYNC_VIEW_ICON, icon: SYNC_VIEW_ICON,
hideIfEmpty: true, hideIfEmpty: true,
}, ViewContainerLocation.Sidebar); }, 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 { private registerDataViews(container: ViewContainer): void {
this._register(this.instantiationService.createInstance(UserDataSyncDataViews, container)); this._register(this.instantiationService.createInstance(UserDataSyncDataViews, container));
} }
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/ *--------------------------------------------------------------------------------------------*/
import { Registry } from 'vs/platform/registry/common/platform'; 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 { localize } from 'vs/nls';
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
import { TreeView, TreeViewPane } from 'vs/workbench/browser/parts/views/treeView'; import { TreeView, TreeViewPane } from 'vs/workbench/browser/parts/views/treeView';
...@@ -14,23 +14,14 @@ import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/act ...@@ -14,23 +14,14 @@ import { registerAction2, Action2, MenuId } from 'vs/platform/actions/common/act
import { ContextKeyExpr, ContextKeyEqualsExpr } from 'vs/platform/contextkey/common/contextkey'; import { ContextKeyExpr, ContextKeyEqualsExpr } from 'vs/platform/contextkey/common/contextkey';
import { URI } from 'vs/base/common/uri'; import { URI } from 'vs/base/common/uri';
import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; 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 { fromNow } from 'vs/base/common/date';
import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
import { Event } from 'vs/base/common/event'; import { Event } from 'vs/base/common/event';
import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; 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 { Codicon } from 'vs/base/common/codicons';
import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { Action } from 'vs/base/common/actions';
import { IStorageService } from 'vs/platform/storage/common/storage'; 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 { 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 { IUserDataSyncMachinesService, IUserDataSyncMachine } from 'vs/platform/userDataSync/common/userDataSyncMachines'; import { IUserDataSyncMachinesService, IUserDataSyncMachine } from 'vs/platform/userDataSync/common/userDataSyncMachines';
import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { INotificationService, Severity } from 'vs/platform/notification/common/notification'; import { INotificationService, Severity } from 'vs/platform/notification/common/notification';
...@@ -38,41 +29,6 @@ import { flatten } from 'vs/base/common/arrays'; ...@@ -38,41 +29,6 @@ import { flatten } from 'vs/base/common/arrays';
import { UserDataSyncMergesViewPane } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncMergesView'; import { UserDataSyncMergesViewPane } from 'vs/workbench/contrib/userDataSync/browser/userDataSyncMergesView';
import { basename } from 'vs/base/common/resources'; 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 { export class UserDataSyncDataViews extends Disposable {
constructor( constructor(
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册