diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index b9807b165221ce2dbe535e3437b2e4d0a12f3aee..ea9ccf27ca792ae608868f27d8c024d9cf7f6ceb 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -27,6 +27,7 @@ export interface IBaseCommandAction { export interface ICommandAction extends IBaseCommandAction { iconLocation?: { dark: URI; light?: URI; }; precondition?: ContextKeyExpr; + toggled?: ContextKeyExpr; } export interface ISerializableCommandAction extends IBaseCommandAction { @@ -220,7 +221,6 @@ export class ExecuteCommandAction extends Action { } export class SubmenuItemAction extends Action { - // private _options: IMenuActionOptions; readonly item: ISubmenuItem; constructor(item: ISubmenuItem) { @@ -246,6 +246,8 @@ export class MenuItemAction extends ExecuteCommandAction { typeof item.title === 'string' ? super(item.id, item.title, commandService) : super(item.id, item.title.value, commandService); this._cssClass = undefined; this._enabled = !item.precondition || contextKeyService.contextMatchesRules(item.precondition); + this._checked = item.toggled && contextKeyService.contextMatchesRules(item.toggled); + this._options = options || {}; this.item = item; diff --git a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts index 28ed4f7fc3d5bb9a55c078ad7034ff496d5408a0..515593ff365cce904c7a9269bc928f12a9879a79 100644 --- a/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts +++ b/src/vs/workbench/browser/parts/editor/breadcrumbsControl.ts @@ -458,7 +458,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { order: 99, command: { id: 'breadcrumbs.toggle', - title: localize('miToggleBreadcrumbs', "Toggle &&Breadcrumbs") + title: localize('miToggleBreadcrumbs', "Toggle &&Breadcrumbs"), + toggled: ContextKeyExpr.equals('config.breadcrumbs.enabled', true) } }); CommandsRegistry.registerCommand('breadcrumbs.toggle', accessor => { diff --git a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts index 3c0365e941801c9524ce214c3918461c8d88f9d5..260eaa4b47cc9b63ef6165547ebfb85da2cc2da4 100644 --- a/src/vs/workbench/browser/parts/titlebar/menubarControl.ts +++ b/src/vs/workbench/browser/parts/titlebar/menubarControl.ts @@ -179,10 +179,6 @@ export class MenubarControl extends Disposable { return enableMenuBarMnemonics; } - private get currentAutoSaveSetting(): string { - return this.configurationService.getValue('files.autoSave'); - } - private get currentSidebarPosition(): string { return this.configurationService.getValue('workbench.sideBar.location'); } @@ -485,17 +481,6 @@ export class MenubarControl extends Disposable { this.mnemonics.set(KeyCodeUtils.fromString(mnemonic), menuIndex); } - private setCheckedStatus(action: IAction | IMenubarMenuItemAction) { - switch (action.id) { - case 'workbench.action.toggleAutoSave': - action.checked = this.currentAutoSaveSetting !== 'off'; - break; - - default: - break; - } - } - private calculateActionLabel(action: IAction | IMenubarMenuItemAction): string { let label = action.label; switch (action.id) { @@ -717,7 +702,6 @@ export class MenubarControl extends Disposable { target.push(new SubmenuAction(action.label, submenuActions)); } else { action.label = this.calculateActionLabel(action); - this.setCheckedStatus(action); target.push(action); } } @@ -987,9 +971,7 @@ export class MenubarControl extends Disposable { keybinding: this.getMenubarKeybinding(menuItem.id) }; - this.setCheckedStatus(menubarMenuItem); menubarMenuItem.label = this.calculateActionLabel(menubarMenuItem); - menuToPopulate.items.push(menubarMenuItem); } }); diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/toggleMinimap.ts b/src/vs/workbench/parts/codeEditor/electron-browser/toggleMinimap.ts index dd032a17ec29c7112bf0bb8e1b4b0afb3d4cf804..0b7cf367959c13d13ad28fc4491b171dfc18b06b 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/toggleMinimap.ts +++ b/src/vs/workbench/parts/codeEditor/electron-browser/toggleMinimap.ts @@ -9,6 +9,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { Action } from 'vs/base/common/actions'; import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; export class ToggleMinimapAction extends Action { public static readonly ID = 'editor.action.toggleMinimap'; @@ -35,7 +36,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarViewMenu, { group: '5_editor', command: { id: ToggleMinimapAction.ID, - title: nls.localize({ key: 'miToggleMinimap', comment: ['&& denotes a mnemonic'] }, "Toggle &&Minimap") + title: nls.localize({ key: 'miToggleMinimap', comment: ['&& denotes a mnemonic'] }, "Toggle &&Minimap"), + toggled: ContextKeyExpr.equals('config.editor.minimap.enabled', true) }, order: 2 }); diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderControlCharacter.ts b/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderControlCharacter.ts index f7f7e580297b27eca9179fa5a20403a9a79f4481..e0e854880ff5e6e2092a28a6a5c0b56809fe7e80 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderControlCharacter.ts +++ b/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderControlCharacter.ts @@ -9,6 +9,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { Action } from 'vs/base/common/actions'; import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; export class ToggleRenderControlCharacterAction extends Action { @@ -36,7 +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'] }, "Toggle &&Control Characters"), + toggled: ContextKeyExpr.equals('config.editor.renderControlCharacters', true) }, order: 4 }); diff --git a/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderWhitespace.ts b/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderWhitespace.ts index 8b3f0bf808e486262f049190ef298060c39e9c80..b6d0bc806eb5c083754ada3283401915e968b1a1 100644 --- a/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderWhitespace.ts +++ b/src/vs/workbench/parts/codeEditor/electron-browser/toggleRenderWhitespace.ts @@ -9,6 +9,7 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { Action } from 'vs/base/common/actions'; import { SyncActionDescriptor, MenuRegistry, MenuId } from 'vs/platform/actions/common/actions'; +import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; export class ToggleRenderWhitespaceAction extends Action { @@ -44,7 +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'] }, "Toggle &&Render Whitespace"), + toggled: ContextKeyExpr.notEquals('config.editor.renderWhitespace', 'none') }, order: 3 }); diff --git a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts index 6f49cecc5bd71455c993b7e0b2c4e7de2131005e..0e1d9d3b494bc670ed94cdad7615ccd0957c7570 100644 --- a/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts +++ b/src/vs/workbench/parts/files/electron-browser/fileActions.contribution.ts @@ -555,7 +555,8 @@ MenuRegistry.appendMenuItem(MenuId.MenubarFileMenu, { group: '5_autosave', command: { id: ToggleAutoSaveAction.ID, - title: nls.localize({ key: 'miAutoSave', comment: ['&& denotes a mnemonic'] }, "A&&uto Save") + title: nls.localize({ key: 'miAutoSave', comment: ['&& denotes a mnemonic'] }, "A&&uto Save"), + toggled: ContextKeyExpr.notEquals('config.files.autoSave', 'off') }, order: 1 });