diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts index 0daa5477ccfccd40793fb50305abc09ad6a9914f..75b41031e48d30c6c82ebbe4b474aa5e79351f93 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarActions.ts @@ -11,7 +11,7 @@ import DOM = require('vs/base/browser/dom'); import { TPromise } from 'vs/base/common/winjs.base'; import { Builder, $ } from 'vs/base/browser/builder'; import { DelayedDragHandler } from 'vs/base/browser/dnd'; -import { Action, IAction } from 'vs/base/common/actions'; +import { Action } from 'vs/base/common/actions'; import { BaseActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { IActivityBarService, ProgressBadge, TextBadge, NumberBadge, IconBadge, IBadge } from 'vs/workbench/services/activity/common/activityBarService'; import Event, { Emitter } from 'vs/base/common/event'; @@ -21,7 +21,6 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ViewletDescriptor } from 'vs/workbench/browser/viewlet'; import { dispose } from 'vs/base/common/lifecycle'; -import { ResolvedKeybinding } from 'vs/base/common/keyCodes'; import { IViewletService, } from 'vs/workbench/services/viewlet/browser/viewlet'; import { IPartService, Parts } from 'vs/workbench/services/part/common/partService'; @@ -449,15 +448,11 @@ export class ViewletOverflowActivityActionItem extends BaseActionItem { this.contextMenuService.showContextMenu({ getAnchor: () => this.builder.getHTMLElement(), getActions: () => TPromise.as(this.actions), - getKeyBinding: (action) => this.getKeybinding(action), + getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id), onHide: () => dispose(this.actions) }); } - private getKeybinding(action: IAction): ResolvedKeybinding { - return this.keybindingService.lookupKeybinding(action.id); - } - private getActions(): OpenViewletAction[] { const activeViewlet = this.viewletService.getActiveViewlet(); diff --git a/src/vs/workbench/browser/parts/compositePart.ts b/src/vs/workbench/browser/parts/compositePart.ts index c0056e8253ef3151c55b5ca79c23bd393018ccf9..1e386f660470fb5f4ea84fe713233c63ea026fd4 100644 --- a/src/vs/workbench/browser/parts/compositePart.ts +++ b/src/vs/workbench/browser/parts/compositePart.ts @@ -342,7 +342,7 @@ export abstract class CompositePart extends Part { compositeTitle = compositeDescriptor.name; } - let keybinding = this.keybindingService.lookupKeybinding(compositeId); + const keybinding = this.keybindingService.lookupKeybinding(compositeId); this.titleLabel.updateTitle(compositeId, compositeTitle, keybinding ? keybinding.getLabel() : undefined); @@ -423,9 +423,7 @@ export abstract class CompositePart extends Part { this.toolBar = new ToolBar(div.getHTMLElement(), this.contextMenuService, { actionItemProvider: (action: Action) => this.actionItemProvider(action), orientation: ActionsOrientation.HORIZONTAL, - getKeyBinding: (action) => { - return this.keybindingService.lookupKeybinding(action.id); - }, + getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id) }); }); diff --git a/src/vs/workbench/browser/parts/panel/panelActions.ts b/src/vs/workbench/browser/parts/panel/panelActions.ts index 5aedd8096bb72f971e863812bc007dc98e5b9edd..8ef9ca2e6db416f76627f15c14bd59d2650550d4 100644 --- a/src/vs/workbench/browser/parts/panel/panelActions.ts +++ b/src/vs/workbench/browser/parts/panel/panelActions.ts @@ -46,6 +46,7 @@ export class PanelAction extends Action { private getKeybindingLabel(id: string): string { const keys = this.keybindingService.lookupKeybinding(id); + return keys ? keys.getLabel() : ''; } } diff --git a/src/vs/workbench/browser/viewlet.ts b/src/vs/workbench/browser/viewlet.ts index 9e2934da9fb7e07d081ff292fcf6266ed289e7ca..95fe8c06a4edf3cfe1e9fa7fe06de7a94ec11017 100644 --- a/src/vs/workbench/browser/viewlet.ts +++ b/src/vs/workbench/browser/viewlet.ts @@ -343,9 +343,7 @@ export abstract class AdaptiveCollapsibleViewletView extends FixedCollapsibleVie orientation: ActionsOrientation.HORIZONTAL, actionItemProvider: (action) => { return this.getActionItem(action); }, ariaLabel: nls.localize('viewToolbarAriaLabel', "{0} actions", this.viewName), - getKeyBinding: (action) => { - return this.keybindingService.lookupKeybinding(action.id); - } + getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id) }); this.toolBar.actionRunner = this.actionRunner; this.toolBar.setActions(prepareActions(this.getActions()), prepareActions(this.getSecondaryActions()))(); @@ -474,9 +472,7 @@ export abstract class CollapsibleViewletView extends CollapsibleView implements orientation: ActionsOrientation.HORIZONTAL, actionItemProvider: (action) => { return this.getActionItem(action); }, ariaLabel: nls.localize('viewToolbarAriaLabel', "{0} actions", this.viewName), - getKeyBinding: (action) => { - return this.keybindingService.lookupKeybinding(action.id); - } + getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id) }); this.toolBar.actionRunner = this.actionRunner; this.toolBar.setActions(prepareActions(this.getActions()), prepareActions(this.getSecondaryActions()))(); diff --git a/src/vs/workbench/electron-browser/window.ts b/src/vs/workbench/electron-browser/window.ts index c215ebaacc06fc671b2df84e8f932240608a967e..d3c07737b1e4ca8233deb4452f3a650334d8d1d0 100644 --- a/src/vs/workbench/electron-browser/window.ts +++ b/src/vs/workbench/electron-browser/window.ts @@ -318,9 +318,7 @@ export class ElectronWindow { this.contextMenuService.showContextMenu({ getAnchor: () => target, getActions: () => TPromise.as(TextInputActions), - getKeyBinding: action => { - return this.keybindingService.lookupKeybinding(action.id); - } + getKeyBinding: action => this.keybindingService.lookupKeybinding(action.id) }); } } @@ -344,6 +342,9 @@ export class ElectronWindow { return this.partService.joinCreation().then(() => { return arrays.coalesce(actionIds.map(id => { const binding = this.keybindingService.lookupKeybinding(id); + if (!binding) { + return null; + } // first try to resolve a native accelerator const electronAccelerator = binding.getElectronAccelerator(); diff --git a/src/vs/workbench/parts/files/browser/fileActions.contribution.ts b/src/vs/workbench/parts/files/browser/fileActions.contribution.ts index 1b8bb1ff4c872a6eb86bdf1a01a43f4d4d7246f4..348ad26288894574d8670cdbc6d3583ad9cbc5d9 100644 --- a/src/vs/workbench/parts/files/browser/fileActions.contribution.ts +++ b/src/vs/workbench/parts/files/browser/fileActions.contribution.ts @@ -11,7 +11,7 @@ import { isMacintosh } from 'vs/base/common/platform'; import { ActionItem, BaseActionItem, Separator } from 'vs/base/browser/ui/actionbar/actionbar'; import { Scope, IActionBarRegistry, Extensions as ActionBarExtensions, ActionBarContributor } from 'vs/workbench/browser/actionBarRegistry'; import { IEditorInputActionContext, IEditorInputAction, EditorInputActionContributor } from 'vs/workbench/browser/parts/editor/baseEditor'; -import { GlobalNewUntitledFileAction, SaveFileAsAction, OpenFileAction, ShowOpenedFileInNewWindow, CopyPathAction, GlobalCopyPathAction, RevealInOSAction, GlobalRevealInOSAction, pasteIntoFocusedFilesExplorerViewItem, FocusOpenEditorsView, FocusFilesExplorer, GlobalCompareResourcesAction, GlobalNewFileAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, keybindingForAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView } from 'vs/workbench/parts/files/browser/fileActions'; +import { GlobalNewUntitledFileAction, SaveFileAsAction, OpenFileAction, ShowOpenedFileInNewWindow, CopyPathAction, GlobalCopyPathAction, RevealInOSAction, GlobalRevealInOSAction, pasteIntoFocusedFilesExplorerViewItem, FocusOpenEditorsView, FocusFilesExplorer, GlobalCompareResourcesAction, GlobalNewFileAction, GlobalNewFolderAction, RevertFileAction, SaveFilesAction, SaveAllAction, SaveFileAction, MoveFileToTrashAction, TriggerRenameFileAction, PasteFileAction, CopyFileAction, SelectResourceForCompareAction, CompareResourcesAction, NewFolderAction, NewFileAction, OpenToSideAction, ShowActiveFileInExplorer, CollapseExplorerView, RefreshExplorerView } from 'vs/workbench/parts/files/browser/fileActions'; import { RevertLocalChangesAction, AcceptLocalChangesAction, CONFLICT_RESOLUTION_SCHEME } from 'vs/workbench/parts/files/browser/saveErrorHandler'; import { SyncActionDescriptor, MenuId, MenuRegistry } from 'vs/platform/actions/common/actions'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actionRegistry'; @@ -133,7 +133,7 @@ class FilesViewerActionContributor extends ActionBarContributor { if (context && context.element instanceof FileStat) { // Any other item with keybinding - const keybinding = keybindingForAction(action.id, this.keybindingService); + const keybinding = this.keybindingService.lookupKeybinding(action.id); if (keybinding) { return new ActionItem(context, action, { label: true, keybinding: keybinding.getLabel() }); } diff --git a/src/vs/workbench/parts/files/browser/fileActions.ts b/src/vs/workbench/parts/files/browser/fileActions.ts index cfdedab871fe1439206ad47fee52af02c6b9b2bc..e7b10bc1ff7a8f309113e2a862f16f4e922d0bba 100644 --- a/src/vs/workbench/parts/files/browser/fileActions.ts +++ b/src/vs/workbench/parts/files/browser/fileActions.ts @@ -34,7 +34,6 @@ import { IActionProvider } from 'vs/base/parts/tree/browser/actionsRenderer'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { CollapseAction } from 'vs/workbench/browser/viewlet'; -import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService'; import { IQuickOpenService, IFilePickOpenEntry } from 'vs/platform/quickOpen/common/quickOpen'; import { IHistoryService } from 'vs/workbench/services/history/common/history'; @@ -43,7 +42,6 @@ import { Position, IResourceInput, IEditorInput } from 'vs/platform/editor/commo import { IInstantiationService, IConstructorSignature2, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IMessageService, IMessageWithAction, IConfirmation, Severity, CancelAction } from 'vs/platform/message/common/message'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; -import { ResolvedKeybinding } from 'vs/base/common/keyCodes'; import { getCodeEditor } from 'vs/editor/common/services/codeEditorService'; import { IEditorViewState } from 'vs/editor/common/editorCommon'; import { IBackupFileService } from 'vs/workbench/services/backup/common/backup'; @@ -1959,10 +1957,6 @@ export class GlobalCopyPathAction extends Action { } } -export function keybindingForAction(id: string, keybindingService: IKeybindingService): ResolvedKeybinding { - return keybindingService.lookupKeybinding(id); -} - export function validateFileName(parent: IFileStat, name: string, allowOverwriting: boolean = false): string { // Produce a well formed file name diff --git a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts b/src/vs/workbench/parts/files/browser/views/explorerViewer.ts index 834ea127c47d097e41f56633bf20a42a0c354e12..9875befbb440a85f7d2e68d7b126399e90deb995 100644 --- a/src/vs/workbench/parts/files/browser/views/explorerViewer.ts +++ b/src/vs/workbench/parts/files/browser/views/explorerViewer.ts @@ -28,7 +28,7 @@ import { IFilesConfiguration } from 'vs/workbench/parts/files/common/files'; import { ITextFileService } from 'vs/workbench/services/textfile/common/textfiles'; import { IFileOperationResult, FileOperationResult, IFileService, isEqual, isParent } from 'vs/platform/files/common/files'; import { ResourceMap } from 'vs/base/common/map'; -import { DuplicateFileAction, ImportFileAction, keybindingForAction, IEditableData, IFileViewletState } from 'vs/workbench/parts/files/browser/fileActions'; +import { DuplicateFileAction, ImportFileAction, IEditableData, IFileViewletState } from 'vs/workbench/parts/files/browser/fileActions'; import { IDataSource, ITree, IElementCallback, IAccessibilityProvider, IRenderer, ContextMenuEvent, ISorter, IFilter, IDragAndDrop, IDragAndDropData, IDragOverReaction, DRAG_OVER_ACCEPT_BUBBLE_DOWN, DRAG_OVER_ACCEPT_BUBBLE_DOWN_COPY, DRAG_OVER_ACCEPT_BUBBLE_UP, DRAG_OVER_ACCEPT_BUBBLE_UP_COPY, DRAG_OVER_REJECT } from 'vs/base/parts/tree/browser/tree'; import { DesktopDragAndDropData, ExternalElementsDragAndDropData } from 'vs/base/parts/tree/browser/treeDnd'; import { ClickBehavior, DefaultController } from 'vs/base/parts/tree/browser/treeDefaults'; @@ -484,7 +484,7 @@ export class FileController extends DefaultController { }); }, getActionItem: this.state.actionProvider.getActionItem.bind(this.state.actionProvider, tree, stat), - getKeyBinding: (a): ResolvedKeybinding => keybindingForAction(a.id, this.keybindingService), + getKeyBinding: (a): ResolvedKeybinding => this.keybindingService.lookupKeybinding(a.id), getActionsContext: (event) => { return { viewletState: this.state, diff --git a/src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts b/src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts index c8e80348bcda1f2e50c3f0a32bbb910a812a528d..e662f47ce91efece4947ffd27254a7c63469eb48 100644 --- a/src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts +++ b/src/vs/workbench/parts/files/browser/views/openEditorsViewer.ts @@ -28,7 +28,7 @@ import { explorerItemToFileResource } from 'vs/workbench/parts/files/common/file import { ITextFileService, AutoSaveMode } from 'vs/workbench/services/textfile/common/textfiles'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { EditorStacksModel, EditorGroup } from 'vs/workbench/common/editor/editorStacksModel'; -import { keybindingForAction, SaveFileAction, RevertFileAction, SaveFileAsAction, OpenToSideAction, SelectResourceForCompareAction, CompareResourcesAction, SaveAllInGroupAction } from 'vs/workbench/parts/files/browser/fileActions'; +import { SaveFileAction, RevertFileAction, SaveFileAsAction, OpenToSideAction, SelectResourceForCompareAction, CompareResourcesAction, SaveAllInGroupAction } from 'vs/workbench/parts/files/browser/fileActions'; import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService'; import { CloseOtherEditorsInGroupAction, CloseEditorAction, CloseEditorsInGroupAction } from 'vs/workbench/browser/parts/editor/editorActions'; @@ -112,7 +112,7 @@ export class Renderer implements IRenderer { const editorGroupActions = this.actionProvider.getEditorGroupActions(); editorGroupActions.forEach(a => { - const key = keybindingForAction(a.id, this.keybindingService); + const key = this.keybindingService.lookupKeybinding(a.id); editorGroupTemplate.actionBar.push(a, { icon: true, label: false, keybinding: key ? key.getLabel() : void 0 }); }); @@ -125,7 +125,7 @@ export class Renderer implements IRenderer { const openEditorActions = this.actionProvider.getOpenEditorActions(); openEditorActions.forEach(a => { - const key = keybindingForAction(a.id, this.keybindingService); + const key = this.keybindingService.lookupKeybinding(a.id); editorTemplate.actionBar.push(a, { icon: true, label: false, keybinding: key ? key.getLabel() : void 0 }); }); @@ -261,7 +261,7 @@ export class Controller extends DefaultController { this.contextMenuService.showContextMenu({ getAnchor: () => anchor, getActions: () => this.actionProvider.getSecondaryActions(tree, element), - getKeyBinding: (action) => keybindingForAction(action.id, this.keybindingService), + getKeyBinding: (action) => this.keybindingService.lookupKeybinding(action.id), onHide: (wasCancelled?: boolean) => { if (wasCancelled) { tree.DOMFocus(); diff --git a/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts b/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts index caaaa2bcdac5e1f99c07c95851ca37bce1a0c5db..4755311f5816afb03ce97e6fe75bbeb08bd60af3 100644 --- a/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts +++ b/src/vs/workbench/parts/quickopen/browser/commandsHandler.ts @@ -297,9 +297,9 @@ export class CommandsHandler extends QuickOpenHandler { for (let i = 0; i < actionDescriptors.length; i++) { const actionDescriptor = actionDescriptors[i]; - const keybind = this.keybindingService.lookupKeybinding(actionDescriptor.id); - const keyLabel = keybind ? keybind.getLabel() : ''; - const keyAriaLabel = keybind ? keybind.getAriaLabel() : ''; + const keybinding = this.keybindingService.lookupKeybinding(actionDescriptor.id); + const keyLabel = keybinding ? keybinding.getLabel() : ''; + const keyAriaLabel = keybinding ? keybinding.getAriaLabel() : ''; if (actionDescriptor.label) { @@ -329,9 +329,9 @@ export class CommandsHandler extends QuickOpenHandler { for (let i = 0; i < actions.length; i++) { const action = actions[i]; - const keybind = this.keybindingService.lookupKeybinding(action.id); - const keyLabel = keybind ? keybind.getLabel() : ''; - const keyAriaLabel = keybind ? keybind.getAriaLabel() : ''; + const keybinding = this.keybindingService.lookupKeybinding(action.id); + const keyLabel = keybinding ? keybinding.getLabel() : ''; + const keyAriaLabel = keybinding ? keybinding.getAriaLabel() : ''; const label = action.label; if (label) { @@ -358,9 +358,9 @@ export class CommandsHandler extends QuickOpenHandler { : action.item.title; if (label) { const labelHighlights = wordFilter(searchValue, label); - const keybind = this.keybindingService.lookupKeybinding(action.item.id); - const keyLabel = keybind ? keybind.getLabel() : ''; - const keyAriaLabel = keybind ? keybind.getAriaLabel() : ''; + const keybinding = this.keybindingService.lookupKeybinding(action.item.id); + const keyLabel = keybinding ? keybinding.getLabel() : ''; + const keyAriaLabel = keybinding ? keybinding.getAriaLabel() : ''; const alias = action.item.alias ? action.item.alias : null; const aliasHighlights = alias ? wordFilter(searchValue, alias) : null; if (labelHighlights || aliasHighlights) { diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts index 0b9e22345e48a7027fa49c0c08a2f137965beae3..a462a245b5b0ae441f1b4f84b9666e171331e6b4 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts @@ -174,13 +174,7 @@ export class TerminalPanel extends Panel { getAnchor: () => anchor, getActions: () => TPromise.as(this._getContextMenuActions()), getActionsContext: () => this._parentDomElement, - getKeyBinding: (action) => { - const kb = this._keybindingService.lookupKeybinding(action.id); - if (kb) { - return kb; - } - return null; - } + getKeyBinding: (action) => this._keybindingService.lookupKeybinding(action.id) }); } this._cancelContextMenu = false;