提交 1d942166 编写于 作者: J Joao Moreno

extension editor: keybindings

上级 e1920d0d
...@@ -37,6 +37,8 @@ import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; ...@@ -37,6 +37,8 @@ import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
import { CombinedInstallAction, UpdateAction, EnableAction } from './extensionsActions'; import { CombinedInstallAction, UpdateAction, EnableAction } from './extensionsActions';
import WebView from 'vs/workbench/parts/html/browser/webview'; import WebView from 'vs/workbench/parts/html/browser/webview';
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService'; import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
import { Keybinding } from 'vs/base/common/keyCodes';
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
function renderBody(body: string): string { function renderBody(body: string): string {
return `<!DOCTYPE html> return `<!DOCTYPE html>
...@@ -128,7 +130,8 @@ export class ExtensionEditor extends BaseEditor { ...@@ -128,7 +130,8 @@ export class ExtensionEditor extends BaseEditor {
@IViewletService private viewletService: IViewletService, @IViewletService private viewletService: IViewletService,
@IExtensionsWorkbenchService private extensionsWorkbenchService: IExtensionsWorkbenchService, @IExtensionsWorkbenchService private extensionsWorkbenchService: IExtensionsWorkbenchService,
@IThemeService private themeService: IThemeService, @IThemeService private themeService: IThemeService,
@IWorkbenchEditorService private editorService: IWorkbenchEditorService @IWorkbenchEditorService private editorService: IWorkbenchEditorService,
@IKeybindingService private keybindingService: IKeybindingService
) { ) {
super(ExtensionEditor.ID, telemetryService); super(ExtensionEditor.ID, telemetryService);
this._highlight = null; this._highlight = null;
...@@ -281,7 +284,7 @@ export class ExtensionEditor extends BaseEditor { ...@@ -281,7 +284,7 @@ export class ExtensionEditor extends BaseEditor {
const content = append(this.content, $('div', { class: 'subcontent' })); const content = append(this.content, $('div', { class: 'subcontent' }));
ExtensionEditor.renderSettings(content, manifest); ExtensionEditor.renderSettings(content, manifest);
ExtensionEditor.renderCommands(content, manifest); this.renderCommands(content, manifest);
ExtensionEditor.renderThemes(content, manifest); ExtensionEditor.renderThemes(content, manifest);
ExtensionEditor.renderJSONValidation(content, manifest); ExtensionEditor.renderJSONValidation(content, manifest);
ExtensionEditor.renderDebuggers(content, manifest); ExtensionEditor.renderDebuggers(content, manifest);
...@@ -352,16 +355,18 @@ export class ExtensionEditor extends BaseEditor { ...@@ -352,16 +355,18 @@ export class ExtensionEditor extends BaseEditor {
)); ));
} }
private static renderCommands(container: HTMLElement, manifest: IExtensionManifest): void { private renderCommands(container: HTMLElement, manifest: IExtensionManifest): void {
interface Command { interface Command {
id: string; id: string;
title: string; title: string;
keybindings: string[];
menus: string[]; menus: string[];
} }
const commands: Command[] = (manifest.contributes.commands || []).map(c => ({ const commands: Command[] = (manifest.contributes.commands || []).map(c => ({
id: c.command, id: c.command,
title: c.title, title: c.title,
keybindings: [],
menus: [] menus: []
})); }));
...@@ -373,7 +378,7 @@ export class ExtensionEditor extends BaseEditor { ...@@ -373,7 +378,7 @@ export class ExtensionEditor extends BaseEditor {
let command = allCommands[menu.command]; let command = allCommands[menu.command];
if (!command) { if (!command) {
command = { id: menu.command, title: '', menus: [context] }; command = { id: menu.command, title: '', keybindings: [], menus: [context] };
allCommands[command.id] = command; allCommands[command.id] = command;
commands.push(command); commands.push(command);
} else { } else {
...@@ -382,6 +387,20 @@ export class ExtensionEditor extends BaseEditor { ...@@ -382,6 +387,20 @@ export class ExtensionEditor extends BaseEditor {
}); });
}); });
(manifest.contributes.keybindings || []).forEach(userString => {
let command = allCommands[userString.command];
const keybinding = new Keybinding(Keybinding.fromUserSettingsLabel(userString.key));
const key = this.keybindingService.getLabelFor(keybinding);
if (!command) {
command = { id: userString.command, title: '', keybindings: [key], menus: [] };
allCommands[command.id] = command;
commands.push(command);
} else {
command.keybindings.push(key);
}
});
if (!commands.length) { if (!commands.length) {
return; return;
} }
...@@ -392,11 +411,13 @@ export class ExtensionEditor extends BaseEditor { ...@@ -392,11 +411,13 @@ export class ExtensionEditor extends BaseEditor {
$('tr', null, $('tr', null,
$('th', null, localize('command name', "Name")), $('th', null, localize('command name', "Name")),
$('th', null, localize('description', "Description")), $('th', null, localize('description', "Description")),
$('th', null, localize('keyboard shortcuts', "Keyboard Shortcuts")),
$('th', null, localize('menuContexts', "Menu Contexts")) $('th', null, localize('menuContexts', "Menu Contexts"))
), ),
...commands.map(c => $('tr', null, ...commands.map(c => $('tr', null,
$('td', null, c.id), $('td', null, c.id),
$('td', null, c.title), $('td', null, c.title),
$('td', null, ...c.keybindings.map(keybinding => $('code', null, keybinding))),
$('td', null, ...c.menus.map(context => $('code', null, context))) $('td', null, ...c.menus.map(context => $('code', null, context)))
)) ))
) )
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册