/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the Source EULA. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { Event, Emitter } from 'vs/base/common/event'; import { IThemeService, IColorTheme, DARK, IFileIconTheme, ITokenStyle } from 'vs/platform/theme/common/themeService'; import { Color } from 'vs/base/common/color'; export class TestColorTheme implements IColorTheme { public readonly label = 'test'; constructor(private colors: { [id: string]: string; } = {}, public type = DARK) { } getColor(color: string, useDefault?: boolean): Color | undefined { let value = this.colors[color]; if (value) { return Color.fromHex(value); } return undefined; } defines(color: string): boolean { throw new Error('Method not implemented.'); } getTokenStyleMetadata(type: string, modifiers: string[], modelLanguage: string): ITokenStyle | undefined { return undefined; } readonly semanticHighlighting = false; get tokenColorMap(): string[] { return []; } } export class TestFileIconTheme implements IFileIconTheme { hasFileIcons = false; hasFolderIcons = false; hidesExplorerArrows = false; } export class TestThemeService implements IThemeService { _serviceBrand: undefined; _colorTheme: IColorTheme; _fileIconTheme: IFileIconTheme; _onThemeChange = new Emitter(); _onFileIconThemeChange = new Emitter(); constructor(theme = new TestColorTheme(), iconTheme = new TestFileIconTheme()) { this._colorTheme = theme; this._fileIconTheme = iconTheme; } getColorTheme(): IColorTheme { return this._colorTheme; } setTheme(theme: IColorTheme) { this._colorTheme = theme; this.fireThemeChange(); } fireThemeChange() { this._onThemeChange.fire(this._colorTheme); } public get onDidColorThemeChange(): Event { return this._onThemeChange.event; } getFileIconTheme(): IFileIconTheme { return this._fileIconTheme; } public get onDidFileIconThemeChange(): Event { return this._onFileIconThemeChange.event; } }