debt - decouple empty workspace support from enter multi-root workspace support
This commit is contained in:
parent
d00c6a45bc
commit
24fb75382d
|
@ -12,7 +12,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
|
|||
import { ADD_ROOT_FOLDER_COMMAND_ID, ADD_ROOT_FOLDER_LABEL, PICK_WORKSPACE_FOLDER_COMMAND_ID } from 'vs/workbench/browser/actions/workspaceCommands';
|
||||
import { IDialogService, IFileDialogService } from 'vs/platform/dialogs/common/dialogs';
|
||||
import { MenuRegistry, MenuId, Action2, registerAction2, ILocalizedString } from 'vs/platform/actions/common/actions';
|
||||
import { EmptyWorkspaceSupportContext, WorkbenchStateContext, WorkspaceFolderCountContext } from 'vs/workbench/browser/contextkeys';
|
||||
import { EmptyWorkspaceSupportContext, EnterMultiRootWorkspaceSupportContext, WorkbenchStateContext, WorkspaceFolderCountContext } from 'vs/workbench/browser/contextkeys';
|
||||
import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
|
||||
import Severity from 'vs/base/common/severity';
|
||||
import { IHostService } from 'vs/workbench/services/host/browser/host';
|
||||
|
@ -307,35 +307,6 @@ registerAction2(DuplicateWorkspaceInNewWindowAction);
|
|||
|
||||
// --- Menu Registration
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '3_workspace',
|
||||
command: {
|
||||
id: ADD_ROOT_FOLDER_COMMAND_ID,
|
||||
title: localize({ key: 'miAddFolderToWorkspace', comment: ['&& denotes a mnemonic'] }, "A&&dd Folder to Workspace...")
|
||||
},
|
||||
order: 1
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '3_workspace',
|
||||
command: {
|
||||
id: SaveWorkspaceAsAction.ID,
|
||||
title: localize('miSaveWorkspaceAs', "Save Workspace As...")
|
||||
},
|
||||
order: 2,
|
||||
when: EmptyWorkspaceSupportContext
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '3_workspace',
|
||||
command: {
|
||||
id: DuplicateWorkspaceInNewWindowAction.ID,
|
||||
title: localize('duplicateWorkspace', "Duplicate Workspace")
|
||||
},
|
||||
order: 3,
|
||||
when: EmptyWorkspaceSupportContext
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '2_open',
|
||||
command: {
|
||||
|
@ -372,7 +343,37 @@ MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
|||
id: OpenWorkspaceAction.ID,
|
||||
title: localize({ key: 'miOpenWorkspace', comment: ['&& denotes a mnemonic'] }, "Open Wor&&kspace...")
|
||||
},
|
||||
order: 3
|
||||
order: 3,
|
||||
when: EnterMultiRootWorkspaceSupportContext
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '3_workspace',
|
||||
command: {
|
||||
id: ADD_ROOT_FOLDER_COMMAND_ID,
|
||||
title: localize({ key: 'miAddFolderToWorkspace', comment: ['&& denotes a mnemonic'] }, "A&&dd Folder to Workspace...")
|
||||
},
|
||||
order: 1
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '3_workspace',
|
||||
command: {
|
||||
id: SaveWorkspaceAsAction.ID,
|
||||
title: localize('miSaveWorkspaceAs', "Save Workspace As...")
|
||||
},
|
||||
order: 2,
|
||||
when: EnterMultiRootWorkspaceSupportContext
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
group: '3_workspace',
|
||||
command: {
|
||||
id: DuplicateWorkspaceInNewWindowAction.ID,
|
||||
title: localize('duplicateWorkspace', "Duplicate Workspace")
|
||||
},
|
||||
order: 3,
|
||||
when: EnterMultiRootWorkspaceSupportContext
|
||||
});
|
||||
|
||||
MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, {
|
||||
|
|
|
@ -26,6 +26,8 @@ import { IEditorResolverService } from 'vs/workbench/services/editor/common/edit
|
|||
|
||||
export const WorkbenchStateContext = new RawContextKey<string>('workbenchState', undefined, { type: 'string', description: localize('workbenchState', "The kind of workspace opened in the window, either 'empty' (no workspace), 'folder' (single folder) or 'workspace' (multi-root workspace)") });
|
||||
export const WorkspaceFolderCountContext = new RawContextKey<number>('workspaceFolderCount', 0, localize('workspaceFolderCount', "The number of root folders in the workspace"));
|
||||
|
||||
export const EnterMultiRootWorkspaceSupportContext = new RawContextKey<boolean>('enterMultiRootWorkspaceSupport', true, true);
|
||||
export const EmptyWorkspaceSupportContext = new RawContextKey<boolean>('emptyWorkspaceSupport', true, true);
|
||||
|
||||
export const DirtyWorkingCopiesContext = new RawContextKey<boolean>('dirtyWorkingCopies', false, localize('dirtyWorkingCopies', "Whether there are any dirty working copies"));
|
||||
|
@ -60,7 +62,9 @@ export class WorkbenchContextKeysHandler extends Disposable {
|
|||
|
||||
private workbenchStateContext: IContextKey<string>;
|
||||
private workspaceFolderCountContext: IContextKey<number>;
|
||||
|
||||
private emptyWorkspaceSupportContext: IContextKey<boolean>;
|
||||
private enterMultiRootWorkspaceSupportContext: IContextKey<boolean>;
|
||||
|
||||
private inZenModeContext: IContextKey<boolean>;
|
||||
private isFullscreenContext: IContextKey<boolean>;
|
||||
|
@ -135,12 +139,24 @@ export class WorkbenchContextKeysHandler extends Disposable {
|
|||
this.workspaceFolderCountContext = WorkspaceFolderCountContext.bindTo(this.contextKeyService);
|
||||
this.updateWorkspaceFolderCountContextKey();
|
||||
|
||||
// Empty workspace support: empty workspaces require a default "local" file
|
||||
// system to operate with. We always have one when running natively or when
|
||||
// we have a remote connection.
|
||||
// Empty workspace support: empty workspaces require built-in file system
|
||||
// providers to be available that allow to enter a workspace or open loose
|
||||
// files. This condition is met:
|
||||
// - desktop: always
|
||||
// - web: only when connected to a remote
|
||||
this.emptyWorkspaceSupportContext = EmptyWorkspaceSupportContext.bindTo(this.contextKeyService);
|
||||
this.emptyWorkspaceSupportContext.set(isNative || typeof this.environmentService.remoteAuthority === 'string');
|
||||
|
||||
// Entering a multi root workspace support: support for entering a multi-root
|
||||
// workspace (e.g. "Open Workspace...", "Duplicate Workspace", "Save Workspace")
|
||||
// is driven by the ability to resolve a workspace configuration file (*.code-workspace)
|
||||
// with a built-in file system provider.
|
||||
// This condition is met:
|
||||
// - desktop: always
|
||||
// - web: only when connected to a remote
|
||||
this.enterMultiRootWorkspaceSupportContext = EnterMultiRootWorkspaceSupportContext.bindTo(this.contextKeyService);
|
||||
this.enterMultiRootWorkspaceSupportContext.set(isNative || typeof this.environmentService.remoteAuthority === 'string');
|
||||
|
||||
// Editor Layout
|
||||
this.splitEditorsVerticallyContext = SplitEditorsVertically.bindTo(this.contextKeyService);
|
||||
this.updateSplitEditorsVerticallyContext();
|
||||
|
|
Loading…
Reference in a new issue