From 210c849d9524481763aac793c39e1c4ba91e67bd Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Wed, 31 Oct 2018 16:07:08 -0700 Subject: [PATCH 01/11] add context keys for appearance menu --- .../browser/actions/toggleCenteredLayout.ts | 4 ++- .../actions/toggleSidebarVisibility.ts | 4 ++- .../browser/actions/toggleZenMode.ts | 4 ++- .../browser/parts/panel/panelActions.ts | 4 ++- .../browser/parts/titlebar/menubarControl.ts | 36 ++++++++++++------- src/vs/workbench/common/editor.ts | 2 ++ .../electron-browser/main.contribution.ts | 7 ++-- .../workbench/electron-browser/workbench.ts | 11 +++++- 8 files changed, 53 insertions(+), 19 deletions(-) diff --git a/src/vs/workbench/browser/actions/toggleCenteredLayout.ts b/src/vs/workbench/browser/actions/toggleCenteredLayout.ts index 1d33820971d..db590a23145 100644 --- a/src/vs/workbench/browser/actions/toggleCenteredLayout.ts +++ b/src/vs/workbench/browser/actions/toggleCenteredLayout.ts @@ -9,6 +9,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; import { IPartService } from 'vs/workbench/services/part/common/partService'; +import { IsCenteredLayoutContext } from 'vs/workbench/common/editor'; class ToggleCenteredLayout extends Action { @@ -38,7 +39,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '1_toggle_view', command: { id: ToggleCenteredLayout.ID, - title: nls.localize('miToggleCenteredLayout', "Toggle Centered Layout") + title: nls.localize('miToggleCenteredLayout', "Toggle Centered Layout"), + toggled: IsCenteredLayoutContext }, order: 3 }); diff --git a/src/vs/workbench/browser/actions/toggleSidebarVisibility.ts b/src/vs/workbench/browser/actions/toggleSidebarVisibility.ts index 921dc26b558..5bb2ded6d72 100644 --- a/src/vs/workbench/browser/actions/toggleSidebarVisibility.ts +++ b/src/vs/workbench/browser/actions/toggleSidebarVisibility.ts @@ -10,6 +10,7 @@ import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/ import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; export class ToggleSidebarVisibilityAction extends Action { @@ -41,7 +42,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleSidebarVisibilityAction.ID, - title: nls.localize({ key: 'miToggleSidebar', comment: ['&& denotes a mnemonic'] }, "&&Toggle Side Bar") + title: nls.localize({ key: 'miToggleSidebar', comment: ['&& denotes a mnemonic'] }, "&&Toggle Side Bar"), + toggled: ContextKeyExpr.has('sidebarVisible') }, order: 1 }); diff --git a/src/vs/workbench/browser/actions/toggleZenMode.ts b/src/vs/workbench/browser/actions/toggleZenMode.ts index 362f999dfed..63070e1c592 100644 --- a/src/vs/workbench/browser/actions/toggleZenMode.ts +++ b/src/vs/workbench/browser/actions/toggleZenMode.ts @@ -10,6 +10,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions } from 'vs/workbench/common/actions'; import { IPartService } from 'vs/workbench/services/part/common/partService'; +import { InEditorZenModeContext } from 'vs/workbench/common/editor'; class ToggleZenMode extends Action { @@ -39,7 +40,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '1_toggle_view', command: { id: ToggleZenMode.ID, - title: nls.localize('miToggleZenMode', "Toggle Zen Mode") + title: nls.localize('miToggleZenMode', "Toggle Zen Mode"), + toggled: InEditorZenModeContext }, order: 2 }); diff --git a/src/vs/workbench/browser/parts/panel/panelActions.ts b/src/vs/workbench/browser/parts/panel/panelActions.ts index f9fa7fd846b..f99ef968ef2 100644 --- a/src/vs/workbench/browser/parts/panel/panelActions.ts +++ b/src/vs/workbench/browser/parts/panel/panelActions.ts @@ -15,6 +15,7 @@ import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IPartService, Parts, Position } from 'vs/workbench/services/part/common/partService'; import { ActivityAction } from 'vs/workbench/browser/parts/compositeBarActions'; import { IActivity } from 'vs/workbench/common/activity'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; export class ClosePanelAction extends Action { @@ -266,7 +267,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: TogglePanelAction.ID, - title: nls.localize({ key: 'miTogglePanel', comment: ['&& denotes a mnemonic'] }, "Toggle &&Panel") + title: nls.localize({ key: 'miTogglePanel', comment: ['&& denotes a mnemonic'] }, "Toggle &&Panel"), + toggled: ContextKeyExpr.has('activePanel') }, order: 5 }); diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 88d9c14f056..9b5468193e7 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -62,7 +62,7 @@ export class MenubarControl extends Disposable { 'window.nativeTabs' ]; - private topLevelMenus: { + private menus: { 'File': IMenu; 'Edit': IMenu; 'Selection': IMenu; @@ -129,7 +129,7 @@ export class MenubarControl extends Disposable { super(); - this.topLevelMenus = { + this.menus = { 'File': this._register(this.menuService.createMenu(MenuId.MenubarFileMenu, this.contextKeyService)), 'Edit': this._register(this.menuService.createMenu(MenuId.MenubarEditMenu, this.contextKeyService)), 'Selection': this._register(this.menuService.createMenu(MenuId.MenubarSelectionMenu, this.contextKeyService)), @@ -141,7 +141,7 @@ export class MenubarControl extends Disposable { }; if (isMacintosh) { - this.topLevelMenus['Preferences'] = this._register(this.menuService.createMenu(MenuId.MenubarPreferencesMenu, this.contextKeyService)); + this.menus['Preferences'] = this._register(this.menuService.createMenu(MenuId.MenubarPreferencesMenu, this.contextKeyService)); } this.menuUpdater = this._register(new RunOnceScheduler(() => this.doSetupMenubar(), 200)); @@ -155,8 +155,8 @@ export class MenubarControl extends Disposable { this._onFocusStateChange = this._register(new Emitter()); if (isMacintosh || this.currentTitlebarStyleSetting !== 'custom') { - for (let topLevelMenuName of Object.keys(this.topLevelMenus)) { - this._register(this.topLevelMenus[topLevelMenuName].onDidChange(() => this.setupMenubar())); + for (let topLevelMenuName of Object.keys(this.topLevelTitles)) { + this._register(this.menus[topLevelMenuName].onDidChange(() => this.setupMenubar())); } this.doSetupMenubar(); } @@ -644,8 +644,8 @@ export class MenubarControl extends Disposable { let idx = 0; - for (let menuTitle of Object.keys(this.topLevelMenus)) { - const menu: IMenu = this.topLevelMenus[menuTitle]; + for (let menuTitle of Object.keys(this.topLevelTitles)) { + const menu: IMenu = this.menus[menuTitle]; let menuIndex = idx++; const cleanMenuLabel = cleanMnemonic(this.topLevelTitles[menuTitle]); @@ -697,7 +697,13 @@ export class MenubarControl extends Disposable { for (let action of actions) { this.insertActionsBefore(action, target); if (action instanceof SubmenuItemAction) { - const submenu = this.menuService.createMenu(action.item.submenu, this.contextKeyService); + + if (!this.menus[action.item.submenu.id]) { + this.menus[action.item.submenu.id] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); + this._register(this.menus[action.item.submenu.id].onDidChange(() => updateActions(menu, target))); + } + + const submenu = this.menus[action.item.submenu.id]; const submenuActions: SubmenuAction[] = []; updateActions(submenu, submenuActions); target.push(new SubmenuAction(action.label, submenuActions)); @@ -713,8 +719,8 @@ export class MenubarControl extends Disposable { target.pop(); }; - this.customMenus[menuIndex].actions = []; if (firstTimeSetup) { + this.customMenus[menuIndex].actions = []; this._register(menu.onDidChange(() => updateActions(menu, this.customMenus[menuIndex].actions))); } @@ -954,7 +960,13 @@ export class MenubarControl extends Disposable { if (menuItem instanceof SubmenuItemAction) { const submenu = { items: [] }; - this.populateMenuItems(this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService), submenu, keybindings); + + if (!this.menus[menuItem.item.submenu.id]) { + this.menus[menuItem.item.submenu.id] = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); + this._register(this.menus[menuItem.item.submenu.id].onDidChange(() => this.setupMenubar())); + } + + this.populateMenuItems(this.menus[menuItem.item.submenu.id], submenu, keybindings); let menubarSubmenuItem: IMenubarMenuItemSubmenu = { id: menuItem.id, @@ -1006,8 +1018,8 @@ export class MenubarControl extends Disposable { } menubarData.keybindings = this.getAdditionalKeybindings(); - for (let topLevelMenuName of Object.keys(this.topLevelMenus)) { - const menu = this.topLevelMenus[topLevelMenuName]; + for (let topLevelMenuName of Object.keys(this.topLevelTitles)) { + const menu = this.menus[topLevelMenuName]; let menubarMenu: IMenubarMenu = { items: [] }; this.populateMenuItems(menu, menubarMenu, menubarData.keybindings); if (menubarMenu.items.length === 0) { diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index a28fe66c845..3c7866372c5 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -30,6 +30,8 @@ export const ActiveEditorGroupEmptyContext = new RawContextKey('activeE export const MultipleEditorGroupsContext = new RawContextKey('multipleEditorGroups', false); export const SingleEditorGroupsContext = MultipleEditorGroupsContext.toNegated(); export const InEditorZenModeContext = new RawContextKey('inZenMode', false); +export const IsFullscreenContext = new RawContextKey('isFullscreen', false); +export const IsCenteredLayoutContext = new RawContextKey('isCenteredLayout', false); export const SplitEditorsVertically = new RawContextKey('splitEditorsVertically', false); /** diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index fb92578ac43..7047f353a06 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -22,6 +22,7 @@ import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ADD_ROOT_FOLDER_COMMAND_ID } from 'vs/workbench/browser/actions/workspaceCommands'; import { IsMacContext } from 'vs/platform/workbench/common/contextkeys'; +import { IsFullscreenContext } from 'vs/workbench/common/editor'; // Contribute Commands registerCommands(); @@ -296,7 +297,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '1_toggle_view', command: { id: ToggleFullScreenAction.ID, - title: nls.localize({ key: 'miToggleFullScreen', comment: ['&& denotes a mnemonic'] }, "Toggle &&Full Screen") + title: nls.localize({ key: 'miToggleFullScreen', comment: ['&& denotes a mnemonic'] }, "Toggle &&Full Screen"), + toggled: IsFullscreenContext }, order: 1 }); @@ -305,7 +307,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '1_toggle_view', command: { id: ToggleMenuBarAction.ID, - title: nls.localize({ key: 'miToggleMenuBar', comment: ['&& denotes a mnemonic'] }, "Toggle Menu &&Bar") + title: nls.localize({ key: 'miToggleMenuBar', comment: ['&& denotes a mnemonic'] }, "Toggle Menu &&Bar"), + toggled: ContextKeyExpr.and(ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'hidden'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'toggle')) }, order: 4 }); diff --git a/src/vs/workbench/electron-browser/workbench.ts b/src/vs/workbench/electron-browser/workbench.ts index 3ce4d326da1..224a38df573 100644 --- a/src/vs/workbench/electron-browser/workbench.ts +++ b/src/vs/workbench/electron-browser/workbench.ts @@ -20,7 +20,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { isWindows, isLinux, isMacintosh } from 'vs/base/common/platform'; import { IResourceInput } from 'vs/platform/editor/common/editor'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } from 'vs/workbench/common/contributions'; -import { IEditorInputFactoryRegistry, Extensions as EditorExtensions, TextCompareEditorVisibleContext, TEXT_DIFF_EDITOR_ID, EditorsVisibleContext, InEditorZenModeContext, ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext, IUntitledResourceInput, IResourceDiffInput, SplitEditorsVertically, TextCompareEditorActiveContext, ActiveEditorContext } from 'vs/workbench/common/editor'; +import { IEditorInputFactoryRegistry, Extensions as EditorExtensions, TextCompareEditorVisibleContext, TEXT_DIFF_EDITOR_ID, EditorsVisibleContext, InEditorZenModeContext, ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext, IUntitledResourceInput, IResourceDiffInput, SplitEditorsVertically, TextCompareEditorActiveContext, ActiveEditorContext, IsFullscreenContext, IsCenteredLayoutContext } from 'vs/workbench/common/editor'; import { HistoryService } from 'vs/workbench/services/history/electron-browser/history'; import { ActivitybarPart } from 'vs/workbench/browser/parts/activitybar/activitybarPart'; import { SidebarPart } from 'vs/workbench/browser/parts/sidebar/sidebarPart'; @@ -228,6 +228,8 @@ export class Workbench extends Disposable implements IPartService { private shouldCenterLayout = false; private inZenMode: IContextKey; + private isFullscreen: IContextKey; + private isCenteredLayout: IContextKey; private sideBarVisibleContext: IContextKey; private closeEmptyWindowScheduler: RunOnceScheduler = this._register(new RunOnceScheduler(() => this.onAllEditorsClosed(), 50)); @@ -521,6 +523,8 @@ export class Workbench extends Disposable implements IPartService { } } + this.isFullscreen.set(isFullscreen); + // Changing fullscreen state of the window has an impact on custom title bar visibility, so we need to update const hasCustomTitle = this.getCustomTitleBarStyle() === 'custom'; if (hasCustomTitle) { @@ -606,6 +610,9 @@ export class Workbench extends Disposable implements IPartService { private handleContextKeys(): void { this.inZenMode = InEditorZenModeContext.bindTo(this.contextKeyService); + this.isFullscreen = IsFullscreenContext.bindTo(this.contextKeyService); + this.isCenteredLayout = IsCenteredLayoutContext.bindTo(this.contextKeyService); + this.isFullscreen.set(browser.isFullscreen()); IsMacContext.bindTo(this.contextKeyService); IsLinuxContext.bindTo(this.contextKeyService); @@ -1346,6 +1353,8 @@ export class Workbench extends Disposable implements IPartService { this.layout(); } } + + this.isCenteredLayout.set(this.editorPart.isLayoutCentered()); } resizePart(part: Parts, sizeChange: number): void { From 97396b9df0a011a4d533567f34d48c1f833d5bc4 Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 20 Nov 2018 11:25:54 -0800 Subject: [PATCH 02/11] fixing some compiler errors --- .../browser/parts/titlebar/menubarControl.ts | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 9d0a239aeb8..664fc522698 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -742,12 +742,12 @@ export class MenubarControl extends Disposable { this.insertActionsBefore(action, target); if (action instanceof SubmenuItemAction) { - if (!this.menus[action.item.submenu.id]) { - this.menus[action.item.submenu.id] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); - this._register(this.menus[action.item.submenu.id].onDidChange(() => updateActions(menu, target))); + if (!this.menus[action.item.submenu]) { + this.menus[action.item.submenu] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); + this._register(this.menus[action.item.submenu].onDidChange(() => updateActions(menu, target))); } - const submenu = this.menus[action.item.submenu.id]; + const submenu = this.menus[action.item.submenu]; const submenuActions: SubmenuAction[] = []; updateActions(submenu, submenuActions); target.push(new SubmenuAction(action.label, submenuActions)); @@ -1006,9 +1006,9 @@ export class MenubarControl extends Disposable { if (menuItem instanceof SubmenuItemAction) { const submenu = { items: [] }; - if (!this.menus[menuItem.item.submenu.id]) { - this.menus[menuItem.item.submenu.id] = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); - this._register(this.menus[menuItem.item.submenu.id].onDidChange(() => this.setupMenubar())); + if (!this.menus[menuItem.item.submenu]) { + this.menus[menuItem.item.submenu] = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); + this._register(this.menus[menuItem.item.submenu].onDidChange(() => this.setupMenubar())); } const menuToDispose = this.menuService.createMenu(menuItem.item.submenu, this.contextKeyService); From e708195248bcb6bcdb1c71db1e4f8d7fdb81c48f Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 21 May 2019 23:11:54 +0000 Subject: [PATCH 03/11] fixes for custom --- .../browser/parts/titlebar/menubarControl.ts | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 9235ed96632..363ea544db1 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -518,21 +518,20 @@ export class MenubarControl extends Disposable { for (let action of actions) { this.insertActionsBefore(action, target); if (action instanceof SubmenuItemAction) { - if (!this.menus[mnemonicMenuLabel(action.label)]) { - this.menus[mnemonicMenuLabel(action.label)] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); - const submenu = this.menus[mnemonicMenuLabel(action.label)]; + if (!this.menus[action.item.submenu]) { + this.menus[action.item.submenu] = this.menuService.createMenu(action.item.submenu, this.contextKeyService); + const submenu = this.menus[action.item.submenu]; this._register(submenu!.onDidChange(() => { const actions: IAction[] = []; updateActions(menu, actions, topLevelTitle); this.menubar.updateMenu({ actions: actions, label: mnemonicMenuLabel(this.topLevelTitles[topLevelTitle]) }); - })); + }, this)); } - const submenu = this.menus[mnemonicMenuLabel(action.label)]!; + const submenu = this.menus[action.item.submenu]!; const submenuActions: SubmenuAction[] = []; updateActions(submenu, submenuActions, topLevelTitle); target.push(new SubmenuAction(mnemonicMenuLabel(action.label), submenuActions)); - submenu.dispose(); } else { action.label = mnemonicMenuLabel(this.calculateActionLabel(action)); target.push(action); From 0bc1d7243b82ad72ac6f560c994c3b8df41be730 Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 21 May 2019 16:43:55 -0700 Subject: [PATCH 04/11] move fullscreen context key to be more appropriate --- src/vs/workbench/browser/contextkeys.ts | 4 +++- src/vs/workbench/common/editor.ts | 1 - src/vs/workbench/electron-browser/main.contribution.ts | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/vs/workbench/browser/contextkeys.ts b/src/vs/workbench/browser/contextkeys.ts index 44c378dd893..20c6b414fcf 100644 --- a/src/vs/workbench/browser/contextkeys.ts +++ b/src/vs/workbench/browser/contextkeys.ts @@ -8,7 +8,7 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { IContextKeyService, IContextKey, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { InputFocusedContext } from 'vs/platform/contextkey/common/contextkeys'; import { IWindowsConfiguration } from 'vs/platform/windows/common/windows'; -import { ActiveEditorContext, EditorsVisibleContext, TextCompareEditorVisibleContext, TextCompareEditorActiveContext, ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext, TEXT_DIFF_EDITOR_ID, SplitEditorsVertically, InEditorZenModeContext, IsFullscreenContext, IsCenteredLayoutContext } from 'vs/workbench/common/editor'; +import { ActiveEditorContext, EditorsVisibleContext, TextCompareEditorVisibleContext, TextCompareEditorActiveContext, ActiveEditorGroupEmptyContext, MultipleEditorGroupsContext, TEXT_DIFF_EDITOR_ID, SplitEditorsVertically, InEditorZenModeContext, IsCenteredLayoutContext } from 'vs/workbench/common/editor'; import { trackFocus, addDisposableListener, EventType } from 'vs/base/browser/dom'; import { preferredSideBySideGroupDirection, GroupDirection, IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -38,6 +38,8 @@ export const WorkspaceFolderCountContext = new RawContextKey('workspaceF export const RemoteFileDialogContext = new RawContextKey('remoteFileDialogVisible', false); +export const IsFullscreenContext = new RawContextKey('isFullscreen', false); + export class WorkbenchContextKeysHandler extends Disposable { private inputFocusedContext: IContextKey; diff --git a/src/vs/workbench/common/editor.ts b/src/vs/workbench/common/editor.ts index 1d05345bda7..047937908ed 100644 --- a/src/vs/workbench/common/editor.ts +++ b/src/vs/workbench/common/editor.ts @@ -31,7 +31,6 @@ export const ActiveEditorGroupEmptyContext = new RawContextKey('activeE export const MultipleEditorGroupsContext = new RawContextKey('multipleEditorGroups', false); export const SingleEditorGroupsContext = MultipleEditorGroupsContext.toNegated(); export const InEditorZenModeContext = new RawContextKey('inZenMode', false); -export const IsFullscreenContext = new RawContextKey('isFullscreen', false); export const IsCenteredLayoutContext = new RawContextKey('isCenteredLayout', false); export const SplitEditorsVertically = new RawContextKey('splitEditorsVertically', false); diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index 03513731b54..ce348281306 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -21,8 +21,8 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { ADD_ROOT_FOLDER_COMMAND_ID } from 'vs/workbench/browser/actions/workspaceCommands'; -import { SupportsWorkspacesContext, IsMacContext, HasMacNativeTabsContext, IsDevelopmentContext, WorkbenchStateContext, WorkspaceFolderCountContext, RemoteFileDialogContext } from 'vs/workbench/browser/contextkeys'; -import { NoEditorsVisibleContext, SingleEditorGroupsContext, IsFullscreenContext } from 'vs/workbench/common/editor'; +import { SupportsWorkspacesContext, IsMacContext, HasMacNativeTabsContext, IsDevelopmentContext, WorkbenchStateContext, WorkspaceFolderCountContext, RemoteFileDialogContext, IsFullscreenContext } from 'vs/workbench/browser/contextkeys'; +import { NoEditorsVisibleContext, SingleEditorGroupsContext } from 'vs/workbench/common/editor'; import { IWindowService, IWindowsService } from 'vs/platform/windows/common/windows'; import { LogStorageAction } from 'vs/platform/storage/node/storageService'; From fb79a3262130b76bb48ad0cf952b6c4fe9dd99de Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 21 May 2019 22:03:17 -0700 Subject: [PATCH 05/11] renaming some menu entries, cleanup and checks for panels --- .../browser/actions/layoutActions.ts | 54 +++++++++++++++++-- .../browser/parts/panel/panelActions.ts | 16 ++++-- .../browser/parts/titlebar/menubarControl.ts | 51 ------------------ .../electron-browser/debug.contribution.ts | 4 +- .../markers/browser/markers.contribution.ts | 3 +- .../output/browser/output.contribution.ts | 4 +- .../contrib/terminal/common/terminalMenu.ts | 5 +- 7 files changed, 74 insertions(+), 63 deletions(-) diff --git a/src/vs/workbench/browser/actions/layoutActions.ts b/src/vs/workbench/browser/actions/layoutActions.ts index ac686cefb5b..bffaa0da584 100644 --- a/src/vs/workbench/browser/actions/layoutActions.ts +++ b/src/vs/workbench/browser/actions/layoutActions.ts @@ -23,6 +23,7 @@ import { IsMacContext } from 'vs/workbench/browser/contextkeys'; import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { InEditorZenModeContext, IsCenteredLayoutContext } from 'vs/workbench/common/editor'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { SideBarVisibleContext } from 'vs/workbench/common/viewlet'; const registry = Registry.as(Extensions.WorkbenchActions); const viewCategory = nls.localize('view', "View"); @@ -61,8 +62,19 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleActivityBarVisibilityAction.ID, - title: nls.localize({ key: 'miToggleActivityBar', comment: ['&& denotes a mnemonic'] }, "Toggle &&Activity Bar") + title: nls.localize({ key: 'miHideActivityBar', comment: ['&& denotes a mnemonic'] }, "Hide &&Activity Bar") }, + when: ContextKeyExpr.equals('config.workbench.activityBar.visible', true), + order: 4 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: ToggleActivityBarVisibilityAction.ID, + title: nls.localize({ key: 'miShowActivityBar', comment: ['&& denotes a mnemonic'] }, "Show &&Activity Bar") + }, + when: ContextKeyExpr.equals('config.workbench.activityBar.visible', false), order: 4 }); @@ -207,8 +219,19 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleSidebarPositionAction.ID, - title: nls.localize({ key: 'miMoveSidebarLeftRight', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Left/Right") + title: nls.localize({ key: 'miMoveSidebarRight', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Right") }, + when: ContextKeyExpr.notEquals('config.workbench.sideBar.location', 'right'), + order: 2 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: ToggleSidebarPositionAction.ID, + title: nls.localize({ key: 'miMoveSidebarLeft', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Left") + }, + when: ContextKeyExpr.equals('config.workbench.sideBar.location', 'right'), order: 2 }); @@ -267,9 +290,19 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleSidebarVisibilityAction.ID, - title: nls.localize({ key: 'miToggleSidebar', comment: ['&& denotes a mnemonic'] }, "&&Toggle Side Bar"), - toggled: ContextKeyExpr.has('sidebarVisible') + title: nls.localize({ key: 'miHideSidebar', comment: ['&& denotes a mnemonic'] }, "&&Hide Side Bar"), }, + when: SideBarVisibleContext, + order: 1 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: ToggleSidebarVisibilityAction.ID, + title: nls.localize({ key: 'miShowSidebar', comment: ['&& denotes a mnemonic'] }, "&&Show Side Bar"), + }, + when: SideBarVisibleContext.toNegated(), order: 1 }); @@ -307,8 +340,19 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleStatusbarVisibilityAction.ID, - title: nls.localize({ key: 'miToggleStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Toggle Status Bar") + title: nls.localize({ key: 'miHideStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Hide Status Bar") }, + when: ContextKeyExpr.equals('config.workbench.statusBar.visible', true), + order: 3 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: ToggleStatusbarVisibilityAction.ID, + title: nls.localize({ key: 'miShowStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Show Status Bar") + }, + when: ContextKeyExpr.equals('config.workbench.statusBar.visible', false), order: 3 }); diff --git a/src/vs/workbench/browser/parts/panel/panelActions.ts b/src/vs/workbench/browser/parts/panel/panelActions.ts index 61ab8c9c48d..9e55f04cb64 100644 --- a/src/vs/workbench/browser/parts/panel/panelActions.ts +++ b/src/vs/workbench/browser/parts/panel/panelActions.ts @@ -15,8 +15,8 @@ import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { IWorkbenchLayoutService, Parts, Position } from 'vs/workbench/services/layout/browser/layoutService'; import { ActivityAction } from 'vs/workbench/browser/parts/compositeBarActions'; import { IActivity } from 'vs/workbench/common/activity'; -import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; +import { ActivePanelContext } from 'vs/workbench/common/panel'; export class ClosePanelAction extends Action { @@ -272,9 +272,19 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: TogglePanelAction.ID, - title: nls.localize({ key: 'miTogglePanel', comment: ['&& denotes a mnemonic'] }, "Toggle &&Panel"), - toggled: ContextKeyExpr.has('activePanel') + title: nls.localize({ key: 'miShowPanel', comment: ['&& denotes a mnemonic'] }, "Show &&Panel"), }, + when: ActivePanelContext.toNegated(), + order: 5 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: TogglePanelAction.ID, + title: nls.localize({ key: 'miHidePanel', comment: ['&& denotes a mnemonic'] }, "Hide &&Panel"), + }, + when: ActivePanelContext, order: 5 }); diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 363ea544db1..d22fb10e022 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -38,12 +38,7 @@ import { withNullAsUndefined } from 'vs/base/common/types'; export class MenubarControl extends Disposable { private keys = [ - 'files.autoSave', 'window.menuBarVisibility', - 'editor.multiCursorModifier', - 'workbench.sideBar.location', - 'workbench.statusBar.visible', - 'workbench.activityBar.visible', 'window.enableMenuBarMnemonics', 'window.nativeTabs' ]; @@ -156,28 +151,6 @@ export class MenubarControl extends Disposable { return enableMenuBarMnemonics; } - private get currentSidebarPosition(): string { - return this.configurationService.getValue('workbench.sideBar.location'); - } - - private get currentStatusBarVisibility(): boolean { - let setting = this.configurationService.getValue('workbench.statusBar.visible'); - if (typeof setting !== 'boolean') { - setting = true; - } - - return setting; - } - - private get currentActivityBarVisibility(): boolean { - let setting = this.configurationService.getValue('workbench.activityBar.visible'); - if (typeof setting !== 'boolean') { - setting = true; - } - - return setting; - } - private get currentMenubarVisibility(): MenuBarVisibility { return this.configurationService.getValue('window.menuBarVisibility'); } @@ -319,30 +292,6 @@ export class MenubarControl extends Disposable { private calculateActionLabel(action: IAction | IMenubarMenuItemAction): string { let label = action.label; switch (action.id) { - case 'workbench.action.toggleSidebarPosition': - if (this.currentSidebarPosition !== 'right') { - label = nls.localize({ key: 'miMoveSidebarRight', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Right"); - } else { - label = nls.localize({ key: 'miMoveSidebarLeft', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Left"); - } - break; - - case 'workbench.action.toggleStatusbarVisibility': - if (this.currentStatusBarVisibility) { - label = nls.localize({ key: 'miHideStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Hide Status Bar"); - } else { - label = nls.localize({ key: 'miShowStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Show Status Bar"); - } - break; - - case 'workbench.action.toggleActivityBarVisibility': - if (this.currentActivityBarVisibility) { - label = nls.localize({ key: 'miHideActivityBar', comment: ['&& denotes a mnemonic'] }, "Hide &&Activity Bar"); - } else { - label = nls.localize({ key: 'miShowActivityBar', comment: ['&& denotes a mnemonic'] }, "Show &&Activity Bar"); - } - break; - default: break; } diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts index a847adde9fd..432b076cf80 100644 --- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts @@ -50,6 +50,7 @@ import { WatchExpressionsView } from 'vs/workbench/contrib/debug/browser/watchEx import { VariablesView } from 'vs/workbench/contrib/debug/browser/variablesView'; import { ClearReplAction, Repl } from 'vs/workbench/contrib/debug/browser/repl'; import { DebugContentProvider } from 'vs/workbench/contrib/debug/common/debugContentProvider'; +import { ActivePanelContext } from 'vs/workbench/common/panel'; class OpenDebugViewletAction extends ShowViewletAction { public static readonly ID = VIEWLET_ID; @@ -330,7 +331,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '4_panels', command: { id: OpenDebugPanelAction.ID, - title: nls.localize({ key: 'miToggleDebugConsole', comment: ['&& denotes a mnemonic'] }, "De&&bug Console") + title: nls.localize({ key: 'miToggleDebugConsole', comment: ['&& denotes a mnemonic'] }, "De&&bug Console"), + toggled: ActivePanelContext.isEqualTo(REPL_ID) }, order: 2 }); diff --git a/src/vs/workbench/contrib/markers/browser/markers.contribution.ts b/src/vs/workbench/contrib/markers/browser/markers.contribution.ts index 5bd59feaed1..f401b99f99e 100644 --- a/src/vs/workbench/contrib/markers/browser/markers.contribution.ts +++ b/src/vs/workbench/contrib/markers/browser/markers.contribution.ts @@ -249,7 +249,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '4_panels', command: { id: ToggleMarkersPanelAction.ID, - title: localize({ key: 'miMarker', comment: ['&& denotes a mnemonic'] }, "&&Problems") + title: localize({ key: 'miMarker', comment: ['&& denotes a mnemonic'] }, "&&Problems"), + toggled: ActivePanelContext.isEqualTo(Constants.MARKERS_PANEL_ID) }, order: 4 }); diff --git a/src/vs/workbench/contrib/output/browser/output.contribution.ts b/src/vs/workbench/contrib/output/browser/output.contribution.ts index 273ac9f397d..29dff2fc83e 100644 --- a/src/vs/workbench/contrib/output/browser/output.contribution.ts +++ b/src/vs/workbench/contrib/output/browser/output.contribution.ts @@ -22,6 +22,7 @@ import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWo import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; +import { ActivePanelContext } from 'vs/workbench/common/panel'; // Register Service registerSingleton(IOutputService, OutputService); @@ -120,7 +121,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '4_panels', command: { id: ToggleOutputAction.ID, - title: nls.localize({ key: 'miToggleOutput', comment: ['&& denotes a mnemonic'] }, "&&Output") + title: nls.localize({ key: 'miToggleOutput', comment: ['&& denotes a mnemonic'] }, "&&Output"), + toggled: ActivePanelContext.isEqualTo(OUTPUT_PANEL_ID) }, order: 1 }); diff --git a/src/vs/workbench/contrib/terminal/common/terminalMenu.ts b/src/vs/workbench/contrib/terminal/common/terminalMenu.ts index 7493d800d2d..df62a800293 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalMenu.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalMenu.ts @@ -7,6 +7,8 @@ import * as nls from 'vs/nls'; import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { TERMINAL_COMMAND_ID } from 'vs/workbench/contrib/terminal/common/terminalCommands'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; +import { ActivePanelContext } from 'vs/workbench/common/panel'; +import { TERMINAL_PANEL_ID } from 'vs/workbench/contrib/terminal/common/terminal'; export function setupTerminalMenu() { @@ -16,7 +18,8 @@ export function setupTerminalMenu() { group: '4_panels', command: { id: TERMINAL_COMMAND_ID.TOGGLE, - title: nls.localize({ key: 'miToggleIntegratedTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal") + title: nls.localize({ key: 'miToggleIntegratedTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal"), + toggled: ActivePanelContext.isEqualTo(TERMINAL_PANEL_ID) }, order: 3 }); From 693e683a378806b5cd04a973c42800f44885b6cd Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Wed, 22 May 2019 11:03:40 -0700 Subject: [PATCH 06/11] checks for views --- .../contrib/debug/electron-browser/debug.contribution.ts | 4 +++- .../extensions/electron-browser/extensions.contribution.ts | 4 +++- src/vs/workbench/contrib/files/browser/files.contribution.ts | 4 +++- src/vs/workbench/contrib/scm/browser/scm.contribution.ts | 4 +++- .../workbench/contrib/search/browser/search.contribution.ts | 4 +++- 5 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts index 432b076cf80..0f149db5c79 100644 --- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts @@ -51,6 +51,7 @@ import { VariablesView } from 'vs/workbench/contrib/debug/browser/variablesView' import { ClearReplAction, Repl } from 'vs/workbench/contrib/debug/browser/repl'; import { DebugContentProvider } from 'vs/workbench/contrib/debug/common/debugContentProvider'; import { ActivePanelContext } from 'vs/workbench/common/panel'; +import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; class OpenDebugViewletAction extends ShowViewletAction { public static readonly ID = VIEWLET_ID; @@ -322,7 +323,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: nls.localize({ key: 'miViewDebug', comment: ['&& denotes a mnemonic'] }, "&&Debug") + title: nls.localize({ key: 'miViewDebug', comment: ['&& denotes a mnemonic'] }, "&&Debug"), + toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) }, order: 4 }); diff --git a/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts index 900e726c360..1a429fed370 100644 --- a/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts @@ -49,6 +49,7 @@ import { ExtensionsAutoProfiler } from 'vs/workbench/contrib/extensions/electron import { onUnexpectedError } from 'vs/base/common/errors'; import { ExtensionDependencyChecker } from 'vs/workbench/contrib/extensions/electron-browser/extensionsDependencyChecker'; import { CancellationToken } from 'vs/base/common/cancellation'; +import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; // Singletons registerSingleton(IExtensionsWorkbenchService, ExtensionsWorkbenchService); @@ -315,7 +316,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: localize({ key: 'miViewExtensions', comment: ['&& denotes a mnemonic'] }, "E&&xtensions") + title: localize({ key: 'miViewExtensions', comment: ['&& denotes a mnemonic'] }, "E&&xtensions"), + toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) }, order: 5 }); diff --git a/src/vs/workbench/contrib/files/browser/files.contribution.ts b/src/vs/workbench/contrib/files/browser/files.contribution.ts index 65c3e55c4a3..df4299a56c1 100644 --- a/src/vs/workbench/contrib/files/browser/files.contribution.ts +++ b/src/vs/workbench/contrib/files/browser/files.contribution.ts @@ -39,6 +39,7 @@ import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ExplorerService } from 'vs/workbench/contrib/files/common/explorerService'; import { SUPPORTED_ENCODINGS } from 'vs/workbench/services/textfile/common/textfiles'; import { Schemas } from 'vs/base/common/network'; +import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; // Viewlet Action export class OpenExplorerViewletAction extends ShowViewletAction { @@ -421,7 +422,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: nls.localize({ key: 'miViewExplorer', comment: ['&& denotes a mnemonic'] }, "&&Explorer") + title: nls.localize({ key: 'miViewExplorer', comment: ['&& denotes a mnemonic'] }, "&&Explorer"), + toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) }, order: 1 }); diff --git a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts index db9568a6eb4..5a498b2430b 100644 --- a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts +++ b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts @@ -24,6 +24,7 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { SCMService } from 'vs/workbench/contrib/scm/common/scmService'; +import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; class OpenSCMViewletAction extends ShowViewletAction { @@ -106,7 +107,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: localize({ key: 'miViewSCM', comment: ['&& denotes a mnemonic'] }, "S&&CM") + title: localize({ key: 'miViewSCM', comment: ['&& denotes a mnemonic'] }, "S&&CM"), + toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) }, order: 3 }); diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts index f675087eeb4..f15b48b096b 100644 --- a/src/vs/workbench/contrib/search/browser/search.contribution.ts +++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts @@ -55,6 +55,7 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { ISearchConfiguration, ISearchConfigurationProperties, PANEL_ID, VIEWLET_ID, VIEW_CONTAINER, VIEW_ID } from 'vs/workbench/services/search/common/search'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; +import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; registerSingleton(ISearchWorkbenchService, SearchWorkbenchService, true); @@ -770,7 +771,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: nls.localize({ key: 'miViewSearch', comment: ['&& denotes a mnemonic'] }, "&&Search") + title: nls.localize({ key: 'miViewSearch', comment: ['&& denotes a mnemonic'] }, "&&Search"), + toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) }, order: 2 }); From 1f30141f65a7bc263ee4c2f03161a9ebc17a6c7b Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Wed, 22 May 2019 12:05:17 -0700 Subject: [PATCH 07/11] update the remaining View/Appearance menu more consistency --- .../browser/actions/layoutActions.ts | 23 +++++++++++++------ src/vs/workbench/browser/contextkeys.ts | 9 +++++++- src/vs/workbench/browser/layout.ts | 5 ++++ .../parts/editor/breadcrumbsControl.ts | 17 ++++++++++---- .../browser/parts/panel/panelActions.ts | 21 +++++++++++++---- src/vs/workbench/common/panel.ts | 1 + .../codeEditor/browser/toggleMinimap.ts | 15 ++++++++++-- .../browser/toggleRenderControlCharacter.ts | 4 ++-- .../browser/toggleRenderWhitespace.ts | 4 ++-- .../electron-browser/main.contribution.ts | 2 +- .../services/layout/browser/layoutService.ts | 5 ++++ .../workbench/test/workbenchTestServices.ts | 1 + 12 files changed, 83 insertions(+), 24 deletions(-) diff --git a/src/vs/workbench/browser/actions/layoutActions.ts b/src/vs/workbench/browser/actions/layoutActions.ts index bffaa0da584..bcca778620b 100644 --- a/src/vs/workbench/browser/actions/layoutActions.ts +++ b/src/vs/workbench/browser/actions/layoutActions.ts @@ -107,7 +107,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '1_toggle_view', command: { id: ToggleCenteredLayout.ID, - title: nls.localize('miToggleCenteredLayout', "Toggle Centered Layout"), + title: nls.localize('miToggleCenteredLayout', "Centered Layout"), toggled: IsCenteredLayoutContext }, order: 3 @@ -416,7 +416,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '1_toggle_view', command: { id: ToggleZenMode.ID, - title: nls.localize('miToggleZenMode', "Toggle Zen Mode"), + title: nls.localize('miToggleZenMode', "Zen Mode"), toggled: InEditorZenModeContext }, order: 2 @@ -474,14 +474,23 @@ if (isWindows || isLinux) { } MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '1_toggle_view', + group: '2_workbench_layout', command: { id: ToggleMenuBarAction.ID, - title: nls.localize({ key: 'miToggleMenuBar', comment: ['&& denotes a mnemonic'] }, "Toggle Menu &&Bar"), - toggled: ContextKeyExpr.and(ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'hidden'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'toggle')) + title: nls.localize({ key: 'miHideMenuBar', comment: ['&& denotes a mnemonic'] }, "Hide Menu &&Bar") }, - when: IsMacContext.toNegated(), - order: 4 + when: ContextKeyExpr.and(IsMacContext.toNegated(), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'hidden'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'toggle')), + order: 0 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: ToggleMenuBarAction.ID, + title: nls.localize({ key: 'miShowMenuBar', comment: ['&& denotes a mnemonic'] }, "Show Menu &&Bar") + }, + when: ContextKeyExpr.and(IsMacContext.toNegated(), ContextKeyExpr.and(ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'visible'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'default'))), + order: 0 }); // --- Resize View diff --git a/src/vs/workbench/browser/contextkeys.ts b/src/vs/workbench/browser/contextkeys.ts index 20c6b414fcf..b147b08289f 100644 --- a/src/vs/workbench/browser/contextkeys.ts +++ b/src/vs/workbench/browser/contextkeys.ts @@ -16,9 +16,10 @@ import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/ import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { WorkbenchState, IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { SideBarVisibleContext } from 'vs/workbench/common/viewlet'; -import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService'; +import { IWorkbenchLayoutService, Parts, Position } from 'vs/workbench/services/layout/browser/layoutService'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; import { isMacintosh, isLinux, isWindows } from 'vs/base/common/platform'; +import { PanelPositionContext } from 'vs/workbench/common/panel'; export const IsMacContext = new RawContextKey('isMac', isMacintosh); export const IsLinuxContext = new RawContextKey('isLinux', isLinux); @@ -59,6 +60,7 @@ export class WorkbenchContextKeysHandler extends Disposable { private isFullscreenContext: IContextKey; private isCenteredLayoutContext: IContextKey; private sideBarVisibleContext: IContextKey; + private panelPositionContext: IContextKey; constructor( @IContextKeyService private contextKeyService: IContextKeyService, @@ -98,6 +100,7 @@ export class WorkbenchContextKeysHandler extends Disposable { this._register(this.layoutService.onZenModeChange(enabled => this.inZenModeContext.set(enabled))); this._register(this.layoutService.onFullscreenChange(fullscreen => this.isFullscreenContext.set(fullscreen))); this._register(this.layoutService.onCenteredLayoutChange(centered => this.isCenteredLayoutContext.set(centered))); + this._register(this.layoutService.onPanelPositionChange(position => this.panelPositionContext.set(position))); this._register(this.viewletService.onDidViewletClose(() => this.updateSideBarContextKeys())); this._register(this.viewletService.onDidViewletOpen(() => this.updateSideBarContextKeys())); @@ -156,6 +159,10 @@ export class WorkbenchContextKeysHandler extends Disposable { // Sidebar this.sideBarVisibleContext = SideBarVisibleContext.bindTo(this.contextKeyService); + + // Panel Position + this.panelPositionContext = PanelPositionContext.bindTo(this.contextKeyService); + this.panelPositionContext.set(this.layoutService.getPanelPosition() === Position.RIGHT ? 'right' : 'bottom'); } private updateEditorContextKeys(): void { diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts index 13c3d4857a5..9a811566ba7 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts @@ -72,6 +72,9 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi private readonly _onCenteredLayout: Emitter = this._register(new Emitter()); get onCenteredLayoutChange(): Event { return this._onCenteredLayout.event; } + private readonly _onPanelPositionChange: Emitter = this._register(new Emitter()); + get onPanelPositionChange(): Event { return this._onPanelPositionChange.event; } + private readonly _onLayout = this._register(new Emitter()); get onLayout(): Event { return this._onLayout.event; } @@ -1061,6 +1064,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi this.storageService.store(Storage.PANEL_POSITION, positionToString(this.state.panel.position), StorageScope.WORKSPACE); + this._onPanelPositionChange.fire(positionToString(this.state.panel.position)); + // Adjust CSS removeClass(panelPart.getContainer(), oldPositionValue); addClass(panelPart.getContainer(), newPositionValue); diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index 5cd799b070a..85bcaf180d3 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -496,12 +496,21 @@ MenuRegistry.appendMenuItem(MenuId.CommandPalette, { }); MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '5_editor', - order: 99, + order: 3, command: { id: 'breadcrumbs.toggle', - title: localize('miToggleBreadcrumbs', "Toggle &&Breadcrumbs"), - toggled: ContextKeyExpr.equals('config.breadcrumbs.enabled', true) - } + title: localize('miShowBreadcrumbs', "Show &&Breadcrumbs") + }, + when: ContextKeyExpr.equals('config.breadcrumbs.enabled', false) +}); +MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { + group: '5_editor', + order: 3, + command: { + id: 'breadcrumbs.toggle', + title: localize('miHideBreadcrumbs', "Hide &&Breadcrumbs") + }, + when: ContextKeyExpr.equals('config.breadcrumbs.enabled', true) }); CommandsRegistry.registerCommand('breadcrumbs.toggle', accessor => { let config = accessor.get(IConfigurationService); diff --git a/src/vs/workbench/browser/parts/panel/panelActions.ts b/src/vs/workbench/browser/parts/panel/panelActions.ts index 9e55f04cb64..c79111da72d 100644 --- a/src/vs/workbench/browser/parts/panel/panelActions.ts +++ b/src/vs/workbench/browser/parts/panel/panelActions.ts @@ -16,7 +16,7 @@ import { IWorkbenchLayoutService, Parts, Position } from 'vs/workbench/services/ import { ActivityAction } from 'vs/workbench/browser/parts/compositeBarActions'; import { IActivity } from 'vs/workbench/common/activity'; import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editorGroupsService'; -import { ActivePanelContext } from 'vs/workbench/common/panel'; +import { ActivePanelContext, PanelPositionContext } from 'vs/workbench/common/panel'; export class ClosePanelAction extends Action { @@ -93,8 +93,8 @@ export class TogglePanelPositionAction extends Action { static readonly ID = 'workbench.action.togglePanelPosition'; static readonly LABEL = nls.localize('toggledPanelPosition', "Toggle Panel Position"); - private static readonly MOVE_TO_RIGHT_LABEL = nls.localize('moveToRight', "Move Panel Right"); - private static readonly MOVE_TO_BOTTOM_LABEL = nls.localize('moveToBottom', "Move Panel to Bottom"); + static readonly MOVE_TO_RIGHT_LABEL = nls.localize('moveToRight', "Move Panel Right"); + static readonly MOVE_TO_BOTTOM_LABEL = nls.localize('moveToBottom', "Move Panel to Bottom"); private toDispose: IDisposable[]; @@ -292,7 +292,18 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: TogglePanelPositionAction.ID, - title: TogglePanelPositionAction.LABEL + title: TogglePanelPositionAction.MOVE_TO_RIGHT_LABEL }, - order: 3 + when: PanelPositionContext.isEqualTo('bottom'), + order: 5 +}); + +MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { + group: '2_workbench_layout', + command: { + id: TogglePanelPositionAction.ID, + title: TogglePanelPositionAction.MOVE_TO_BOTTOM_LABEL + }, + when: PanelPositionContext.isEqualTo('right'), + order: 5 }); diff --git a/src/vs/workbench/common/panel.ts b/src/vs/workbench/common/panel.ts index 628846c404a..7b836be9552 100644 --- a/src/vs/workbench/common/panel.ts +++ b/src/vs/workbench/common/panel.ts @@ -8,5 +8,6 @@ import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; export const ActivePanelContext = new RawContextKey('activePanel', ''); export const PanelFocusContext = new RawContextKey('panelFocus', false); +export const PanelPositionContext = new RawContextKey('panelPosition', 'bottom'); export interface IPanel extends IComposite { } diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts index 96576810093..f2e9ced99e4 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts @@ -36,8 +36,19 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '5_editor', command: { id: ToggleMinimapAction.ID, - title: nls.localize({ key: 'miToggleMinimap', comment: ['&& denotes a mnemonic'] }, "Toggle &&Minimap"), - toggled: ContextKeyExpr.equals('config.editor.minimap.enabled', true) + title: nls.localize({ key: 'miShowMinimap', comment: ['&& denotes a mnemonic'] }, "Show &&Minimap") }, + when: ContextKeyExpr.equals('config.editor.minimap.enabled', false), order: 2 }); + +MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { + group: '5_editor', + command: { + id: ToggleMinimapAction.ID, + title: nls.localize({ key: 'miHideMinimap', comment: ['&& denotes a mnemonic'] }, "Hide &&Minimap") + }, + when: ContextKeyExpr.equals('config.editor.minimap.enabled', true), + order: 2 +}); + diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts index ce2765e5efe..23410b162b6 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/toggleRenderControlCharacter.ts @@ -37,8 +37,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '5_editor', command: { id: ToggleRenderControlCharacterAction.ID, - title: nls.localize({ key: 'miToggleRenderControlCharacters', comment: ['&& denotes a mnemonic'] }, "Toggle &&Control Characters"), + title: nls.localize({ key: 'miToggleRenderControlCharacters', comment: ['&& denotes a mnemonic'] }, "Render &&Control Characters"), toggled: ContextKeyExpr.equals('config.editor.renderControlCharacters', true) }, - order: 4 + order: 5 }); diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts index db5bbbf573f..e5181da5c2e 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/toggleRenderWhitespace.ts @@ -45,8 +45,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '5_editor', command: { id: ToggleRenderWhitespaceAction.ID, - title: nls.localize({ key: 'miToggleRenderWhitespace', comment: ['&& denotes a mnemonic'] }, "Toggle &&Render Whitespace"), + title: nls.localize({ key: 'miToggleRenderWhitespace', comment: ['&& denotes a mnemonic'] }, "&&Render Whitespace"), toggled: ContextKeyExpr.notEquals('config.editor.renderWhitespace', 'none') }, - order: 3 + order: 4 }); diff --git a/src/vs/workbench/electron-browser/main.contribution.ts b/src/vs/workbench/electron-browser/main.contribution.ts index ce348281306..fa2e7783828 100644 --- a/src/vs/workbench/electron-browser/main.contribution.ts +++ b/src/vs/workbench/electron-browser/main.contribution.ts @@ -358,7 +358,7 @@ import { LogStorageAction } from 'vs/platform/storage/node/storageService'; group: '1_toggle_view', command: { id: ToggleFullScreenAction.ID, - title: nls.localize({ key: 'miToggleFullScreen', comment: ['&& denotes a mnemonic'] }, "Toggle &&Full Screen"), + title: nls.localize({ key: 'miToggleFullScreen', comment: ['&& denotes a mnemonic'] }, "&&Full Screen"), toggled: IsFullscreenContext }, order: 1 diff --git a/src/vs/workbench/services/layout/browser/layoutService.ts b/src/vs/workbench/services/layout/browser/layoutService.ts index eb6d120ca89..c89bbef87c1 100644 --- a/src/vs/workbench/services/layout/browser/layoutService.ts +++ b/src/vs/workbench/services/layout/browser/layoutService.ts @@ -55,6 +55,11 @@ export interface IWorkbenchLayoutService extends ILayoutService { */ readonly onCenteredLayoutChange: Event; + /** + * Emit when panel position changes. + */ + readonly onPanelPositionChange: Event; + /** * Asks the part service if all parts have been fully restored. For editor part * this means that the contents of editors have loaded. diff --git a/src/vs/workbench/test/workbenchTestServices.ts b/src/vs/workbench/test/workbenchTestServices.ts index 583ad16042b..194d033c290 100644 --- a/src/vs/workbench/test/workbenchTestServices.ts +++ b/src/vs/workbench/test/workbenchTestServices.ts @@ -457,6 +457,7 @@ export class TestLayoutService implements IWorkbenchLayoutService { onZenModeChange: Event = Event.None; onCenteredLayoutChange: Event = Event.None; onFullscreenChange: Event = Event.None; + onPanelPositionChange: Event = Event.None; onLayout = Event.None; private _onTitleBarVisibilityChange = new Emitter(); From 613dad05ce42c0f27040bff7f9d168af05567337 Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Mon, 3 Jun 2019 17:00:19 -0700 Subject: [PATCH 08/11] address feedback --- src/vs/workbench/browser/layout.ts | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/vs/workbench/browser/layout.ts b/src/vs/workbench/browser/layout.ts index 9a811566ba7..fa1ddec1a40 100644 --- a/src/vs/workbench/browser/layout.ts +++ b/src/vs/workbench/browser/layout.ts @@ -63,14 +63,14 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi private readonly _onTitleBarVisibilityChange: Emitter = this._register(new Emitter()); get onTitleBarVisibilityChange(): Event { return this._onTitleBarVisibilityChange.event; } - private readonly _onZenMode: Emitter = this._register(new Emitter()); - get onZenModeChange(): Event { return this._onZenMode.event; } + private readonly _onZenModeChange: Emitter = this._register(new Emitter()); + get onZenModeChange(): Event { return this._onZenModeChange.event; } - private readonly _onFullscreen: Emitter = this._register(new Emitter()); - get onFullscreenChange(): Event { return this._onFullscreen.event; } + private readonly _onFullscreenChange: Emitter = this._register(new Emitter()); + get onFullscreenChange(): Event { return this._onFullscreenChange.event; } - private readonly _onCenteredLayout: Emitter = this._register(new Emitter()); - get onCenteredLayoutChange(): Event { return this._onCenteredLayout.event; } + private readonly _onCenteredLayoutChange: Emitter = this._register(new Emitter()); + get onCenteredLayoutChange(): Event { return this._onCenteredLayoutChange.event; } private readonly _onPanelPositionChange: Emitter = this._register(new Emitter()); get onPanelPositionChange(): Event { return this._onPanelPositionChange.event; } @@ -246,13 +246,13 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi } } - this._onFullscreen.fire(this.state.fullscreen); - // Changing fullscreen state of the window has an impact on custom title bar visibility, so we need to update if (getTitleBarStyle(this.configurationService, this.environmentService) === 'custom') { this._onTitleBarVisibilityChange.fire(); this.layout(); // handle title bar when fullscreen changes } + + this._onFullscreenChange.fire(this.state.fullscreen); } private doUpdateLayoutConfiguration(skipLayout?: boolean): void { @@ -642,7 +642,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi } // Event - this._onZenMode.fire(this.state.zenMode.active); + this._onZenModeChange.fire(this.state.zenMode.active); } private setStatusBarHidden(hidden: boolean, skipLayout?: boolean): void { @@ -840,7 +840,7 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi } } - this._onCenteredLayout.fire(this.state.editor.centered); + this._onCenteredLayoutChange.fire(this.state.editor.centered); } resizePart(part: Parts, sizeChange: number): void { @@ -1064,8 +1064,6 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi this.storageService.store(Storage.PANEL_POSITION, positionToString(this.state.panel.position), StorageScope.WORKSPACE); - this._onPanelPositionChange.fire(positionToString(this.state.panel.position)); - // Adjust CSS removeClass(panelPart.getContainer(), oldPositionValue); addClass(panelPart.getContainer(), newPositionValue); @@ -1084,6 +1082,8 @@ export abstract class Layout extends Disposable implements IWorkbenchLayoutServi } else { this.workbenchGrid.layout(); } + + this._onPanelPositionChange.fire(positionToString(this.state.panel.position)); } private savePanelDimension(): void { From 025c4a98557c50c2b1f8ace54cadb881be0e067e Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Mon, 3 Jun 2019 17:03:36 -0700 Subject: [PATCH 09/11] remove panel menu checks --- .../contrib/debug/electron-browser/debug.contribution.ts | 4 +--- .../contrib/markers/browser/markers.contribution.ts | 3 +-- .../workbench/contrib/output/browser/output.contribution.ts | 4 +--- src/vs/workbench/contrib/terminal/common/terminalMenu.ts | 5 +---- 4 files changed, 4 insertions(+), 12 deletions(-) diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts index 0f149db5c79..842cbc3bd4a 100644 --- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts @@ -50,7 +50,6 @@ import { WatchExpressionsView } from 'vs/workbench/contrib/debug/browser/watchEx import { VariablesView } from 'vs/workbench/contrib/debug/browser/variablesView'; import { ClearReplAction, Repl } from 'vs/workbench/contrib/debug/browser/repl'; import { DebugContentProvider } from 'vs/workbench/contrib/debug/common/debugContentProvider'; -import { ActivePanelContext } from 'vs/workbench/common/panel'; import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; class OpenDebugViewletAction extends ShowViewletAction { @@ -333,8 +332,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '4_panels', command: { id: OpenDebugPanelAction.ID, - title: nls.localize({ key: 'miToggleDebugConsole', comment: ['&& denotes a mnemonic'] }, "De&&bug Console"), - toggled: ActivePanelContext.isEqualTo(REPL_ID) + title: nls.localize({ key: 'miToggleDebugConsole', comment: ['&& denotes a mnemonic'] }, "De&&bug Console") }, order: 2 }); diff --git a/src/vs/workbench/contrib/markers/browser/markers.contribution.ts b/src/vs/workbench/contrib/markers/browser/markers.contribution.ts index f401b99f99e..5bd59feaed1 100644 --- a/src/vs/workbench/contrib/markers/browser/markers.contribution.ts +++ b/src/vs/workbench/contrib/markers/browser/markers.contribution.ts @@ -249,8 +249,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '4_panels', command: { id: ToggleMarkersPanelAction.ID, - title: localize({ key: 'miMarker', comment: ['&& denotes a mnemonic'] }, "&&Problems"), - toggled: ActivePanelContext.isEqualTo(Constants.MARKERS_PANEL_ID) + title: localize({ key: 'miMarker', comment: ['&& denotes a mnemonic'] }, "&&Problems") }, order: 4 }); diff --git a/src/vs/workbench/contrib/output/browser/output.contribution.ts b/src/vs/workbench/contrib/output/browser/output.contribution.ts index 29dff2fc83e..273ac9f397d 100644 --- a/src/vs/workbench/contrib/output/browser/output.contribution.ts +++ b/src/vs/workbench/contrib/output/browser/output.contribution.ts @@ -22,7 +22,6 @@ import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWo import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ITextModelService } from 'vs/editor/common/services/resolverService'; -import { ActivePanelContext } from 'vs/workbench/common/panel'; // Register Service registerSingleton(IOutputService, OutputService); @@ -121,8 +120,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '4_panels', command: { id: ToggleOutputAction.ID, - title: nls.localize({ key: 'miToggleOutput', comment: ['&& denotes a mnemonic'] }, "&&Output"), - toggled: ActivePanelContext.isEqualTo(OUTPUT_PANEL_ID) + title: nls.localize({ key: 'miToggleOutput', comment: ['&& denotes a mnemonic'] }, "&&Output") }, order: 1 }); diff --git a/src/vs/workbench/contrib/terminal/common/terminalMenu.ts b/src/vs/workbench/contrib/terminal/common/terminalMenu.ts index df62a800293..7493d800d2d 100644 --- a/src/vs/workbench/contrib/terminal/common/terminalMenu.ts +++ b/src/vs/workbench/contrib/terminal/common/terminalMenu.ts @@ -7,8 +7,6 @@ import * as nls from 'vs/nls'; import { MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; import { TERMINAL_COMMAND_ID } from 'vs/workbench/contrib/terminal/common/terminalCommands'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; -import { ActivePanelContext } from 'vs/workbench/common/panel'; -import { TERMINAL_PANEL_ID } from 'vs/workbench/contrib/terminal/common/terminal'; export function setupTerminalMenu() { @@ -18,8 +16,7 @@ export function setupTerminalMenu() { group: '4_panels', command: { id: TERMINAL_COMMAND_ID.TOGGLE, - title: nls.localize({ key: 'miToggleIntegratedTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal"), - toggled: ActivePanelContext.isEqualTo(TERMINAL_PANEL_ID) + title: nls.localize({ key: 'miToggleIntegratedTerminal', comment: ['&& denotes a mnemonic'] }, "&&Terminal") }, order: 3 }); From 2d5a699ae7d445c9c27a7c1bac540db375143773 Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 4 Jun 2019 09:17:40 -0700 Subject: [PATCH 10/11] remove viewlet checks --- .../contrib/debug/electron-browser/debug.contribution.ts | 4 +--- .../extensions/electron-browser/extensions.contribution.ts | 4 +--- src/vs/workbench/contrib/files/browser/files.contribution.ts | 4 +--- src/vs/workbench/contrib/scm/browser/scm.contribution.ts | 4 +--- .../workbench/contrib/search/browser/search.contribution.ts | 4 +--- 5 files changed, 5 insertions(+), 15 deletions(-) diff --git a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts index 842cbc3bd4a..a847adde9fd 100644 --- a/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts +++ b/src/vs/workbench/contrib/debug/electron-browser/debug.contribution.ts @@ -50,7 +50,6 @@ import { WatchExpressionsView } from 'vs/workbench/contrib/debug/browser/watchEx import { VariablesView } from 'vs/workbench/contrib/debug/browser/variablesView'; import { ClearReplAction, Repl } from 'vs/workbench/contrib/debug/browser/repl'; import { DebugContentProvider } from 'vs/workbench/contrib/debug/common/debugContentProvider'; -import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; class OpenDebugViewletAction extends ShowViewletAction { public static readonly ID = VIEWLET_ID; @@ -322,8 +321,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: nls.localize({ key: 'miViewDebug', comment: ['&& denotes a mnemonic'] }, "&&Debug"), - toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) + title: nls.localize({ key: 'miViewDebug', comment: ['&& denotes a mnemonic'] }, "&&Debug") }, order: 4 }); diff --git a/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts b/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts index 059c34f166f..34a7d2fa6e1 100644 --- a/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts +++ b/src/vs/workbench/contrib/extensions/electron-browser/extensions.contribution.ts @@ -49,7 +49,6 @@ import { ExtensionsAutoProfiler } from 'vs/workbench/contrib/extensions/electron import { onUnexpectedError } from 'vs/base/common/errors'; import { ExtensionDependencyChecker } from 'vs/workbench/contrib/extensions/electron-browser/extensionsDependencyChecker'; import { CancellationToken } from 'vs/base/common/cancellation'; -import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; import { ExtensionType } from 'vs/platform/extensions/common/extensions'; // Singletons @@ -317,8 +316,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: localize({ key: 'miViewExtensions', comment: ['&& denotes a mnemonic'] }, "E&&xtensions"), - toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) + title: localize({ key: 'miViewExtensions', comment: ['&& denotes a mnemonic'] }, "E&&xtensions") }, order: 5 }); diff --git a/src/vs/workbench/contrib/files/browser/files.contribution.ts b/src/vs/workbench/contrib/files/browser/files.contribution.ts index df4299a56c1..65c3e55c4a3 100644 --- a/src/vs/workbench/contrib/files/browser/files.contribution.ts +++ b/src/vs/workbench/contrib/files/browser/files.contribution.ts @@ -39,7 +39,6 @@ import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { ExplorerService } from 'vs/workbench/contrib/files/common/explorerService'; import { SUPPORTED_ENCODINGS } from 'vs/workbench/services/textfile/common/textfiles'; import { Schemas } from 'vs/base/common/network'; -import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; // Viewlet Action export class OpenExplorerViewletAction extends ShowViewletAction { @@ -422,8 +421,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: nls.localize({ key: 'miViewExplorer', comment: ['&& denotes a mnemonic'] }, "&&Explorer"), - toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) + title: nls.localize({ key: 'miViewExplorer', comment: ['&& denotes a mnemonic'] }, "&&Explorer") }, order: 1 }); diff --git a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts index 5a498b2430b..db9568a6eb4 100644 --- a/src/vs/workbench/contrib/scm/browser/scm.contribution.ts +++ b/src/vs/workbench/contrib/scm/browser/scm.contribution.ts @@ -24,7 +24,6 @@ import { KeybindingsRegistry, KeybindingWeight } from 'vs/platform/keybinding/co import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { SCMService } from 'vs/workbench/contrib/scm/common/scmService'; -import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; class OpenSCMViewletAction extends ShowViewletAction { @@ -107,8 +106,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: localize({ key: 'miViewSCM', comment: ['&& denotes a mnemonic'] }, "S&&CM"), - toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) + title: localize({ key: 'miViewSCM', comment: ['&& denotes a mnemonic'] }, "S&&CM") }, order: 3 }); diff --git a/src/vs/workbench/contrib/search/browser/search.contribution.ts b/src/vs/workbench/contrib/search/browser/search.contribution.ts index f15b48b096b..f675087eeb4 100644 --- a/src/vs/workbench/contrib/search/browser/search.contribution.ts +++ b/src/vs/workbench/contrib/search/browser/search.contribution.ts @@ -55,7 +55,6 @@ import { IEditorService } from 'vs/workbench/services/editor/common/editorServic import { IPanelService } from 'vs/workbench/services/panel/common/panelService'; import { ISearchConfiguration, ISearchConfigurationProperties, PANEL_ID, VIEWLET_ID, VIEW_CONTAINER, VIEW_ID } from 'vs/workbench/services/search/common/search'; import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; -import { ActiveViewletContext } from 'vs/workbench/common/viewlet'; registerSingleton(ISearchWorkbenchService, SearchWorkbenchService, true); @@ -771,8 +770,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '3_views', command: { id: VIEWLET_ID, - title: nls.localize({ key: 'miViewSearch', comment: ['&& denotes a mnemonic'] }, "&&Search"), - toggled: ActiveViewletContext.isEqualTo(VIEWLET_ID) + title: nls.localize({ key: 'miViewSearch', comment: ['&& denotes a mnemonic'] }, "&&Search") }, order: 2 }); From 251282007310469e5870049e1a20b062604e31d4 Mon Sep 17 00:00:00 2001 From: SteVen Batten Date: Tue, 4 Jun 2019 09:45:36 -0700 Subject: [PATCH 11/11] consistent use of checks --- .../browser/actions/layoutActions.ts | 60 ++++--------------- .../parts/editor/breadcrumbsControl.ts | 15 +---- .../browser/parts/panel/panelActions.ts | 16 +---- .../codeEditor/browser/toggleMinimap.ts | 15 +---- 4 files changed, 18 insertions(+), 88 deletions(-) diff --git a/src/vs/workbench/browser/actions/layoutActions.ts b/src/vs/workbench/browser/actions/layoutActions.ts index bcca778620b..8571f489228 100644 --- a/src/vs/workbench/browser/actions/layoutActions.ts +++ b/src/vs/workbench/browser/actions/layoutActions.ts @@ -62,19 +62,9 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleActivityBarVisibilityAction.ID, - title: nls.localize({ key: 'miHideActivityBar', comment: ['&& denotes a mnemonic'] }, "Hide &&Activity Bar") + title: nls.localize({ key: 'miShowActivityBar', comment: ['&& denotes a mnemonic'] }, "Show &&Activity Bar"), + toggled: ContextKeyExpr.equals('config.workbench.activityBar.visible', true) }, - when: ContextKeyExpr.equals('config.workbench.activityBar.visible', true), - order: 4 -}); - -MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', - command: { - id: ToggleActivityBarVisibilityAction.ID, - title: nls.localize({ key: 'miShowActivityBar', comment: ['&& denotes a mnemonic'] }, "Show &&Activity Bar") - }, - when: ContextKeyExpr.equals('config.workbench.activityBar.visible', false), order: 4 }); @@ -216,7 +206,7 @@ export class ToggleSidebarPositionAction extends Action { registry.registerWorkbenchAction(new SyncActionDescriptor(ToggleSidebarPositionAction, ToggleSidebarPositionAction.ID, ToggleSidebarPositionAction.LABEL), 'View: Toggle Side Bar Position', viewCategory); MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', + group: '3_workbench_layout_move', command: { id: ToggleSidebarPositionAction.ID, title: nls.localize({ key: 'miMoveSidebarRight', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Right") @@ -226,7 +216,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { }); MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', + group: '3_workbench_layout_move', command: { id: ToggleSidebarPositionAction.ID, title: nls.localize({ key: 'miMoveSidebarLeft', comment: ['&& denotes a mnemonic'] }, "&&Move Side Bar Left") @@ -290,19 +280,9 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleSidebarVisibilityAction.ID, - title: nls.localize({ key: 'miHideSidebar', comment: ['&& denotes a mnemonic'] }, "&&Hide Side Bar"), + title: nls.localize({ key: 'miShowSidebar', comment: ['&& denotes a mnemonic'] }, "Show &&Side Bar"), + toggled: SideBarVisibleContext }, - when: SideBarVisibleContext, - order: 1 -}); - -MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', - command: { - id: ToggleSidebarVisibilityAction.ID, - title: nls.localize({ key: 'miShowSidebar', comment: ['&& denotes a mnemonic'] }, "&&Show Side Bar"), - }, - when: SideBarVisibleContext.toNegated(), order: 1 }); @@ -340,19 +320,9 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleStatusbarVisibilityAction.ID, - title: nls.localize({ key: 'miHideStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Hide Status Bar") + title: nls.localize({ key: 'miShowStatusbar', comment: ['&& denotes a mnemonic'] }, "Show S&&tatus Bar"), + toggled: ContextKeyExpr.equals('config.workbench.statusBar.visible', true) }, - when: ContextKeyExpr.equals('config.workbench.statusBar.visible', true), - order: 3 -}); - -MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', - command: { - id: ToggleStatusbarVisibilityAction.ID, - title: nls.localize({ key: 'miShowStatusbar', comment: ['&& denotes a mnemonic'] }, "&&Show Status Bar") - }, - when: ContextKeyExpr.equals('config.workbench.statusBar.visible', false), order: 3 }); @@ -477,19 +447,9 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { group: '2_workbench_layout', command: { id: ToggleMenuBarAction.ID, - title: nls.localize({ key: 'miHideMenuBar', comment: ['&& denotes a mnemonic'] }, "Hide Menu &&Bar") + title: nls.localize({ key: 'miShowMenuBar', comment: ['&& denotes a mnemonic'] }, "Show Menu &&Bar"), + toggled: ContextKeyExpr.and(IsMacContext.toNegated(), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'hidden'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'toggle')) }, - when: ContextKeyExpr.and(IsMacContext.toNegated(), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'hidden'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'toggle')), - order: 0 -}); - -MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', - command: { - id: ToggleMenuBarAction.ID, - title: nls.localize({ key: 'miShowMenuBar', comment: ['&& denotes a mnemonic'] }, "Show Menu &&Bar") - }, - when: ContextKeyExpr.and(IsMacContext.toNegated(), ContextKeyExpr.and(ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'visible'), ContextKeyExpr.notEquals('config.window.menuBarVisibility', 'default'))), order: 0 }); diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index 9801fa935f4..f907d999953 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -499,18 +499,9 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { order: 3, command: { id: 'breadcrumbs.toggle', - title: localize('miShowBreadcrumbs', "Show &&Breadcrumbs") - }, - when: ContextKeyExpr.equals('config.breadcrumbs.enabled', false) -}); -MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { - group: '5_editor', - order: 3, - command: { - id: 'breadcrumbs.toggle', - title: localize('miHideBreadcrumbs', "Hide &&Breadcrumbs") - }, - when: ContextKeyExpr.equals('config.breadcrumbs.enabled', true) + title: localize('miShowBreadcrumbs', "Show &&Breadcrumbs"), + toggled: ContextKeyExpr.equals('config.breadcrumbs.enabled', true) + } }); CommandsRegistry.registerCommand('breadcrumbs.toggle', accessor => { let config = accessor.get(IConfigurationService); diff --git a/src/vs/workbench/browser/parts/panel/panelActions.ts b/src/vs/workbench/browser/parts/panel/panelActions.ts index c79111da72d..5e9021847a3 100644 --- a/src/vs/workbench/browser/parts/panel/panelActions.ts +++ b/src/vs/workbench/browser/parts/panel/panelActions.ts @@ -273,23 +273,13 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { command: { id: TogglePanelAction.ID, title: nls.localize({ key: 'miShowPanel', comment: ['&& denotes a mnemonic'] }, "Show &&Panel"), + toggled: ActivePanelContext }, - when: ActivePanelContext.toNegated(), order: 5 }); MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', - command: { - id: TogglePanelAction.ID, - title: nls.localize({ key: 'miHidePanel', comment: ['&& denotes a mnemonic'] }, "Hide &&Panel"), - }, - when: ActivePanelContext, - order: 5 -}); - -MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', + group: '3_workbench_layout_move', command: { id: TogglePanelPositionAction.ID, title: TogglePanelPositionAction.MOVE_TO_RIGHT_LABEL @@ -299,7 +289,7 @@ MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { }); MenuRegistry.appendMenuItem(MenuId.MenubarAppearanceMenu, { - group: '2_workbench_layout', + group: '3_workbench_layout_move', command: { id: TogglePanelPositionAction.ID, title: TogglePanelPositionAction.MOVE_TO_BOTTOM_LABEL diff --git a/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts b/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts index f2e9ced99e4..a7dc0be703a 100644 --- a/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts +++ b/src/vs/workbench/contrib/codeEditor/browser/toggleMinimap.ts @@ -36,19 +36,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '5_editor', command: { id: ToggleMinimapAction.ID, - title: nls.localize({ key: 'miShowMinimap', comment: ['&& denotes a mnemonic'] }, "Show &&Minimap") + title: nls.localize({ key: 'miShowMinimap', comment: ['&& denotes a mnemonic'] }, "Show &&Minimap"), + toggled: ContextKeyExpr.equals('config.editor.minimap.enabled', true) }, - when: ContextKeyExpr.equals('config.editor.minimap.enabled', false), order: 2 }); - -MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { - group: '5_editor', - command: { - id: ToggleMinimapAction.ID, - title: nls.localize({ key: 'miHideMinimap', comment: ['&& denotes a mnemonic'] }, "Hide &&Minimap") - }, - when: ContextKeyExpr.equals('config.editor.minimap.enabled', true), - order: 2 -}); -