mockKeybindingService.ts 3.6 KB
Newer Older
A
Alex Dima 已提交
1 2 3 4 5 6
/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/
'use strict';

A
Renames  
Alex Dima 已提交
7
import { ResolvedKeybinding, Keybinding, SimpleKeybinding } from 'vs/base/common/keyCodes';
M
Matt Bierner 已提交
8
import { Event } from 'vs/base/common/event';
9
import { IKeybindingService, IKeybindingEvent, IKeyboardEvent } from 'vs/platform/keybinding/common/keybinding';
J
Johannes Rieken 已提交
10
import { IContextKey, IContextKeyService, IContextKeyServiceTarget, ContextKeyExpr, IContextKeyChangeEvent } from 'vs/platform/contextkey/common/contextkey';
D
Daniel Imms 已提交
11
import { IResolveResult } from 'vs/platform/keybinding/common/keybindingResolver';
12
import { USLayoutResolvedKeybinding } from 'vs/platform/keybinding/common/usLayoutResolvedKeybinding';
A
Alex Dima 已提交
13
import { OS } from 'vs/base/common/platform';
14
import { ResolvedKeybindingItem } from 'vs/platform/keybinding/common/resolvedKeybindingItem';
A
Alex Dima 已提交
15

A
Alex Dima 已提交
16
class MockKeybindingContextKey<T> implements IContextKey<T> {
A
Alex Dima 已提交
17 18 19
	private _defaultValue: T;
	private _value: T;

A
Alex Dima 已提交
20
	constructor(defaultValue: T) {
A
Alex Dima 已提交
21 22 23 24 25 26 27 28 29 30 31
		this._defaultValue = defaultValue;
		this._value = this._defaultValue;
	}

	public set(value: T): void {
		this._value = value;
	}

	public reset(): void {
		this._value = this._defaultValue;
	}
A
Alex Dima 已提交
32 33 34 35

	public get(): T {
		return this._value;
	}
A
Alex Dima 已提交
36 37
}

38
export class MockContextKeyService implements IContextKeyService {
A
Alex Dima 已提交
39

40 41
	public _serviceBrand: any;
	private _keys = new Map<string, IContextKey<any>>();
A
Alex Dima 已提交
42

43 44 45
	public dispose(): void {
		//
	}
A
Alex Dima 已提交
46
	public createKey<T>(key: string, defaultValue: T): IContextKey<T> {
A
Alex Dima 已提交
47
		let ret = new MockKeybindingContextKey(defaultValue);
48 49
		this._keys.set(key, ret);
		return ret;
A
Alex Dima 已提交
50
	}
A
Alex Dima 已提交
51
	public contextMatchesRules(rules: ContextKeyExpr): boolean {
52 53
		return false;
	}
J
Johannes Rieken 已提交
54
	public get onDidChangeContext(): Event<IContextKeyChangeEvent> {
55 56
		return Event.None;
	}
A
Alex Dima 已提交
57
	public getContextKeyValue(key: string) {
58 59 60
		if (this._keys.has(key)) {
			return this._keys.get(key).get();
		}
61
	}
J
Joao Moreno 已提交
62
	public getContext(domNode: HTMLElement): any {
A
Alex Dima 已提交
63 64
		return null;
	}
65
	public createScoped(domNode: HTMLElement): IContextKeyService {
A
Alex Dima 已提交
66 67 68 69
		return this;
	}
}

70
export class MockKeybindingService implements IKeybindingService {
A
Alex Dima 已提交
71
	public _serviceBrand: any;
72

C
Christof Marti 已提交
73
	public get onDidUpdateKeybindings(): Event<IKeybindingEvent> {
74 75 76
		return Event.None;
	}

S
Sandeep Somavarapu 已提交
77
	public getDefaultKeybindingsContent(): string {
A
Alex Dima 已提交
78 79 80
		return null;
	}

S
Sandeep Somavarapu 已提交
81 82 83 84
	public getDefaultKeybindings(): ResolvedKeybindingItem[] {
		return [];
	}

85
	public getKeybindings(): ResolvedKeybindingItem[] {
86 87 88
		return [];
	}

89 90
	public resolveKeybinding(keybinding: Keybinding): ResolvedKeybinding[] {
		return [new USLayoutResolvedKeybinding(keybinding, OS)];
91 92
	}

93 94 95 96 97 98 99 100
	public resolveKeyboardEvent(keyboardEvent: IKeyboardEvent): ResolvedKeybinding {
		let keybinding = new SimpleKeybinding(
			keyboardEvent.ctrlKey,
			keyboardEvent.shiftKey,
			keyboardEvent.altKey,
			keyboardEvent.metaKey,
			keyboardEvent.keyCode
		);
101
		return this.resolveKeybinding(keybinding)[0];
102 103
	}

104 105 106 107
	public resolveUserBinding(userBinding: string): ResolvedKeybinding[] {
		return [];
	}

108
	public lookupKeybindings(commandId: string): ResolvedKeybinding[] {
A
Alex Dima 已提交
109 110 111
		return [];
	}

112 113
	public lookupKeybinding(commandId: string): ResolvedKeybinding {
		return null;
A
Alex Dima 已提交
114 115
	}

A
Alex Dima 已提交
116 117 118
	public customKeybindingsCount(): number {
		return 0;
	}
D
Daniel Imms 已提交
119

120
	public softDispatch(keybinding: IKeyboardEvent, target: IContextKeyServiceTarget): IResolveResult {
D
Daniel Imms 已提交
121 122
		return null;
	}
J
Joao Moreno 已提交
123 124 125 126

	dispatchEvent(e: IKeyboardEvent, target: IContextKeyServiceTarget): boolean {
		return false;
	}
A
Alex Dima 已提交
127
}