diff --git a/build/monaco/monaco.d.ts.recipe b/build/monaco/monaco.d.ts.recipe index 930691f1a6f..2e36edaec68 100644 --- a/build/monaco/monaco.d.ts.recipe +++ b/build/monaco/monaco.d.ts.recipe @@ -68,7 +68,7 @@ export interface ICommandHandler { #include(vs/platform/markers/common/markers): IMarker, IMarkerData, IRelatedInformation #include(vs/editor/standalone/browser/colorizer): IColorizerOptions, IColorizerElementOptions #include(vs/base/common/scrollable): ScrollbarVisibility -#include(vs/platform/theme/common/themeService): ThemeColor +#include(vs/base/common/themables): ThemeColor #include(vs/editor/common/core/editOperation): ISingleEditOperation #include(vs/editor/common/core/wordHelper): IWordAtPosition #includeAll(vs/editor/common/model): IScrollEvent diff --git a/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts b/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts index 1e0ca66532f..8d7ad28d327 100644 --- a/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts +++ b/src/vs/base/browser/ui/breadcrumbs/breadcrumbsWidget.ts @@ -7,7 +7,7 @@ import * as dom from 'vs/base/browser/dom'; import { IMouseEvent } from 'vs/base/browser/mouseEvent'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; import { commonPrefixLength } from 'vs/base/common/arrays'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter, Event } from 'vs/base/common/event'; import { DisposableStore, dispose, IDisposable } from 'vs/base/common/lifecycle'; import { ScrollbarVisibility } from 'vs/base/common/scrollable'; @@ -51,7 +51,7 @@ export class BreadcrumbsWidget { private readonly _items = new Array(); private readonly _nodes = new Array(); private readonly _freeNodes = new Array(); - private readonly _separatorIcon: CSSIcon; + private readonly _separatorIcon: ThemeIcon; private _enabled: boolean = true; private _focusedItemIdx: number = -1; @@ -63,7 +63,7 @@ export class BreadcrumbsWidget { constructor( container: HTMLElement, horizontalScrollbarSize: number, - separatorIcon: CSSIcon, + separatorIcon: ThemeIcon, styles: IBreadcrumbsWidgetStyles ) { this._domNode = document.createElement('div'); @@ -340,7 +340,7 @@ export class BreadcrumbsWidget { container.tabIndex = -1; container.setAttribute('role', 'listitem'); container.classList.add('monaco-breadcrumb-item'); - const iconContainer = dom.$(CSSIcon.asCSSSelector(this._separatorIcon)); + const iconContainer = dom.$(ThemeIcon.asCSSSelector(this._separatorIcon)); container.appendChild(iconContainer); } diff --git a/src/vs/base/browser/ui/button/button.ts b/src/vs/base/browser/ui/button/button.ts index c2709462136..26d7bf26d65 100644 --- a/src/vs/base/browser/ui/button/button.ts +++ b/src/vs/base/browser/ui/button/button.ts @@ -9,7 +9,8 @@ import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { EventType as TouchEventType, Gesture } from 'vs/base/browser/touch'; import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { Action, IAction, IActionRunner } from 'vs/base/common/actions'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Color } from 'vs/base/common/color'; import { Emitter, Event as BaseEvent } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -50,7 +51,7 @@ export interface IButton extends IDisposable { readonly element: HTMLElement; readonly onDidClick: BaseEvent; label: string; - icon: CSSIcon; + icon: ThemeIcon; enabled: boolean; focus(): void; hasFocus(): boolean; @@ -215,8 +216,8 @@ export class Button extends Disposable implements IButton { } } - set icon(icon: CSSIcon) { - this._element.classList.add(...CSSIcon.asClassNameArray(icon)); + set icon(icon: ThemeIcon) { + this._element.classList.add(...ThemeIcon.asClassNameArray(icon)); } set enabled(value: boolean) { @@ -313,7 +314,7 @@ export class ButtonWithDropdown extends Disposable implements IButton { this.action.label = value; } - set icon(icon: CSSIcon) { + set icon(icon: ThemeIcon) { this.button.icon = icon; } @@ -366,7 +367,7 @@ export class ButtonWithDescription implements IButtonWithDescription { this._button.label = value; } - set icon(icon: CSSIcon) { + set icon(icon: ThemeIcon) { this._button.icon = icon; } diff --git a/src/vs/base/browser/ui/dialog/dialog.ts b/src/vs/base/browser/ui/dialog/dialog.ts index 4fecadfb6ed..7d4ba99e7d2 100644 --- a/src/vs/base/browser/ui/dialog/dialog.ts +++ b/src/vs/base/browser/ui/dialog/dialog.ts @@ -10,7 +10,8 @@ import { ButtonBar, ButtonWithDescription, IButtonStyles } from 'vs/base/browser import { ICheckboxStyles, Checkbox } from 'vs/base/browser/ui/toggle/toggle'; import { IInputBoxStyles, InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; import { Action } from 'vs/base/common/actions'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; import { mnemonicButtonLabel } from 'vs/base/common/labels'; import { Disposable } from 'vs/base/common/lifecycle'; @@ -33,7 +34,7 @@ export interface IDialogOptions { readonly inputs?: IDialogInputOptions[]; readonly keyEventProcessor?: (event: StandardKeyboardEvent) => void; readonly renderBody?: (container: HTMLElement) => void; - readonly icon?: CSSIcon; + readonly icon?: ThemeIcon; readonly buttonDetails?: string[]; readonly disableCloseAction?: boolean; readonly disableDefaultAction?: boolean; @@ -358,26 +359,26 @@ export class Dialog extends Disposable { const spinModifierClassName = 'codicon-modifier-spin'; - this.iconElement.classList.remove(...CSSIcon.asClassNameArray(Codicon.dialogError), ...CSSIcon.asClassNameArray(Codicon.dialogWarning), ...CSSIcon.asClassNameArray(Codicon.dialogInfo), ...CSSIcon.asClassNameArray(Codicon.loading), spinModifierClassName); + this.iconElement.classList.remove(...ThemeIcon.asClassNameArray(Codicon.dialogError), ...ThemeIcon.asClassNameArray(Codicon.dialogWarning), ...ThemeIcon.asClassNameArray(Codicon.dialogInfo), ...ThemeIcon.asClassNameArray(Codicon.loading), spinModifierClassName); if (this.options.icon) { - this.iconElement.classList.add(...CSSIcon.asClassNameArray(this.options.icon)); + this.iconElement.classList.add(...ThemeIcon.asClassNameArray(this.options.icon)); } else { switch (this.options.type) { case 'error': - this.iconElement.classList.add(...CSSIcon.asClassNameArray(Codicon.dialogError)); + this.iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.dialogError)); break; case 'warning': - this.iconElement.classList.add(...CSSIcon.asClassNameArray(Codicon.dialogWarning)); + this.iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.dialogWarning)); break; case 'pending': - this.iconElement.classList.add(...CSSIcon.asClassNameArray(Codicon.loading), spinModifierClassName); + this.iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.loading), spinModifierClassName); break; case 'none': case 'info': case 'question': default: - this.iconElement.classList.add(...CSSIcon.asClassNameArray(Codicon.dialogInfo)); + this.iconElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.dialogInfo)); break; } } @@ -386,7 +387,7 @@ export class Dialog extends Disposable { if (!this.options.disableCloseAction) { const actionBar = this._register(new ActionBar(this.toolbarContainer, {})); - const action = this._register(new Action('dialog.close', nls.localize('dialogClose', "Close Dialog"), CSSIcon.asClassName(Codicon.dialogClose), true, async () => { + const action = this._register(new Action('dialog.close', nls.localize('dialogClose', "Close Dialog"), ThemeIcon.asClassName(Codicon.dialogClose), true, async () => { resolve({ button: this.options.cancelId || 0, checkboxChecked: this.checkbox ? this.checkbox.checked : undefined diff --git a/src/vs/base/browser/ui/dropdown/dropdownActionViewItem.ts b/src/vs/base/browser/ui/dropdown/dropdownActionViewItem.ts index 60256c9901a..d2deea3f7f6 100644 --- a/src/vs/base/browser/ui/dropdown/dropdownActionViewItem.ts +++ b/src/vs/base/browser/ui/dropdown/dropdownActionViewItem.ts @@ -12,7 +12,8 @@ import { ActionViewItem, BaseActionViewItem, IActionViewItemOptions, IBaseAction import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; import { DropdownMenu, IActionProvider, IDropdownMenuOptions, ILabelRenderer } from 'vs/base/browser/ui/dropdown/dropdown'; import { Action, IAction, IActionRunner } from 'vs/base/common/actions'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; import { ResolvedKeybinding } from 'vs/base/common/keybindings'; @@ -200,7 +201,7 @@ export class ActionWithDropdownActionViewItem extends ActionViewItem { separator.classList.toggle('prominent', menuActionClassNames.includes('prominent')); append(this.element, separator); - this.dropdownMenuActionViewItem = new DropdownMenuActionViewItem(this._register(new Action('dropdownAction', nls.localize('moreActions', "More Actions..."))), menuActionsProvider, this.contextMenuProvider, { classNames: ['dropdown', ...CSSIcon.asClassNameArray(Codicon.dropDownButton), ...menuActionClassNames] }); + this.dropdownMenuActionViewItem = new DropdownMenuActionViewItem(this._register(new Action('dropdownAction', nls.localize('moreActions', "More Actions..."))), menuActionsProvider, this.contextMenuProvider, { classNames: ['dropdown', ...ThemeIcon.asClassNameArray(Codicon.dropDownButton), ...menuActionClassNames] }); this.dropdownMenuActionViewItem.render(this.element); this._register(addDisposableListener(this.element, EventType.KEY_DOWN, e => { diff --git a/src/vs/base/browser/ui/iconLabel/iconLabels.ts b/src/vs/base/browser/ui/iconLabel/iconLabels.ts index 5ecaddf78f1..b89a45cb08f 100644 --- a/src/vs/base/browser/ui/iconLabel/iconLabels.ts +++ b/src/vs/base/browser/ui/iconLabel/iconLabels.ts @@ -4,9 +4,9 @@ *--------------------------------------------------------------------------------------------*/ import * as dom from 'vs/base/browser/dom'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; -const labelWithIconsRegex = new RegExp(`(\\\\)?\\$\\((${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?)\\)`, 'g'); +const labelWithIconsRegex = new RegExp(`(\\\\)?\\$\\((${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?)\\)`, 'g'); export function renderLabelWithIcons(text: string): Array { const elements = new Array(); let match: RegExpExecArray | null; @@ -29,8 +29,8 @@ export function renderLabelWithIcons(text: string): Array void; className: string; - icon: CSSIcon; + icon: ThemeIcon; bgWidth: number; bgHeight: number; @@ -61,7 +61,7 @@ export class ScrollbarArrow extends Widget { this.domNode = document.createElement('div'); this.domNode.className = opts.className; - this.domNode.classList.add(...CSSIcon.asClassNameArray(opts.icon)); + this.domNode.classList.add(...ThemeIcon.asClassNameArray(opts.icon)); this.domNode.style.position = 'absolute'; this.domNode.style.width = ARROW_IMG_SIZE + 'px'; diff --git a/src/vs/base/browser/ui/toggle/toggle.ts b/src/vs/base/browser/ui/toggle/toggle.ts index fb2083b9de1..16ad88781eb 100644 --- a/src/vs/base/browser/ui/toggle/toggle.ts +++ b/src/vs/base/browser/ui/toggle/toggle.ts @@ -7,14 +7,15 @@ import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { BaseActionViewItem, IActionViewItemOptions } from 'vs/base/browser/ui/actionbar/actionViewItems'; import { Widget } from 'vs/base/browser/ui/widget'; import { IAction } from 'vs/base/common/actions'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter, Event } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; import 'vs/css!./toggle'; export interface IToggleOpts extends IToggleStyles { readonly actionClassName?: string; - readonly icon?: CSSIcon; + readonly icon?: ThemeIcon; readonly title: string; readonly isChecked: boolean; readonly notFocusable?: boolean; @@ -101,7 +102,7 @@ export class Toggle extends Widget { readonly onKeyDown: Event = this._onKeyDown.event; private readonly _opts: IToggleOpts; - private _icon: CSSIcon | undefined; + private _icon: ThemeIcon | undefined; readonly domNode: HTMLElement; private _checked: boolean; @@ -115,7 +116,7 @@ export class Toggle extends Widget { const classes = ['monaco-custom-toggle']; if (this._opts.icon) { this._icon = this._opts.icon; - classes.push(...CSSIcon.asClassNameArray(this._icon)); + classes.push(...ThemeIcon.asClassNameArray(this._icon)); } if (this._opts.actionClassName) { classes.push(...this._opts.actionClassName.split(' ')); @@ -180,13 +181,13 @@ export class Toggle extends Widget { this.applyStyles(); } - setIcon(icon: CSSIcon | undefined): void { + setIcon(icon: ThemeIcon | undefined): void { if (this._icon) { - this.domNode.classList.remove(...CSSIcon.asClassNameArray(this._icon)); + this.domNode.classList.remove(...ThemeIcon.asClassNameArray(this._icon)); } this._icon = icon; if (this._icon) { - this.domNode.classList.add(...CSSIcon.asClassNameArray(this._icon)); + this.domNode.classList.add(...ThemeIcon.asClassNameArray(this._icon)); } } diff --git a/src/vs/base/browser/ui/toolbar/toolbar.ts b/src/vs/base/browser/ui/toolbar/toolbar.ts index 5cc460d758a..f44f94badc3 100644 --- a/src/vs/base/browser/ui/toolbar/toolbar.ts +++ b/src/vs/base/browser/ui/toolbar/toolbar.ts @@ -8,7 +8,8 @@ import { ActionBar, ActionsOrientation, IActionViewItemProvider } from 'vs/base/ import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; import { DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdownActionViewItem'; import { Action, IAction, IActionRunner, SubmenuAction } from 'vs/base/common/actions'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { EventMultiplexer } from 'vs/base/common/event'; import { ResolvedKeybinding } from 'vs/base/common/keybindings'; import { Disposable, DisposableStore } from 'vs/base/common/lifecycle'; @@ -27,7 +28,7 @@ export interface IToolBarOptions { toggleMenuTitle?: string; anchorAlignmentProvider?: () => AnchorAlignment; renderDropdownAsChildElement?: boolean; - moreIcon?: CSSIcon; + moreIcon?: ThemeIcon; allowContextMenu?: boolean; } @@ -75,7 +76,7 @@ export class ToolBar extends Disposable { actionViewItemProvider: this.options.actionViewItemProvider, actionRunner: this.actionRunner, keybindingProvider: this.options.getKeyBinding, - classNames: CSSIcon.asClassNameArray(options.moreIcon ?? Codicon.toolBarMore), + classNames: ThemeIcon.asClassNameArray(options.moreIcon ?? Codicon.toolBarMore), anchorAlignmentProvider: this.options.anchorAlignmentProvider, menuAsChild: !!this.options.renderDropdownAsChildElement } diff --git a/src/vs/base/browser/ui/tree/abstractTree.ts b/src/vs/base/browser/ui/tree/abstractTree.ts index 25372a86371..d5b68741103 100644 --- a/src/vs/base/browser/ui/tree/abstractTree.ts +++ b/src/vs/base/browser/ui/tree/abstractTree.ts @@ -20,7 +20,8 @@ import { ICollapseStateChangeEvent, ITreeContextMenuEvent, ITreeDragAndDrop, ITr import { Action } from 'vs/base/common/actions'; import { distinct, equals, firstOrDefault, range } from 'vs/base/common/arrays'; import { disposableTimeout, timeout } from 'vs/base/common/async'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { SetMap } from 'vs/base/common/collections'; import { Emitter, Event, EventBufferer, Relay } from 'vs/base/common/event'; import { fuzzyScore, FuzzyScore } from 'vs/base/common/filters'; @@ -455,7 +456,7 @@ class TreeRenderer implements IListRenderer templateData.container.removeAttribute('aria-expanded'); } - templateData.twistie.classList.remove(...CSSIcon.asClassNameArray(Codicon.treeItemExpanded)); + templateData.twistie.classList.remove(...ThemeIcon.asClassNameArray(Codicon.treeItemExpanded)); let twistieRendered = false; @@ -465,7 +466,7 @@ class TreeRenderer implements IListRenderer if (node.collapsible && (!this.hideTwistiesOfChildlessElements || node.visibleChildrenCount > 0)) { if (!twistieRendered) { - templateData.twistie.classList.add(...CSSIcon.asClassNameArray(Codicon.treeItemExpanded)); + templateData.twistie.classList.add(...ThemeIcon.asClassNameArray(Codicon.treeItemExpanded)); } templateData.twistie.classList.add('collapsible'); diff --git a/src/vs/base/browser/ui/tree/asyncDataTree.ts b/src/vs/base/browser/ui/tree/asyncDataTree.ts index ec9d6358c8a..fd1488eb7d4 100644 --- a/src/vs/base/browser/ui/tree/asyncDataTree.ts +++ b/src/vs/base/browser/ui/tree/asyncDataTree.ts @@ -13,7 +13,8 @@ import { getVisibleState, isFilterResult } from 'vs/base/browser/ui/tree/indexTr import { CompressibleObjectTree, ICompressibleKeyboardNavigationLabelProvider, ICompressibleObjectTreeOptions, ICompressibleTreeRenderer, IObjectTreeOptions, IObjectTreeSetChildrenOptions, ObjectTree } from 'vs/base/browser/ui/tree/objectTree'; import { IAsyncDataSource, ICollapseStateChangeEvent, ITreeContextMenuEvent, ITreeDragAndDrop, ITreeElement, ITreeEvent, ITreeFilter, ITreeMouseEvent, ITreeNode, ITreeRenderer, ITreeSorter, TreeError, TreeFilterResult, TreeVisibility, WeakMapper } from 'vs/base/browser/ui/tree/tree'; import { CancelablePromise, createCancelablePromise, Promises, timeout } from 'vs/base/common/async'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isCancellationError, onUnexpectedError } from 'vs/base/common/errors'; import { Emitter, Event } from 'vs/base/common/event'; import { Iterable } from 'vs/base/common/iterator'; @@ -110,10 +111,10 @@ class AsyncDataTreeRenderer implements IT renderTwistie(element: IAsyncDataTreeNode, twistieElement: HTMLElement): boolean { if (element.slow) { - twistieElement.classList.add(...CSSIcon.asClassNameArray(Codicon.treeItemLoading)); + twistieElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.treeItemLoading)); return true; } else { - twistieElement.classList.remove(...CSSIcon.asClassNameArray(Codicon.treeItemLoading)); + twistieElement.classList.remove(...ThemeIcon.asClassNameArray(Codicon.treeItemLoading)); return false; } } @@ -1105,10 +1106,10 @@ class CompressibleAsyncDataTreeRenderer i renderTwistie(element: IAsyncDataTreeNode, twistieElement: HTMLElement): boolean { if (element.slow) { - twistieElement.classList.add(...CSSIcon.asClassNameArray(Codicon.treeItemLoading)); + twistieElement.classList.add(...ThemeIcon.asClassNameArray(Codicon.treeItemLoading)); return true; } else { - twistieElement.classList.remove(...CSSIcon.asClassNameArray(Codicon.treeItemLoading)); + twistieElement.classList.remove(...ThemeIcon.asClassNameArray(Codicon.treeItemLoading)); return false; } } diff --git a/src/vs/base/common/codicons.ts b/src/vs/base/common/codicons.ts index 529fa35de20..0c2b6200604 100644 --- a/src/vs/base/common/codicons.ts +++ b/src/vs/base/common/codicons.ts @@ -3,6 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ +import { ThemeIcon } from 'vs/base/common/themables'; import { isString } from 'vs/base/common/types'; // Selects all codicon names encapsulated in the `$()` syntax and wraps the @@ -17,7 +18,7 @@ export function getCodiconAriaLabel(text: string | undefined) { const _codiconFontCharacters: { [id: string]: number } = Object.create(null); -function register(id: string, fontCharacter: number | string): CSSIcon { +function register(id: string, fontCharacter: number | string): ThemeIcon { if (isString(fontCharacter)) { const val = _codiconFontCharacters[fontCharacter]; if (val === undefined) { @@ -39,7 +40,7 @@ export function getCodiconFontCharacters(): { [id: string]: number } { /** * Only to be used by the iconRegistry. */ -export function getAllCodicons(): CSSIcon[] { +export function getAllCodicons(): ThemeIcon[] { return Object.values(Codicon); } @@ -604,37 +605,3 @@ export const Codicon = { } as const; -export interface CSSIcon { - readonly id: string; -} - - -export namespace CSSIcon { - export const iconNameSegment = '[A-Za-z0-9]+'; - export const iconNameExpression = '[A-Za-z0-9-]+'; - export const iconModifierExpression = '~[A-Za-z]+'; - export const iconNameCharacter = '[A-Za-z0-9~-]'; - - const cssIconIdRegex = new RegExp(`^(${iconNameExpression})(${iconModifierExpression})?$`); - - export function asClassNameArray(icon: CSSIcon): string[] { - const match = cssIconIdRegex.exec(icon.id); - if (!match) { - return asClassNameArray(Codicon.error); - } - const [, id, modifier] = match; - const classNames = ['codicon', 'codicon-' + id]; - if (modifier) { - classNames.push('codicon-modifier-' + modifier.substring(1)); - } - return classNames; - } - - export function asClassName(icon: CSSIcon): string { - return asClassNameArray(icon).join(' '); - } - - export function asCSSSelector(icon: CSSIcon): string { - return '.' + asClassNameArray(icon).join('.'); - } -} diff --git a/src/vs/base/common/iconLabels.ts b/src/vs/base/common/iconLabels.ts index cf98f2c55d5..ea89033762f 100644 --- a/src/vs/base/common/iconLabels.ts +++ b/src/vs/base/common/iconLabels.ts @@ -3,13 +3,13 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { CSSIcon } from 'vs/base/common/codicons'; import { IMatch, matchesFuzzy } from 'vs/base/common/filters'; import { ltrim } from 'vs/base/common/strings'; +import { ThemeIcon } from 'vs/base/common/themables'; const iconStartMarker = '$('; -const iconsRegex = new RegExp(`\\$\\(${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?\\)`, 'g'); // no capturing groups +const iconsRegex = new RegExp(`\\$\\(${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?\\)`, 'g'); // no capturing groups const escapeIconsRegex = new RegExp(`(\\\\)?${iconsRegex.source}`, 'g'); export function escapeIcons(text: string): string { @@ -37,7 +37,7 @@ export interface IParsedLabelWithIcons { readonly iconOffsets?: readonly number[]; } -const _parseIconsRegex = new RegExp(`\\$\\(${CSSIcon.iconNameCharacter}+\\)`, 'g'); +const _parseIconsRegex = new RegExp(`\\$\\(${ThemeIcon.iconNameCharacter}+\\)`, 'g'); export function parseLabelWithIcons(input: string): IParsedLabelWithIcons { diff --git a/src/vs/base/common/themables.ts b/src/vs/base/common/themables.ts new file mode 100644 index 00000000000..689a5328b80 --- /dev/null +++ b/src/vs/base/common/themables.ts @@ -0,0 +1,104 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { Codicon } from 'vs/base/common/codicons'; + +export type ColorIdentifier = string; + +export type IconIdentifier = string; + +export interface ThemeColor { + id: string; +} + +export namespace ThemeColor { + export function isThemeColor(obj: any): obj is ThemeColor { + return obj && typeof obj === 'object' && typeof (obj).id === 'string'; + } +} + +export function themeColorFromId(id: ColorIdentifier) { + return { id }; +} + + +export interface ThemeIcon { + readonly id: string; + readonly color?: ThemeColor; +} + +export namespace ThemeIcon { + export const iconNameSegment = '[A-Za-z0-9]+'; + export const iconNameExpression = '[A-Za-z0-9-]+'; + export const iconModifierExpression = '~[A-Za-z]+'; + export const iconNameCharacter = '[A-Za-z0-9~-]'; + + const ThemeIconIdRegex = new RegExp(`^(${iconNameExpression})(${iconModifierExpression})?$`); + + export function asClassNameArray(icon: ThemeIcon): string[] { + const match = ThemeIconIdRegex.exec(icon.id); + if (!match) { + return asClassNameArray(Codicon.error); + } + const [, id, modifier] = match; + const classNames = ['codicon', 'codicon-' + id]; + if (modifier) { + classNames.push('codicon-modifier-' + modifier.substring(1)); + } + return classNames; + } + + export function asClassName(icon: ThemeIcon): string { + return asClassNameArray(icon).join(' '); + } + + export function asCSSSelector(icon: ThemeIcon): string { + return '.' + asClassNameArray(icon).join('.'); + } + + export function isThemeIcon(obj: any): obj is ThemeIcon { + return obj && typeof obj === 'object' && typeof (obj).id === 'string' && (typeof (obj).color === 'undefined' || ThemeColor.isThemeColor((obj).color)); + } + + const _regexFromString = new RegExp(`^\\$\\((${ThemeIcon.iconNameExpression}(?:${ThemeIcon.iconModifierExpression})?)\\)$`); + + export function fromString(str: string): ThemeIcon | undefined { + const match = _regexFromString.exec(str); + if (!match) { + return undefined; + } + const [, name] = match; + return { id: name }; + } + + export function fromId(id: string): ThemeIcon { + return { id }; + } + + export function modify(icon: ThemeIcon, modifier: 'disabled' | 'spin' | undefined): ThemeIcon { + let id = icon.id; + const tildeIndex = id.lastIndexOf('~'); + if (tildeIndex !== -1) { + id = id.substring(0, tildeIndex); + } + if (modifier) { + id = `${id}~${modifier}`; + } + return { id }; + } + + export function getModifier(icon: ThemeIcon): string | undefined { + const tildeIndex = icon.id.lastIndexOf('~'); + if (tildeIndex !== -1) { + return icon.id.substring(tildeIndex + 1); + } + return undefined; + } + + export function isEqual(ti1: ThemeIcon, ti2: ThemeIcon): boolean { + return ti1.id === ti2.id && ti1.color?.id === ti2.color?.id; + } + +} diff --git a/src/vs/base/parts/quickinput/browser/quickInput.ts b/src/vs/base/parts/quickinput/browser/quickInput.ts index 132c973fedf..d9b25dfee00 100644 --- a/src/vs/base/parts/quickinput/browser/quickInput.ts +++ b/src/vs/base/parts/quickinput/browser/quickInput.ts @@ -20,7 +20,8 @@ import { Action } from 'vs/base/common/actions'; import { equals } from 'vs/base/common/arrays'; import { TimeoutTimer } from 'vs/base/common/async'; import { CancellationToken } from 'vs/base/common/cancellation'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Color } from 'vs/base/common/color'; import { Emitter, Event } from 'vs/base/common/event'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -77,7 +78,7 @@ const $ = dom.$; type Writeable = { -readonly [P in keyof T]: T[P] }; const backButton = { - iconClass: CSSIcon.asClassName(Codicon.quickInputBack), + iconClass: ThemeIcon.asClassName(Codicon.quickInputBack), tooltip: localize('quickInput.back', "Back"), handle: -1 // TODO }; diff --git a/src/vs/editor/browser/editorDom.ts b/src/vs/editor/browser/editorDom.ts index bc04f367f92..69dd5ec5be7 100644 --- a/src/vs/editor/browser/editorDom.ts +++ b/src/vs/editor/browser/editorDom.ts @@ -10,7 +10,7 @@ import { RunOnceScheduler } from 'vs/base/common/async'; import { Disposable, IDisposable } from 'vs/base/common/lifecycle'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { asCssValue } from 'vs/platform/theme/common/colorRegistry'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; /** * Coordinates relative to the whole document (e.g. mouse event's pageX and pageY) diff --git a/src/vs/editor/browser/editorExtensions.ts b/src/vs/editor/browser/editorExtensions.ts index 8cc5c72d166..a9fb282cb57 100644 --- a/src/vs/editor/browser/editorExtensions.ts +++ b/src/vs/editor/browser/editorExtensions.ts @@ -20,7 +20,7 @@ import { IKeybindings, KeybindingsRegistry, KeybindingWeight } from 'vs/platform import { Registry } from 'vs/platform/registry/common/platform'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { withNullAsUndefined, assertType } from 'vs/base/common/types'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IDisposable } from 'vs/base/common/lifecycle'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { ILogService } from 'vs/platform/log/common/log'; diff --git a/src/vs/editor/browser/services/abstractCodeEditorService.ts b/src/vs/editor/browser/services/abstractCodeEditorService.ts index 8bfd5db5b89..fd7ffee97c5 100644 --- a/src/vs/editor/browser/services/abstractCodeEditorService.ts +++ b/src/vs/editor/browser/services/abstractCodeEditorService.ts @@ -14,7 +14,8 @@ import { ICodeEditorOpenHandler, ICodeEditorService } from 'vs/editor/browser/se import { IContentDecorationRenderOptions, IDecorationRenderOptions, IThemeDecorationRenderOptions, isThemeColor } from 'vs/editor/common/editorCommon'; import { IModelDecorationOptions, IModelDecorationOverviewRulerOptions, InjectedTextOptions, ITextModel, OverviewRulerLane, TrackedRangeStickiness } from 'vs/editor/common/model'; import { IResourceEditorInput } from 'vs/platform/editor/common/editor'; -import { IColorTheme, IThemeService, ThemeColor } from 'vs/platform/theme/common/themeService'; +import { IColorTheme, IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; export abstract class AbstractCodeEditorService extends Disposable implements ICodeEditorService { diff --git a/src/vs/editor/browser/widget/diffEditorWidget.ts b/src/vs/editor/browser/widget/diffEditorWidget.ts index 8e9c9e415c6..14de272ba9f 100644 --- a/src/vs/editor/browser/widget/diffEditorWidget.ts +++ b/src/vs/editor/browser/widget/diffEditorWidget.ts @@ -56,7 +56,8 @@ import { INotificationService } from 'vs/platform/notification/common/notificati import { IEditorProgressService, IProgressRunner } from 'vs/platform/progress/common/progress'; import { defaultInsertColor, defaultRemoveColor, diffDiagonalFill, diffInserted, diffOverviewRulerInserted, diffOverviewRulerRemoved, diffRemoved } from 'vs/platform/theme/common/colorRegistry'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { getThemeTypeSelector, IColorTheme, IThemeService, registerThemingParticipant, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { getThemeTypeSelector, IColorTheme, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; export interface IDiffCodeEditorWidgetOptions { originalEditor?: ICodeEditorWidgetOptions; diff --git a/src/vs/editor/browser/widget/diffReview.ts b/src/vs/editor/browser/widget/diffReview.ts index 12889bed475..95f9478dbb0 100644 --- a/src/vs/editor/browser/widget/diffReview.ts +++ b/src/vs/editor/browser/widget/diffReview.ts @@ -26,7 +26,7 @@ import { RenderLineInput, renderViewLine2 as renderViewLine } from 'vs/editor/co import { ViewLineRenderingData } from 'vs/editor/common/viewModel'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Constants } from 'vs/base/common/uint'; import { Codicon } from 'vs/base/common/codicons'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; diff --git a/src/vs/editor/browser/widget/inlineDiffMargin.ts b/src/vs/editor/browser/widget/inlineDiffMargin.ts index b6bfb5902f7..69dfd17560c 100644 --- a/src/vs/editor/browser/widget/inlineDiffMargin.ts +++ b/src/vs/editor/browser/widget/inlineDiffMargin.ts @@ -13,7 +13,8 @@ import { IEditorMouseEvent, MouseTargetType } from 'vs/editor/browser/editorBrow import { Range } from 'vs/editor/common/core/range'; import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget'; import { EditorOption } from 'vs/editor/common/config/editorOptions'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { EndOfLineSequence, ITextModel } from 'vs/editor/common/model'; export interface IDiffLinesChange { @@ -60,7 +61,7 @@ export class InlineDiffMargin extends Disposable { this._marginDomNode.style.zIndex = '10'; this._diffActions = document.createElement('div'); - this._diffActions.className = CSSIcon.asClassName(Codicon.lightBulb) + ' lightbulb-glyph'; + this._diffActions.className = ThemeIcon.asClassName(Codicon.lightBulb) + ' lightbulb-glyph'; this._diffActions.style.position = 'absolute'; const lineHeight = editor.getOption(EditorOption.lineHeight); const lineFeed = editor.getModel()!.getEOL(); diff --git a/src/vs/editor/common/editorCommon.ts b/src/vs/editor/common/editorCommon.ts index 9260b986d88..3b10a9f14d9 100644 --- a/src/vs/editor/common/editorCommon.ts +++ b/src/vs/editor/common/editorCommon.ts @@ -12,7 +12,7 @@ import { IPosition, Position } from 'vs/editor/common/core/position'; import { IRange, Range } from 'vs/editor/common/core/range'; import { ISelection, Selection } from 'vs/editor/common/core/selection'; import { IModelDecorationsChangeAccessor, ITextModel, OverviewRulerLane, TrackedRangeStickiness, IValidEditOperation, IModelDeltaDecoration, IModelDecoration } from 'vs/editor/common/model'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { IDimension } from 'vs/editor/common/core/dimension'; import { IModelDecorationsChangedEvent } from 'vs/editor/common/textModelEvents'; diff --git a/src/vs/editor/common/languages.ts b/src/vs/editor/common/languages.ts index 6c0aec4c9b0..42ab35a3a1c 100644 --- a/src/vs/editor/common/languages.ts +++ b/src/vs/editor/common/languages.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { CancellationToken } from 'vs/base/common/cancellation'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Color } from 'vs/base/common/color'; import { VSDataTransfer } from 'vs/base/common/dataTransfer'; import { Event } from 'vs/base/common/event'; @@ -20,7 +21,6 @@ import * as model from 'vs/editor/common/model'; import { TokenizationRegistry as TokenizationRegistryImpl } from 'vs/editor/common/tokenizationRegistry'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { IMarkerData } from 'vs/platform/markers/common/markers'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; /** * @internal @@ -279,7 +279,7 @@ export const enum CompletionItemKind { */ export namespace CompletionItemKinds { - const byKind = new Map(); + const byKind = new Map(); byKind.set(CompletionItemKind.Method, Codicon.symbolMethod); byKind.set(CompletionItemKind.Function, Codicon.symbolFunction); byKind.set(CompletionItemKind.Constructor, Codicon.symbolConstructor); @@ -313,7 +313,7 @@ export namespace CompletionItemKinds { /** * @internal */ - export function toIcon(kind: CompletionItemKind): CSSIcon { + export function toIcon(kind: CompletionItemKind): ThemeIcon { let codicon = byKind.get(kind); if (!codicon) { console.info('No codicon found for CompletionItemKind ' + kind); @@ -1066,7 +1066,7 @@ export const enum SymbolTag { */ export namespace SymbolKinds { - const byKind = new Map(); + const byKind = new Map(); byKind.set(SymbolKind.File, Codicon.symbolFile); byKind.set(SymbolKind.Module, Codicon.symbolModule); byKind.set(SymbolKind.Namespace, Codicon.symbolNamespace); @@ -1096,7 +1096,7 @@ export namespace SymbolKinds { /** * @internal */ - export function toIcon(kind: SymbolKind): CSSIcon { + export function toIcon(kind: SymbolKind): ThemeIcon { let icon = byKind.get(kind); if (!icon) { console.info('No codicon found for SymbolKind ' + kind); diff --git a/src/vs/editor/common/model.ts b/src/vs/editor/common/model.ts index 109d553e7d2..0df35045e97 100644 --- a/src/vs/editor/common/model.ts +++ b/src/vs/editor/common/model.ts @@ -20,7 +20,7 @@ import { IBracketPairsTextModelPart } from 'vs/editor/common/textModelBracketPai import { IModelContentChange, IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelLanguageChangedEvent, IModelLanguageConfigurationChangedEvent, IModelOptionsChangedEvent, IModelTokensChangedEvent, InternalModelContentChangeEvent, ModelInjectedTextChangedEvent } from 'vs/editor/common/textModelEvents'; import { IGuidesTextModelPart } from 'vs/editor/common/textModelGuides'; import { ITokenizationTextModelPart } from 'vs/editor/common/tokenizationTextModelPart'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { UndoRedoGroup } from 'vs/platform/undoRedo/common/undoRedo'; /** diff --git a/src/vs/editor/common/model/textModel.ts b/src/vs/editor/common/model/textModel.ts index f6cfde8a2b9..ac1a9821eb4 100644 --- a/src/vs/editor/common/model/textModel.ts +++ b/src/vs/editor/common/model/textModel.ts @@ -41,7 +41,8 @@ import { IBracketPairsTextModelPart } from 'vs/editor/common/textModelBracketPai import { IModelContentChangedEvent, IModelDecorationsChangedEvent, IModelOptionsChangedEvent, InternalModelContentChangeEvent, LineInjectedText, ModelInjectedTextChangedEvent, ModelRawChange, ModelRawContentChangedEvent, ModelRawEOLChanged, ModelRawFlush, ModelRawLineChanged, ModelRawLinesDeleted, ModelRawLinesInserted } from 'vs/editor/common/textModelEvents'; import { IGuidesTextModelPart } from 'vs/editor/common/textModelGuides'; import { ITokenizationTextModelPart } from 'vs/editor/common/tokenizationTextModelPart'; -import { IColorTheme, ThemeColor } from 'vs/platform/theme/common/themeService'; +import { IColorTheme } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { IUndoRedoService, ResourceEditStackSnapshot, UndoRedoGroup } from 'vs/platform/undoRedo/common/undoRedo'; export function createTextBufferFactory(text: string): model.ITextBufferFactory { diff --git a/src/vs/editor/common/services/markerDecorationsService.ts b/src/vs/editor/common/services/markerDecorationsService.ts index 15893914318..080e870b8b7 100644 --- a/src/vs/editor/common/services/markerDecorationsService.ts +++ b/src/vs/editor/common/services/markerDecorationsService.ts @@ -8,7 +8,8 @@ import { Disposable, toDisposable } from 'vs/base/common/lifecycle'; import { URI } from 'vs/base/common/uri'; import { IModelDeltaDecoration, ITextModel, IModelDecorationOptions, TrackedRangeStickiness, OverviewRulerLane, IModelDecoration, MinimapPosition, IModelDecorationMinimapOptions } from 'vs/editor/common/model'; import { ClassName } from 'vs/editor/common/model/intervalTree'; -import { themeColorFromId, ThemeColor } from 'vs/platform/theme/common/themeService'; +import { themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { overviewRulerWarning, overviewRulerInfo, overviewRulerError } from 'vs/editor/common/core/editorColorRegistry'; import { IModelService } from 'vs/editor/common/services/model'; import { Range } from 'vs/editor/common/core/range'; diff --git a/src/vs/editor/contrib/codeAction/browser/codeActionMenu.ts b/src/vs/editor/contrib/codeAction/browser/codeActionMenu.ts index 2173b518469..b45c343f7b4 100644 --- a/src/vs/editor/contrib/codeAction/browser/codeActionMenu.ts +++ b/src/vs/editor/contrib/codeAction/browser/codeActionMenu.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import 'vs/base/browser/ui/codicons/codiconStyles'; // The codicon symbol styles are defined here and must be loaded -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ResolvedKeybinding } from 'vs/base/common/keybindings'; import { CodeAction } from 'vs/editor/common/languages'; import { CodeActionItem, CodeActionKind } from 'vs/editor/contrib/codeAction/common/types'; @@ -15,7 +16,7 @@ import { ActionListItemKind, IListMenuItem } from 'vs/platform/actionWidget/brow interface ActionGroup { readonly kind: CodeActionKind; readonly title: string; - readonly icon?: { readonly codicon: CSSIcon; readonly color?: string }; + readonly icon?: { readonly codicon: ThemeIcon; readonly color?: string }; } const uncategorizedCodeActionGroup = Object.freeze({ kind: CodeActionKind.Empty, title: localize('codeAction.widget.id.more', 'More Actions...') }); diff --git a/src/vs/editor/contrib/codeAction/browser/lightBulbWidget.ts b/src/vs/editor/contrib/codeAction/browser/lightBulbWidget.ts index 203d86a9647..ff0d6d7864e 100644 --- a/src/vs/editor/contrib/codeAction/browser/lightBulbWidget.ts +++ b/src/vs/editor/contrib/codeAction/browser/lightBulbWidget.ts @@ -5,7 +5,8 @@ import * as dom from 'vs/base/browser/dom'; import { Gesture } from 'vs/base/browser/touch'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter, Event } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; import { withNullAsUndefined } from 'vs/base/common/types'; @@ -210,8 +211,8 @@ export class LightBulbWidget extends Disposable implements IContentWidget { private _updateLightBulbTitleAndIcon(): void { if (this.state.type === LightBulbState.Type.Showing && this.state.actions.hasAutoFix) { // update icon - this._domNode.classList.remove(...CSSIcon.asClassNameArray(Codicon.lightBulb)); - this._domNode.classList.add(...CSSIcon.asClassNameArray(Codicon.lightbulbAutofix)); + this._domNode.classList.remove(...ThemeIcon.asClassNameArray(Codicon.lightBulb)); + this._domNode.classList.add(...ThemeIcon.asClassNameArray(Codicon.lightbulbAutofix)); if (this._preferredKbLabel) { this.title = nls.localize('preferredcodeActionWithKb', "Show Code Actions. Preferred Quick Fix Available ({0})", this._preferredKbLabel); @@ -220,8 +221,8 @@ export class LightBulbWidget extends Disposable implements IContentWidget { } // update icon - this._domNode.classList.remove(...CSSIcon.asClassNameArray(Codicon.lightbulbAutofix)); - this._domNode.classList.add(...CSSIcon.asClassNameArray(Codicon.lightBulb)); + this._domNode.classList.remove(...ThemeIcon.asClassNameArray(Codicon.lightbulbAutofix)); + this._domNode.classList.add(...ThemeIcon.asClassNameArray(Codicon.lightBulb)); if (this._quickFixKbLabel) { this.title = nls.localize('codeActionWithKb', "Show Code Actions ({0})", this._quickFixKbLabel); diff --git a/src/vs/editor/contrib/find/browser/findWidget.ts b/src/vs/editor/contrib/find/browser/findWidget.ts index 772aa647cc8..8d74bff2686 100644 --- a/src/vs/editor/contrib/find/browser/findWidget.ts +++ b/src/vs/editor/contrib/find/browser/findWidget.ts @@ -38,7 +38,8 @@ import { INotificationService } from 'vs/platform/notification/common/notificati import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { asCssValue, contrastBorder, editorFindMatch, editorFindMatchBorder, editorFindMatchHighlight, editorFindMatchHighlightBorder, editorFindRangeHighlight, editorFindRangeHighlightBorder, editorWidgetBackground, editorWidgetBorder, editorWidgetForeground, editorWidgetResizeBorder, errorForeground, focusBorder, inputActiveOptionBackground, inputActiveOptionBorder, inputActiveOptionForeground, toolbarHoverBackground, widgetBorder, widgetShadow } from 'vs/platform/theme/common/colorRegistry'; import { registerIcon, widgetClose } from 'vs/platform/theme/common/iconRegistry'; -import { IThemeService, registerThemingParticipant, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isHighContrast } from 'vs/platform/theme/common/theme'; import { assertIsDefined } from 'vs/base/common/types'; import { defaultInputBoxStyles, defaultToggleStyles } from 'vs/platform/theme/browser/defaultStyles'; diff --git a/src/vs/editor/contrib/folding/browser/foldingDecorations.ts b/src/vs/editor/contrib/folding/browser/foldingDecorations.ts index b9a9d7ac9dc..068afcbf642 100644 --- a/src/vs/editor/contrib/folding/browser/foldingDecorations.ts +++ b/src/vs/editor/contrib/folding/browser/foldingDecorations.ts @@ -11,7 +11,8 @@ import { IDecorationProvider } from 'vs/editor/contrib/folding/browser/foldingMo import { localize } from 'vs/nls'; import { editorSelectionBackground, iconForeground, registerColor, transparent } from 'vs/platform/theme/common/colorRegistry'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { themeColorFromId, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; const foldBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hcDark: null, hcLight: null }, localize('foldBackgroundBackground', "Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."), true); registerColor('editorGutter.foldingControlForeground', { dark: iconForeground, light: iconForeground, hcDark: iconForeground, hcLight: iconForeground }, localize('editorGutter.foldingControlForeground', 'Color of the folding control in the editor gutter.')); diff --git a/src/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts b/src/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts index dc9d11eda4e..77094d0b005 100644 --- a/src/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts +++ b/src/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.ts @@ -25,7 +25,7 @@ import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/c import { IOpenerService } from 'vs/platform/opener/common/opener'; import { listHighlightForeground, registerColor } from 'vs/platform/theme/common/colorRegistry'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; const $ = dom.$; diff --git a/src/vs/editor/contrib/peekView/browser/peekView.ts b/src/vs/editor/contrib/peekView/browser/peekView.ts index 6edc4f8022f..9f0f1cd85e5 100644 --- a/src/vs/editor/contrib/peekView/browser/peekView.ts +++ b/src/vs/editor/contrib/peekView/browser/peekView.ts @@ -7,7 +7,8 @@ import * as dom from 'vs/base/browser/dom'; import { IMouseEvent } from 'vs/base/browser/mouseEvent'; import { ActionBar, ActionsOrientation, IActionBarOptions } from 'vs/base/browser/ui/actionbar/actionbar'; import { Action } from 'vs/base/common/actions'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Color } from 'vs/base/common/color'; import { Emitter } from 'vs/base/common/event'; import { IDisposable } from 'vs/base/common/lifecycle'; @@ -200,7 +201,7 @@ export abstract class PeekViewWidget extends ZoneWidget { this._disposables.add(this._actionbarWidget); if (!noCloseAction) { - this._actionbarWidget.push(new Action('peekview.close', nls.localize('label.close', "Close"), CSSIcon.asClassName(Codicon.close), true, () => { + this._actionbarWidget.push(new Action('peekview.close', nls.localize('label.close', "Close"), ThemeIcon.asClassName(Codicon.close), true, () => { this.dispose(); return Promise.resolve(); }), { label: false, icon: true }); diff --git a/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.ts b/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.ts index 50f2cf9e178..d6c3feb2a31 100644 --- a/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.ts +++ b/src/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.ts @@ -5,7 +5,8 @@ import { DeferredPromise } from 'vs/base/common/async'; import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cancellation'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMatch } from 'vs/base/common/filters'; import { IPreparedQuery, pieceToQuery, prepareQuery, scoreFuzzy2 } from 'vs/base/common/fuzzyScorer'; import { Disposable, DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -242,7 +243,7 @@ export abstract class AbstractGotoSymbolQuickAccessProvider extends AbstractEdit const openSideBySideDirection = this.options?.openSideBySideDirection?.(); if (openSideBySideDirection) { buttons = [{ - iconClass: openSideBySideDirection === 'right' ? CSSIcon.asClassName(Codicon.splitHorizontal) : CSSIcon.asClassName(Codicon.splitVertical), + iconClass: openSideBySideDirection === 'right' ? ThemeIcon.asClassName(Codicon.splitHorizontal) : ThemeIcon.asClassName(Codicon.splitVertical), tooltip: openSideBySideDirection === 'right' ? localize('openToSide', "Open to the Side") : localize('openToBottom', "Open to the Bottom") }]; } diff --git a/src/vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts b/src/vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts index dba072d032c..d6e95dd5a71 100644 --- a/src/vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts +++ b/src/vs/editor/contrib/suggest/browser/suggestWidgetDetails.ts @@ -5,7 +5,8 @@ import * as dom from 'vs/base/browser/dom'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter, Event } from 'vs/base/common/event'; import { MarkdownString } from 'vs/base/common/htmlContent'; import { DisposableStore } from 'vs/base/common/lifecycle'; @@ -62,7 +63,7 @@ export class SuggestDetailsWidget { this._disposables.add(this._scrollbar); this._header = dom.append(this._body, dom.$('.header')); - this._close = dom.append(this._header, dom.$('span' + CSSIcon.asCSSSelector(Codicon.close))); + this._close = dom.append(this._header, dom.$('span' + ThemeIcon.asCSSSelector(Codicon.close))); this._close.title = nls.localize('details.close', "Close"); this._type = dom.append(this._header, dom.$('p.type')); diff --git a/src/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.ts b/src/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.ts index 7a2ca2732c7..d255f723a64 100644 --- a/src/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.ts +++ b/src/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.ts @@ -6,7 +6,8 @@ import { $, append, hide, show } from 'vs/base/browser/dom'; import { IconLabel, IIconLabelValueOptions } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { IListRenderer } from 'vs/base/browser/ui/list/list'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter, Event } from 'vs/base/common/event'; import { createMatches } from 'vs/base/common/filters'; import { DisposableStore } from 'vs/base/common/lifecycle'; @@ -20,7 +21,7 @@ import { ILanguageService } from 'vs/editor/common/languages/language'; import * as nls from 'vs/nls'; import { FileKind } from 'vs/platform/files/common/files'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; import { CompletionItem } from './suggest'; import { canExpandCompletionItem } from './suggestWidgetDetails'; @@ -199,7 +200,7 @@ export class ItemRenderer implements IListRenderer= 0) { diff --git a/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts b/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts index d2542d01582..42edc0d56bd 100644 --- a/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts +++ b/src/vs/editor/contrib/unicodeHighlighter/browser/bannerController.ts @@ -13,7 +13,7 @@ import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { ILinkDescriptor, Link } from 'vs/platform/opener/browser/link'; import { widgetClose } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; const BANNER_ELEMENT_HEIGHT = 26; diff --git a/src/vs/platform/action/common/action.ts b/src/vs/platform/action/common/action.ts index 35bee427113..8d06a7013d7 100644 --- a/src/vs/platform/action/common/action.ts +++ b/src/vs/platform/action/common/action.ts @@ -5,7 +5,7 @@ import { URI, UriDto } from 'vs/base/common/uri'; import { ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Categories } from './actionCommonCategories'; export interface ILocalizedString { diff --git a/src/vs/platform/actionWidget/browser/actionList.ts b/src/vs/platform/actionWidget/browser/actionList.ts index 896f9f9f89e..ea43107d981 100644 --- a/src/vs/platform/actionWidget/browser/actionList.ts +++ b/src/vs/platform/actionWidget/browser/actionList.ts @@ -7,7 +7,8 @@ import { HighlightedLabel } from 'vs/base/browser/ui/highlightedlabel/highlighte import { KeybindingLabel } from 'vs/base/browser/ui/keybindingLabel/keybindingLabel'; import { IListEvent, IListMouseEvent, IListRenderer, IListVirtualDelegate } from 'vs/base/browser/ui/list/list'; import { List } from 'vs/base/browser/ui/list/listWidget'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ResolvedKeybinding } from 'vs/base/common/keybindings'; import { Disposable } from 'vs/base/common/lifecycle'; import { OS } from 'vs/base/common/platform'; @@ -28,7 +29,7 @@ export interface IRenderDelegate { export interface IListMenuItem { readonly item?: T; readonly kind: ActionListItemKind; - readonly group?: { kind?: any; icon?: { codicon: CSSIcon; color?: string }; title: string }; + readonly group?: { kind?: any; icon?: { codicon: ThemeIcon; color?: string }; title: string }; readonly disabled?: boolean; readonly label?: string; readonly description?: string; @@ -102,10 +103,10 @@ class ActionItemRenderer> implements IListR renderElement(element: T, _index: number, data: IActionMenuTemplateData): void { if (element.group?.icon) { - data.icon.className = CSSIcon.asClassName(element.group.icon.codicon); + data.icon.className = ThemeIcon.asClassName(element.group.icon.codicon); data.icon.style.color = element.group.icon.color ?? ''; } else { - data.icon.className = CSSIcon.asClassName(Codicon.lightBulb); + data.icon.className = ThemeIcon.asClassName(Codicon.lightBulb); data.icon.style.color = 'var(--vscode-editorLightBulb-foreground)'; } diff --git a/src/vs/platform/actions/browser/menuEntryActionViewItem.ts b/src/vs/platform/actions/browser/menuEntryActionViewItem.ts index df101e1b3e2..3b4b0ed9499 100644 --- a/src/vs/platform/actions/browser/menuEntryActionViewItem.ts +++ b/src/vs/platform/actions/browser/menuEntryActionViewItem.ts @@ -23,7 +23,8 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isDark } from 'vs/platform/theme/common/theme'; import { IHoverDelegate } from 'vs/base/browser/ui/iconLabel/iconHoverDelegate'; import { assertType } from 'vs/base/common/types'; diff --git a/src/vs/platform/actions/common/actions.ts b/src/vs/platform/actions/common/actions.ts index 4f561f9a174..a7723fc0d2f 100644 --- a/src/vs/platform/actions/common/actions.ts +++ b/src/vs/platform/actions/common/actions.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Action, IAction, SubmenuAction } from 'vs/base/common/actions'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Event, MicrotaskEmitter } from 'vs/base/common/event'; import { DisposableStore, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { LinkedList } from 'vs/base/common/linkedList'; @@ -15,7 +15,6 @@ import { ContextKeyExpr, ContextKeyExpression, IContextKeyService } from 'vs/pla import { SyncDescriptor, SyncDescriptor0 } from 'vs/platform/instantiation/common/descriptors'; import { BrandedService, createDecorator, IConstructorSignature, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IKeybindingRule, IKeybindings, KeybindingsRegistry } from 'vs/platform/keybinding/common/keybindingsRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; export interface IMenuItem { command: ICommandAction; @@ -454,7 +453,7 @@ export class MenuItemAction implements IAction { this.alt = alt ? new MenuItemAction(alt, undefined, options, hideActions, contextKeyService, _commandService) : undefined; this._options = options; if (ThemeIcon.isThemeIcon(item.icon)) { - this.class = CSSIcon.asClassName(item.icon); + this.class = ThemeIcon.asClassName(item.icon); } } diff --git a/src/vs/platform/dialogs/common/dialogs.ts b/src/vs/platform/dialogs/common/dialogs.ts index 1d55c083005..076b0b3a3e6 100644 --- a/src/vs/platform/dialogs/common/dialogs.ts +++ b/src/vs/platform/dialogs/common/dialogs.ts @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { Event } from 'vs/base/common/event'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; import { basename } from 'vs/base/common/resources'; import Severity from 'vs/base/common/severity'; @@ -188,7 +188,7 @@ export interface ICustomDialogOptions { readonly buttonDetails?: string[]; readonly markdownDetails?: ICustomDialogMarkdown[]; readonly classes?: string[]; - readonly icon?: CSSIcon; + readonly icon?: ThemeIcon; readonly disableCloseAction?: boolean; } diff --git a/src/vs/platform/quickinput/browser/quickPickPin.ts b/src/vs/platform/quickinput/browser/quickPickPin.ts index 158f7e9bec0..3bb2a873071 100644 --- a/src/vs/platform/quickinput/browser/quickPickPin.ts +++ b/src/vs/platform/quickinput/browser/quickPickPin.ts @@ -7,7 +7,7 @@ import { Codicon } from 'vs/base/common/codicons'; import { localize } from 'vs/nls'; import { IQuickPick, IQuickPickItem, QuickPickItem } from 'vs/platform/quickinput/common/quickInput'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; const pinButtonClass = ThemeIcon.asClassName(Codicon.pin); const pinnedButtonClass = ThemeIcon.asClassName(Codicon.pinned); diff --git a/src/vs/platform/severityIcon/browser/severityIcon.ts b/src/vs/platform/severityIcon/browser/severityIcon.ts index cdecb760381..2ecb17404fb 100644 --- a/src/vs/platform/severityIcon/browser/severityIcon.ts +++ b/src/vs/platform/severityIcon/browser/severityIcon.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import 'vs/css!./media/severityIcon'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import Severity from 'vs/base/common/severity'; export namespace SeverityIcon { @@ -12,13 +13,13 @@ export namespace SeverityIcon { export function className(severity: Severity): string { switch (severity) { case Severity.Ignore: - return 'severity-ignore ' + CSSIcon.asClassName(Codicon.info); + return 'severity-ignore ' + ThemeIcon.asClassName(Codicon.info); case Severity.Info: - return CSSIcon.asClassName(Codicon.info); + return ThemeIcon.asClassName(Codicon.info); case Severity.Warning: - return CSSIcon.asClassName(Codicon.warning); + return ThemeIcon.asClassName(Codicon.warning); case Severity.Error: - return CSSIcon.asClassName(Codicon.error); + return ThemeIcon.asClassName(Codicon.error); default: return ''; } diff --git a/src/vs/platform/terminal/common/terminal.ts b/src/vs/platform/terminal/common/terminal.ts index d9fd15934af..07ba6ce1609 100644 --- a/src/vs/platform/terminal/common/terminal.ts +++ b/src/vs/platform/terminal/common/terminal.ts @@ -9,7 +9,7 @@ import { URI, UriComponents } from 'vs/base/common/uri'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IPtyHostProcessReplayEvent, ISerializedCommandDetectionCapability, ITerminalCapabilityStore } from 'vs/platform/terminal/common/capabilities/capabilities'; import { IGetTerminalLayoutInfoArgs, IProcessDetails, ISetTerminalLayoutInfoArgs } from 'vs/platform/terminal/common/terminalProcess'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ISerializableEnvironmentVariableCollections } from 'vs/platform/terminal/common/environmentVariable'; import { ITerminalCommandSelector } from 'vs/platform/terminal/common/xterm/terminalQuickFix'; diff --git a/src/vs/platform/terminal/common/terminalProfiles.ts b/src/vs/platform/terminal/common/terminalProfiles.ts index 29c70309e87..45e838f3543 100644 --- a/src/vs/platform/terminal/common/terminalProfiles.ts +++ b/src/vs/platform/terminal/common/terminalProfiles.ts @@ -7,7 +7,7 @@ import { Codicon } from 'vs/base/common/codicons'; import { URI, UriComponents } from 'vs/base/common/uri'; import { localize } from 'vs/nls'; import { IExtensionTerminalProfile, ITerminalProfile, TerminalIcon } from 'vs/platform/terminal/common/terminal'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; export function createProfileSchemaEnums(detectedProfiles: ITerminalProfile[], extensionProfiles?: readonly IExtensionTerminalProfile[]): { values: (string | null)[] | undefined; diff --git a/src/vs/platform/terminal/node/terminalProfiles.ts b/src/vs/platform/terminal/node/terminalProfiles.ts index f38b289bf56..db75a886ae3 100644 --- a/src/vs/platform/terminal/node/terminalProfiles.ts +++ b/src/vs/platform/terminal/node/terminalProfiles.ts @@ -15,7 +15,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ILogService } from 'vs/platform/log/common/log'; import { ITerminalEnvironment, ITerminalExecutable, ITerminalProfile, ITerminalProfileSource, ITerminalUnsafePath, ProfileSource, TerminalIcon, TerminalSettingId } from 'vs/platform/terminal/common/terminal'; import { findExecutable, getWindowsBuildNumber } from 'vs/platform/terminal/node/terminalEnvironment'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; let profileSources: Map | undefined; let logIfWslNotInstalled: boolean = true; @@ -276,7 +276,7 @@ async function initializeWindowsProfiles(testPwshSourcePaths?: string[]): Promis profileSources.set('PowerShell', { profileName: 'PowerShell', paths: testPwshSourcePaths || await getPowershellPaths(), - icon: ThemeIcon.asThemeIcon(Codicon.terminalPowershell) + icon: Codicon.terminalPowershell }); } @@ -335,11 +335,11 @@ async function getWslProfiles(wslPath: string, defaultProfileName: string | unde function getWslIcon(distroName: string): ThemeIcon { if (distroName.includes('Ubuntu')) { - return ThemeIcon.asThemeIcon(Codicon.terminalUbuntu); + return Codicon.terminalUbuntu; } else if (distroName.includes('Debian')) { - return ThemeIcon.asThemeIcon(Codicon.terminalDebian); + return Codicon.terminalDebian; } else { - return ThemeIcon.asThemeIcon(Codicon.terminalLinux); + return Codicon.terminalLinux; } } diff --git a/src/vs/platform/theme/browser/iconsStyleSheet.ts b/src/vs/platform/theme/browser/iconsStyleSheet.ts index a85586f3694..fc788a234a7 100644 --- a/src/vs/platform/theme/browser/iconsStyleSheet.ts +++ b/src/vs/platform/theme/browser/iconsStyleSheet.ts @@ -5,8 +5,9 @@ import { asCSSPropertyValue, asCSSUrl } from 'vs/base/browser/dom'; import { Emitter, Event } from 'vs/base/common/event'; +import { ThemeIcon } from 'vs/base/common/themables'; import { getIconRegistry, IconContribution, IconFontDefinition } from 'vs/platform/theme/common/iconRegistry'; -import { IProductIconTheme, IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IProductIconTheme, IThemeService } from 'vs/platform/theme/common/themeService'; export interface IIconsStyleSheet { getCSS(): string; diff --git a/src/vs/platform/theme/common/iconRegistry.ts b/src/vs/platform/theme/common/iconRegistry.ts index b106a82e282..282230adee5 100644 --- a/src/vs/platform/theme/common/iconRegistry.ts +++ b/src/vs/platform/theme/common/iconRegistry.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import { RunOnceScheduler } from 'vs/base/common/async'; -import { Codicon, CSSIcon, getCodiconFontCharacters } from 'vs/base/common/codicons'; +import { Codicon, getCodiconFontCharacters } from 'vs/base/common/codicons'; +import { ThemeIcon, IconIdentifier } from 'vs/base/common/themables'; import { Emitter, Event } from 'vs/base/common/event'; import { IJSONSchema, IJSONSchemaMap } from 'vs/base/common/jsonSchema'; import { isString } from 'vs/base/common/types'; @@ -12,11 +13,9 @@ import { URI } from 'vs/base/common/uri'; import { localize } from 'vs/nls'; import { Extensions as JSONExtensions, IJSONContributionRegistry } from 'vs/platform/jsonschemas/common/jsonContributionRegistry'; import * as platform from 'vs/platform/registry/common/platform'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; // ------ API types -export type IconIdentifier = string; // icon registry export const Extensions = { @@ -166,7 +165,7 @@ class IconRegistry implements IIconRegistry { type: 'object', properties: {} }; - private iconReferenceSchema: IJSONSchema & { enum: string[]; enumDescriptions: string[] } = { type: 'string', pattern: `^${CSSIcon.iconNameExpression}$`, enum: [], enumDescriptions: [] }; + private iconReferenceSchema: IJSONSchema & { enum: string[]; enumDescriptions: string[] } = { type: 'string', pattern: `^${ThemeIcon.iconNameExpression}$`, enum: [], enumDescriptions: [] }; private iconFontsById: { [key: string]: IconFontDefinition }; diff --git a/src/vs/platform/theme/common/themeService.ts b/src/vs/platform/theme/common/themeService.ts index 98f7acd00d4..f89940c9f1e 100644 --- a/src/vs/platform/theme/common/themeService.ts +++ b/src/vs/platform/theme/common/themeService.ts @@ -3,7 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; import { Color } from 'vs/base/common/color'; import { Emitter, Event } from 'vs/base/common/event'; import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; @@ -16,79 +16,10 @@ import { ColorScheme } from 'vs/platform/theme/common/theme'; export const IThemeService = createDecorator('themeService'); -export interface ThemeColor { - id: string; -} - -export namespace ThemeColor { - export function isThemeColor(obj: any): obj is ThemeColor { - return obj && typeof obj === 'object' && typeof (obj).id === 'string'; - } -} - export function themeColorFromId(id: ColorIdentifier) { return { id }; } -// theme icon -export interface ThemeIcon { - readonly id: string; - readonly color?: ThemeColor; -} - -export namespace ThemeIcon { - export function isThemeIcon(obj: any): obj is ThemeIcon { - return obj && typeof obj === 'object' && typeof (obj).id === 'string' && (typeof (obj).color === 'undefined' || ThemeColor.isThemeColor((obj).color)); - } - - const _regexFromString = new RegExp(`^\\$\\((${CSSIcon.iconNameExpression}(?:${CSSIcon.iconModifierExpression})?)\\)$`); - - export function fromString(str: string): ThemeIcon | undefined { - const match = _regexFromString.exec(str); - if (!match) { - return undefined; - } - const [, name] = match; - return { id: name }; - } - - export function fromId(id: string): ThemeIcon { - return { id }; - } - - export function modify(icon: ThemeIcon, modifier: 'disabled' | 'spin' | undefined): ThemeIcon { - let id = icon.id; - const tildeIndex = id.lastIndexOf('~'); - if (tildeIndex !== -1) { - id = id.substring(0, tildeIndex); - } - if (modifier) { - id = `${id}~${modifier}`; - } - return { id }; - } - - export function getModifier(icon: ThemeIcon): string | undefined { - const tildeIndex = icon.id.lastIndexOf('~'); - if (tildeIndex !== -1) { - return icon.id.substring(tildeIndex + 1); - } - return undefined; - } - - export function isEqual(ti1: ThemeIcon, ti2: ThemeIcon): boolean { - return ti1.id === ti2.id && ti1.color?.id === ti2.color?.id; - } - - export function asThemeIcon(codicon: CSSIcon, color?: string): ThemeIcon { - return { id: codicon.id, color: color ? themeColorFromId(color) : undefined }; - } - - export const asClassNameArray: (icon: ThemeIcon) => string[] = CSSIcon.asClassNameArray; - export const asClassName: (icon: ThemeIcon) => string = CSSIcon.asClassName; - export const asCSSSelector: (icon: ThemeIcon) => string = CSSIcon.asCSSSelector; -} - export const FileThemeIcon = Codicon.file; export const FolderThemeIcon = Codicon.folder; diff --git a/src/vs/platform/windows/electron-main/windowImpl.ts b/src/vs/platform/windows/electron-main/windowImpl.ts index 939bf51e2e3..19975ba624c 100644 --- a/src/vs/platform/windows/electron-main/windowImpl.ts +++ b/src/vs/platform/windows/electron-main/windowImpl.ts @@ -31,7 +31,7 @@ import { IProtocolMainService } from 'vs/platform/protocol/electron-main/protoco import { resolveMarketplaceHeaders } from 'vs/platform/externalServices/common/marketplace'; import { IApplicationStorageMainService, IStorageMainService } from 'vs/platform/storage/electron-main/storageMainService'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IThemeMainService } from 'vs/platform/theme/electron-main/themeMainService'; import { getMenuBarVisibility, getTitleBarStyle, IFolderToOpen, INativeWindowConfiguration, IWindowSettings, IWorkspaceToOpen, MenuBarVisibility, useWindowControlsOverlay, WindowMinimumSize, zoomLevelToZoomFactor } from 'vs/platform/window/common/window'; import { IWindowsMainService, OpenContext } from 'vs/platform/windows/electron-main/windows'; diff --git a/src/vs/workbench/api/browser/mainThreadSCM.ts b/src/vs/workbench/api/browser/mainThreadSCM.ts index dd32595ee14..ea613cde683 100644 --- a/src/vs/workbench/api/browser/mainThreadSCM.ts +++ b/src/vs/workbench/api/browser/mainThreadSCM.ts @@ -13,7 +13,7 @@ import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/ext import { ISplice, Sequence } from 'vs/base/common/sequence'; import { CancellationToken } from 'vs/base/common/cancellation'; import { MarshalledId } from 'vs/base/common/marshallingIds'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; import { IQuickDiffService, QuickDiffProvider } from 'vs/workbench/contrib/scm/common/quickDiff'; diff --git a/src/vs/workbench/api/browser/mainThreadStatusBar.ts b/src/vs/workbench/api/browser/mainThreadStatusBar.ts index 916f8f65f29..88ff7f4a135 100644 --- a/src/vs/workbench/api/browser/mainThreadStatusBar.ts +++ b/src/vs/workbench/api/browser/mainThreadStatusBar.ts @@ -5,7 +5,7 @@ import { IStatusbarService, StatusbarAlignment as MainThreadStatusBarAlignment, IStatusbarEntryAccessor, IStatusbarEntry, StatusbarAlignment } from 'vs/workbench/services/statusbar/browser/statusbar'; import { MainThreadStatusBarShape, MainContext } from '../common/extHost.protocol'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { extHostNamedCustomer, IExtHostContext } from 'vs/workbench/services/extensions/common/extHostCustomers'; import { dispose } from 'vs/base/common/lifecycle'; import { Command } from 'vs/editor/common/languages'; diff --git a/src/vs/workbench/api/browser/viewsExtensionPoint.ts b/src/vs/workbench/api/browser/viewsExtensionPoint.ts index 810c592c7a1..b9f7468b6a2 100644 --- a/src/vs/workbench/api/browser/viewsExtensionPoint.ts +++ b/src/vs/workbench/api/browser/viewsExtensionPoint.ts @@ -13,7 +13,7 @@ import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensio import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { Registry } from 'vs/platform/registry/common/platform'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Extensions as ViewletExtensions, PaneCompositeRegistry } from 'vs/workbench/browser/panecomposite'; import { CustomTreeView, RawCustomTreeViewContextKey, TreeViewPane } from 'vs/workbench/browser/parts/views/treeView'; import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer'; diff --git a/src/vs/workbench/api/common/extHost.protocol.ts b/src/vs/workbench/api/common/extHost.protocol.ts index e82a8273b91..9860d5662b2 100644 --- a/src/vs/workbench/api/common/extHost.protocol.ts +++ b/src/vs/workbench/api/common/extHost.protocol.ts @@ -40,7 +40,7 @@ import { IRemoteConnectionData, TunnelDescription } from 'vs/platform/remote/com import { ClassifiedEvent, IGDPRProperty, OmitMetadata, StrictPropertyCheck } from 'vs/platform/telemetry/common/gdprTypings'; import { TelemetryLevel } from 'vs/platform/telemetry/common/telemetry'; import { ICreateContributedTerminalProfileOptions, IProcessProperty, IShellLaunchConfigDto, ITerminalEnvironment, ITerminalLaunchError, ITerminalProfile, TerminalExitReason, TerminalLocation } from 'vs/platform/terminal/common/terminal'; -import { ThemeColor, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon, ThemeColor } from 'vs/base/common/themables'; import { ProvidedPortAttributes, TunnelCreationOptions, TunnelOptions, TunnelPrivacyId, TunnelProviderFeatures } from 'vs/platform/tunnel/common/tunnel'; import { WorkspaceTrustRequestOptions } from 'vs/platform/workspace/common/workspaceTrust'; import * as tasks from 'vs/workbench/api/common/shared/tasks'; diff --git a/src/vs/workbench/api/common/extHostQuickOpen.ts b/src/vs/workbench/api/common/extHostQuickOpen.ts index afb34a578e7..4ae22adf430 100644 --- a/src/vs/workbench/api/common/extHostQuickOpen.ts +++ b/src/vs/workbench/api/common/extHostQuickOpen.ts @@ -16,7 +16,7 @@ import { isCancellationError } from 'vs/base/common/errors'; import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { coalesce } from 'vs/base/common/arrays'; import Severity from 'vs/base/common/severity'; -import { ThemeIcon as ThemeIconUtils } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon as ThemeIconUtils } from 'vs/base/common/themables'; export type Item = string | QuickPickItem; diff --git a/src/vs/workbench/api/common/extHostSCM.ts b/src/vs/workbench/api/common/extHostSCM.ts index 14f71883223..147ea6be023 100644 --- a/src/vs/workbench/api/common/extHostSCM.ts +++ b/src/vs/workbench/api/common/extHostSCM.ts @@ -18,7 +18,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { CancellationToken } from 'vs/base/common/cancellation'; import { ExtensionIdentifier, IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { MarshalledId } from 'vs/base/common/marshallingIds'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; import { MarkdownString } from 'vs/workbench/api/common/extHostTypeConverters'; import { checkProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; diff --git a/src/vs/workbench/api/common/extHostTerminalService.ts b/src/vs/workbench/api/common/extHostTerminalService.ts index 5d86b3c2229..e9f3d90d605 100644 --- a/src/vs/workbench/api/common/extHostTerminalService.ts +++ b/src/vs/workbench/api/common/extHostTerminalService.ts @@ -20,7 +20,7 @@ import { generateUuid } from 'vs/base/common/uuid'; import { ISerializableEnvironmentVariableCollection } from 'vs/platform/terminal/common/environmentVariable'; import { ICreateContributedTerminalProfileOptions, IProcessReadyEvent, IShellLaunchConfigDto, ITerminalChildProcess, ITerminalLaunchError, ITerminalProfile, TerminalIcon, TerminalLocation, IProcessProperty, ProcessPropertyType, IProcessPropertyMap } from 'vs/platform/terminal/common/terminal'; import { TerminalDataBufferer } from 'vs/platform/terminal/common/terminalDataBuffering'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { withNullAsUndefined } from 'vs/base/common/types'; import { Promises } from 'vs/base/common/async'; import { EditorGroupColumn } from 'vs/workbench/services/editor/common/editorGroupColumn'; diff --git a/src/vs/workbench/browser/actions/layoutActions.ts b/src/vs/workbench/browser/actions/layoutActions.ts index 7649d07ded4..60570cf91c2 100644 --- a/src/vs/workbench/browser/actions/layoutActions.ts +++ b/src/vs/workbench/browser/actions/layoutActions.ts @@ -23,10 +23,10 @@ import { ToggleAuxiliaryBarAction } from 'vs/workbench/browser/parts/auxiliaryba import { TogglePanelAction } from 'vs/workbench/browser/parts/panel/panelActions'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { AuxiliaryBarVisibleContext, PanelAlignmentContext, PanelVisibleContext, SideBarVisibleContext, FocusedViewContext, InEditorZenModeContext, IsCenteredLayoutContext, EditorAreaVisibleContext, IsFullscreenContext, PanelPositionContext } from 'vs/workbench/common/contextkeys'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { DisposableStore } from 'vs/base/common/lifecycle'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; import { ICommandActionTitle } from 'vs/platform/action/common/action'; // Register Icons @@ -1110,10 +1110,10 @@ interface CustomizeLayoutItem { id: string; active: ContextKeyExpression; label: string; - activeIcon: CSSIcon; + activeIcon: ThemeIcon; visualIcon?: LayoutVisualIcon; activeAriaLabel: string; - inactiveIcon?: CSSIcon; + inactiveIcon?: ThemeIcon; inactiveAriaLabel?: string; useButtons: boolean; } @@ -1237,7 +1237,7 @@ registerAction2(class CustomizeLayoutAction extends Action2 { { alwaysVisible: false, tooltip: ariaLabel, - iconClass: icon ? CSSIcon.asClassName(icon) : undefined + iconClass: icon ? ThemeIcon.asClassName(icon) : undefined } ] }; @@ -1286,13 +1286,13 @@ registerAction2(class CustomizeLayoutAction extends Action2 { const closeButton = { alwaysVisible: true, - iconClass: CSSIcon.asClassName(Codicon.close), + iconClass: ThemeIcon.asClassName(Codicon.close), tooltip: localize('close', "Close") }; const resetButton = { alwaysVisible: true, - iconClass: CSSIcon.asClassName(Codicon.discard), + iconClass: ThemeIcon.asClassName(Codicon.discard), tooltip: localize('restore defaults', "Restore Defaults") }; diff --git a/src/vs/workbench/browser/actions/windowActions.ts b/src/vs/workbench/browser/actions/windowActions.ts index 251223543ba..77dbb5fb17a 100644 --- a/src/vs/workbench/browser/actions/windowActions.ts +++ b/src/vs/workbench/browser/actions/windowActions.ts @@ -28,7 +28,8 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { inQuickPickContext, getQuickNavigateHandler } from 'vs/workbench/browser/quickaccess'; import { IHostService } from 'vs/workbench/services/host/browser/host'; import { ResourceMap } from 'vs/base/common/map'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isHTMLElement } from 'vs/base/browser/dom'; import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -48,12 +49,12 @@ const fileCategory = { value: localize('file', "File"), original: 'File' }; abstract class BaseOpenRecentAction extends Action2 { private readonly removeFromRecentlyOpened: IQuickInputButton = { - iconClass: CSSIcon.asClassName(Codicon.removeClose), + iconClass: ThemeIcon.asClassName(Codicon.removeClose), tooltip: localize('remove', "Remove from Recently Opened") }; private readonly dirtyRecentlyOpenedFolder: IQuickInputButton = { - iconClass: 'dirty-workspace ' + CSSIcon.asClassName(Codicon.closeDirty), + iconClass: 'dirty-workspace ' + ThemeIcon.asClassName(Codicon.closeDirty), tooltip: localize('dirtyRecentlyOpenedFolder', "Folder With Unsaved Files"), alwaysVisible: true }; diff --git a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts index 1057040dfae..a7d3075139a 100644 --- a/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts +++ b/src/vs/workbench/browser/parts/activitybar/activitybarPart.ts @@ -15,7 +15,7 @@ import { IInstantiationService } from 'vs/platform/instantiation/common/instanti import { IDisposable, toDisposable, DisposableStore, Disposable } from 'vs/base/common/lifecycle'; import { Event } from 'vs/base/common/event'; import { ToggleActivityBarVisibilityAction, ToggleSidebarPositionAction } from 'vs/workbench/browser/actions/layoutActions'; -import { IThemeService, IColorTheme, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, IColorTheme } from 'vs/platform/theme/common/themeService'; import { ACTIVITY_BAR_BACKGROUND, ACTIVITY_BAR_BORDER, ACTIVITY_BAR_FOREGROUND, ACTIVITY_BAR_ACTIVE_BORDER, ACTIVITY_BAR_BADGE_BACKGROUND, ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_INACTIVE_FOREGROUND, ACTIVITY_BAR_ACTIVE_BACKGROUND, ACTIVITY_BAR_DRAG_AND_DROP_BORDER, ACTIVITY_BAR_PROFILE_FOREGROUND } from 'vs/workbench/common/theme'; import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { CompositeBar, ICompositeBarItem, CompositeDragAndDrop } from 'vs/workbench/browser/parts/compositeBar'; @@ -34,7 +34,8 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { getMenuBarVisibility } from 'vs/platform/window/common/window'; import { isNative } from 'vs/base/common/platform'; import { Before2D } from 'vs/workbench/browser/dnd'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IAction, Separator, toAction } from 'vs/base/common/actions'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -575,7 +576,7 @@ export class ActivitybarPart extends Part implements IPaneCompositeSelectorPart this.accountsActivityAction = this._register(new ActivityAction({ id: 'workbench.actions.accounts', name: localize('accounts', "Accounts"), - cssClass: CSSIcon.asClassName(Codicon.account) + cssClass: ThemeIcon.asClassName(Codicon.account) })); this.globalActivityActionBar.push(this.accountsActivityAction, { index: ActivitybarPart.ACCOUNTS_ACTION_INDEX }); } diff --git a/src/vs/workbench/browser/parts/banner/bannerPart.ts b/src/vs/workbench/browser/parts/banner/bannerPart.ts index 1de3d91aa49..b120c945d32 100644 --- a/src/vs/workbench/browser/parts/banner/bannerPart.ts +++ b/src/vs/workbench/browser/parts/banner/bannerPart.ts @@ -10,7 +10,8 @@ import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { InstantiationType, registerSingleton } from 'vs/platform/instantiation/common/extensions'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IStorageService } from 'vs/platform/storage/common/storage'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Part } from 'vs/workbench/browser/part'; import { IWorkbenchLayoutService, Parts } from 'vs/workbench/services/layout/browser/layoutService'; import { Action } from 'vs/base/common/actions'; diff --git a/src/vs/workbench/browser/parts/compositeBarActions.ts b/src/vs/workbench/browser/parts/compositeBarActions.ts index 24fa7bc7f11..b825392787e 100644 --- a/src/vs/workbench/browser/parts/compositeBarActions.ts +++ b/src/vs/workbench/browser/parts/compositeBarActions.ts @@ -9,7 +9,7 @@ import { $, addDisposableListener, append, clearNode, EventHelper, EventType, ge import { ICommandService } from 'vs/platform/commands/common/commands'; import { toDisposable, MutableDisposable, DisposableStore, disposeIfDisposable } from 'vs/base/common/lifecycle'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; -import { IThemeService, IColorTheme, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, IColorTheme } from 'vs/platform/theme/common/themeService'; import { TextBadge, NumberBadge, IBadge, IconBadge, ProgressBadge } from 'vs/workbench/services/activity/common/activity'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { contrastBorder } from 'vs/platform/theme/common/colorRegistry'; @@ -20,7 +20,8 @@ import { Emitter, Event } from 'vs/base/common/event'; import { CompositeDragAndDropObserver, ICompositeDragAndDrop, Before2D, toggleDropEffect } from 'vs/workbench/browser/dnd'; import { Color } from 'vs/base/common/color'; import { IBaseActionViewItemOptions, BaseActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IHoverService, IHoverWidget } from 'vs/workbench/services/hover/browser/hover'; import { RunOnceScheduler } from 'vs/base/common/async'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -465,7 +466,7 @@ export class CompositeOverflowActivityAction extends ActivityAction { super({ id: 'additionalComposites.action', name: localize('additionalViews', "Additional Views"), - cssClass: CSSIcon.asClassName(Codicon.more) + cssClass: ThemeIcon.asClassName(Codicon.more) }); } diff --git a/src/vs/workbench/browser/parts/editor/editor.contribution.ts b/src/vs/workbench/browser/parts/editor/editor.contribution.ts index a5b711d543c..b045fb3ea5e 100644 --- a/src/vs/workbench/browser/parts/editor/editor.contribution.ts +++ b/src/vs/workbench/browser/parts/editor/editor.contribution.ts @@ -59,7 +59,7 @@ import { FloatingClickMenu } from 'vs/workbench/browser/codeeditor'; import { Extensions as WorkbenchExtensions, IWorkbenchContributionsRegistry } from 'vs/workbench/common/contributions'; import { LifecyclePhase } from 'vs/workbench/services/lifecycle/common/lifecycle'; import { EditorAutoSave } from 'vs/workbench/browser/parts/editor/editorAutoSave'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IQuickAccessRegistry, Extensions as QuickAccessExtensions } from 'vs/platform/quickinput/common/quickAccess'; import { ActiveGroupEditorsByMostRecentlyUsedQuickAccess, AllEditorsByAppearanceQuickAccess, AllEditorsByMostRecentlyUsedQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; import { FileAccess } from 'vs/base/common/network'; diff --git a/src/vs/workbench/browser/parts/editor/editorActions.ts b/src/vs/workbench/browser/parts/editor/editorActions.ts index 54ce8574faa..95ad9cee317 100644 --- a/src/vs/workbench/browser/parts/editor/editorActions.ts +++ b/src/vs/workbench/browser/parts/editor/editorActions.ts @@ -22,7 +22,8 @@ import { IWorkspacesService } from 'vs/platform/workspaces/common/workspaces'; import { IFileDialogService, ConfirmResult, IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { ItemActivation, IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { AllEditorsByMostRecentlyUsedQuickAccess, ActiveGroupEditorsByMostRecentlyUsedQuickAccess, AllEditorsByAppearanceQuickAccess } from 'vs/workbench/browser/parts/editor/editorQuickAccess'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IFilesConfigurationService, AutoSaveMode } from 'vs/workbench/services/filesConfiguration/common/filesConfigurationService'; import { IEditorResolverService } from 'vs/workbench/services/editor/common/editorResolverService'; import { isLinux, isNative, isWindows } from 'vs/base/common/platform'; @@ -405,7 +406,7 @@ export class CloseEditorAction extends Action { label: string, @ICommandService private readonly commandService: ICommandService ) { - super(id, label, CSSIcon.asClassName(Codicon.close)); + super(id, label, ThemeIcon.asClassName(Codicon.close)); } override run(context?: IEditorCommandsContext): Promise { @@ -423,7 +424,7 @@ export class UnpinEditorAction extends Action { label: string, @ICommandService private readonly commandService: ICommandService ) { - super(id, label, CSSIcon.asClassName(Codicon.pinned)); + super(id, label, ThemeIcon.asClassName(Codicon.pinned)); } override run(context?: IEditorCommandsContext): Promise { @@ -441,7 +442,7 @@ export class CloseOneEditorAction extends Action { label: string, @IEditorGroupsService private readonly editorGroupService: IEditorGroupsService ) { - super(id, label, CSSIcon.asClassName(Codicon.close)); + super(id, label, ThemeIcon.asClassName(Codicon.close)); } override async run(context?: IEditorCommandsContext): Promise { @@ -731,7 +732,7 @@ export class CloseAllEditorsAction extends AbstractCloseAllAction { @IEditorService editorService: IEditorService, @IFilesConfigurationService filesConfigurationService: IFilesConfigurationService ) { - super(id, label, CSSIcon.asClassName(Codicon.closeAll), fileDialogService, editorGroupService, editorService, filesConfigurationService); + super(id, label, ThemeIcon.asClassName(Codicon.closeAll), fileDialogService, editorGroupService, editorService, filesConfigurationService); } protected get excludeSticky(): boolean { diff --git a/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts b/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts index b0f25065627..26553c5730f 100644 --- a/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts +++ b/src/vs/workbench/browser/parts/editor/editorQuickAccess.ts @@ -16,7 +16,8 @@ import { getIconClasses } from 'vs/editor/common/services/getIconClasses'; import { prepareQuery, scoreItemFuzzy, compareItemsByFuzzyScore, FuzzyScorerCache } from 'vs/base/common/fuzzyScorer'; import { CancellationToken } from 'vs/base/common/cancellation'; import { IDisposable } from 'vs/base/common/lifecycle'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; interface IEditorQuickPickItem extends IQuickPickItemWithResource, IPickerQuickAccessItem { groupId: GroupIdentifier; @@ -161,7 +162,7 @@ export abstract class BaseEditorQuickAccessProvider extends PickerQuickAccessPro buttons: (() => { return [ { - iconClass: isDirty ? ('dirty-editor ' + CSSIcon.asClassName(Codicon.closeDirty)) : CSSIcon.asClassName(Codicon.close), + iconClass: isDirty ? ('dirty-editor ' + ThemeIcon.asClassName(Codicon.closeDirty)) : ThemeIcon.asClassName(Codicon.close), tooltip: localize('closeEditor', "Close Editor"), alwaysVisible: isDirty } diff --git a/src/vs/workbench/browser/parts/notifications/notificationsActions.ts b/src/vs/workbench/browser/parts/notifications/notificationsActions.ts index b4b01e896e8..be186315491 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsActions.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsActions.ts @@ -14,7 +14,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands'; import { IClipboardService } from 'vs/platform/clipboard/common/clipboardService'; import { Codicon } from 'vs/base/common/codicons'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { hash } from 'vs/base/common/hash'; const clearIcon = registerIcon('notifications-clear', Codicon.close, localize('clearIcon', 'Icon for the clear action in notifications.')); diff --git a/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts b/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts index 14051c8ab02..03a4bb4f404 100644 --- a/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts +++ b/src/vs/workbench/browser/parts/notifications/notificationsViewer.ts @@ -20,7 +20,8 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ProgressBar } from 'vs/base/browser/ui/progressbar/progressbar'; import { Severity } from 'vs/platform/notification/common/notification'; import { isNonEmptyArray } from 'vs/base/common/arrays'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdownActionViewItem'; import { DomEmitter } from 'vs/base/browser/event'; import { Gesture, EventType as GestureEventType } from 'vs/base/browser/touch'; @@ -380,10 +381,10 @@ export class NotificationTemplateRenderer extends Disposable { // first remove, then set as the codicon class names overlap NotificationTemplateRenderer.SEVERITIES.forEach(severity => { if (notification.severity !== severity) { - this.template.icon.classList.remove(...CSSIcon.asClassNameArray(this.toSeverityIcon(severity))); + this.template.icon.classList.remove(...ThemeIcon.asClassNameArray(this.toSeverityIcon(severity))); } }); - this.template.icon.classList.add(...CSSIcon.asClassNameArray(this.toSeverityIcon(notification.severity))); + this.template.icon.classList.add(...ThemeIcon.asClassNameArray(this.toSeverityIcon(notification.severity))); } private renderMessage(notification: INotificationViewItem): boolean { @@ -536,7 +537,7 @@ export class NotificationTemplateRenderer extends Disposable { } } - private toSeverityIcon(severity: Severity): CSSIcon { + private toSeverityIcon(severity: Severity): ThemeIcon { switch (severity) { case Severity.Warning: return Codicon.warning; diff --git a/src/vs/workbench/browser/parts/panel/panelPart.ts b/src/vs/workbench/browser/parts/panel/panelPart.ts index 9c12bf9eb7b..d7318ee38bd 100644 --- a/src/vs/workbench/browser/parts/panel/panelPart.ts +++ b/src/vs/workbench/browser/parts/panel/panelPart.ts @@ -19,7 +19,8 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { PanelActivityAction, TogglePanelAction, PlaceHolderPanelActivityAction, PlaceHolderToggleCompositePinnedAction } from 'vs/workbench/browser/parts/panel/panelActions'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { PANEL_BACKGROUND, PANEL_BORDER, PANEL_ACTIVE_TITLE_FOREGROUND, PANEL_INACTIVE_TITLE_FOREGROUND, PANEL_ACTIVE_TITLE_BORDER, EDITOR_DRAG_AND_DROP_BACKGROUND, PANEL_DRAG_AND_DROP_BORDER } from 'vs/workbench/common/theme'; import { contrastBorder, badgeBackground, badgeForeground } from 'vs/platform/theme/common/colorRegistry'; import { CompositeBar, ICompositeBarItem, CompositeDragAndDrop } from 'vs/workbench/browser/parts/compositeBar'; diff --git a/src/vs/workbench/browser/parts/statusbar/statusbarItem.ts b/src/vs/workbench/browser/parts/statusbar/statusbarItem.ts index 2305c0fc522..0e50d4dd285 100644 --- a/src/vs/workbench/browser/parts/statusbar/statusbarItem.ts +++ b/src/vs/workbench/browser/parts/statusbar/statusbarItem.ts @@ -10,7 +10,8 @@ import { ICommandService } from 'vs/platform/commands/common/commands'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IStatusbarEntry, ShowTooltipCommand } from 'vs/workbench/services/statusbar/browser/statusbar'; import { WorkbenchActionExecutedEvent, WorkbenchActionExecutedClassification } from 'vs/base/common/actions'; -import { IThemeService, ThemeColor } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { isThemeColor } from 'vs/editor/common/editorCommon'; import { addDisposableListener, EventType, hide, show, append, EventHelper } from 'vs/base/browser/dom'; import { INotificationService } from 'vs/platform/notification/common/notification'; diff --git a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts index bcd6ab99b8d..158bf39d9c6 100644 --- a/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/browser/parts/titlebar/titlebarPart.ts @@ -14,7 +14,8 @@ import { StandardMouseEvent } from 'vs/base/browser/mouseEvent'; import { IConfigurationService, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; import { DisposableStore } from 'vs/base/common/lifecycle'; import { IBrowserWorkbenchEnvironmentService } from 'vs/workbench/services/environment/browser/environmentService'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { TITLE_BAR_ACTIVE_BACKGROUND, TITLE_BAR_ACTIVE_FOREGROUND, TITLE_BAR_INACTIVE_FOREGROUND, TITLE_BAR_INACTIVE_BACKGROUND, TITLE_BAR_BORDER, WORKBENCH_BACKGROUND } from 'vs/workbench/common/theme'; import { isMacintosh, isWindows, isLinux, isWeb, isNative } from 'vs/base/common/platform'; import { Color } from 'vs/base/common/color'; diff --git a/src/vs/workbench/browser/parts/views/treeView.ts b/src/vs/workbench/browser/parts/views/treeView.ts index 74f59a12289..f997f233b5a 100644 --- a/src/vs/workbench/browser/parts/views/treeView.ts +++ b/src/vs/workbench/browser/parts/views/treeView.ts @@ -51,7 +51,8 @@ import { IProgressService } from 'vs/platform/progress/common/progress'; import { Registry } from 'vs/platform/registry/common/platform'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { ColorScheme } from 'vs/platform/theme/common/theme'; -import { FileThemeIcon, FolderThemeIcon, IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { FileThemeIcon, FolderThemeIcon, IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { DraggedTreeItemsIdentifier, fillEditorsDragData, LocalSelectionTransfer } from 'vs/workbench/browser/dnd'; import { IResourceLabel, ResourceLabels } from 'vs/workbench/browser/labels'; import { API_OPEN_DIFF_EDITOR_COMMAND_ID, API_OPEN_EDITOR_COMMAND_ID } from 'vs/workbench/browser/parts/editor/editorCommands'; diff --git a/src/vs/workbench/browser/parts/views/viewPane.ts b/src/vs/workbench/browser/parts/views/viewPane.ts index c11f99ac058..f313a1bf4bc 100644 --- a/src/vs/workbench/browser/parts/views/viewPane.ts +++ b/src/vs/workbench/browser/parts/views/viewPane.ts @@ -16,7 +16,8 @@ import { Registry } from 'vs/platform/registry/common/platform'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IPaneOptions, Pane, IPaneStyles } from 'vs/base/browser/ui/splitview/paneview'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { Extensions as ViewContainerExtensions, IView, IViewDescriptorService, ViewContainerLocation, IViewsRegistry, IViewContentDescriptor, defaultViewIcon, IViewsService, ViewContainerLocationToString } from 'vs/workbench/common/views'; diff --git a/src/vs/workbench/common/views.ts b/src/vs/workbench/common/views.ts index b9ab65768df..63fb0b7d412 100644 --- a/src/vs/workbench/common/views.ts +++ b/src/vs/workbench/common/views.ts @@ -10,7 +10,7 @@ import { ContextKeyExpression } from 'vs/platform/contextkey/common/contextkey'; import { localize } from 'vs/nls'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IDisposable, Disposable, toDisposable } from 'vs/base/common/lifecycle'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { getOrSet } from 'vs/base/common/map'; import { Registry } from 'vs/platform/registry/common/platform'; import { IKeybindings } from 'vs/platform/keybinding/common/keybindingsRegistry'; diff --git a/src/vs/workbench/contrib/audioCues/browser/commands.ts b/src/vs/workbench/contrib/audioCues/browser/commands.ts index d78c94822da..cec8946ee74 100644 --- a/src/vs/workbench/contrib/audioCues/browser/commands.ts +++ b/src/vs/workbench/contrib/audioCues/browser/commands.ts @@ -3,7 +3,8 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { localize } from 'vs/nls'; import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility'; import { Action2 } from 'vs/platform/actions/common/actions'; @@ -38,7 +39,7 @@ export class ShowAudioCueHelp extends Action2 { : `${audioCueService.isEnabled(cue) ? '$(check)' : ' '} ${cue.name}`, audioCue: cue, buttons: [{ - iconClass: CSSIcon.asClassName(Codicon.settingsGear), + iconClass: ThemeIcon.asClassName(Codicon.settingsGear), tooltip: localize('audioCues.help.settings', 'Enable/Disable Audio Cue'), }], })); diff --git a/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.ts b/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.ts index 6c3d35ec025..1c16a3d3aa1 100644 --- a/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.ts +++ b/src/vs/workbench/contrib/bulkEdit/browser/preview/bulkEditTree.ts @@ -21,7 +21,8 @@ import { ILabelService } from 'vs/platform/label/common/label'; import type { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; import { IconLabel } from 'vs/base/browser/ui/iconLabel/iconLabel'; import { basename } from 'vs/base/common/resources'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { compare } from 'vs/base/common/strings'; import { URI } from 'vs/base/common/uri'; import { IUndoRedoService } from 'vs/platform/undoRedo/common/undoRedo'; diff --git a/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts b/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts index 5175aa33d6d..9021108e90d 100644 --- a/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts +++ b/src/vs/workbench/contrib/callHierarchy/browser/callHierarchyTree.ts @@ -14,7 +14,7 @@ import { compare } from 'vs/base/common/strings'; import { Range } from 'vs/editor/common/core/range'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; import { localize } from 'vs/nls'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; export class Call { constructor( @@ -120,7 +120,7 @@ export class CallRenderer implements ITreeRenderer= 0) { extraClasses.push(`deprecated`); diff --git a/src/vs/workbench/contrib/comments/browser/commentNode.ts b/src/vs/workbench/contrib/comments/browser/commentNode.ts index 5bd6f667871..a12c52ee769 100644 --- a/src/vs/workbench/contrib/comments/browser/commentNode.ts +++ b/src/vs/workbench/contrib/comments/browser/commentNode.ts @@ -32,7 +32,8 @@ import { CommentFormActions } from 'vs/workbench/contrib/comments/browser/commen import { MOUSE_CURSOR_TEXT_CSS_CLASS_NAME } from 'vs/base/browser/ui/mouseCursor/mouseCursor'; import { ActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems'; import { DropdownMenuActionViewItem } from 'vs/base/browser/ui/dropdown/dropdownActionViewItem'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { MarshalledId } from 'vs/base/common/marshallingIds'; import { TimestampWidget } from 'vs/workbench/contrib/comments/browser/timestamp'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; @@ -215,7 +216,7 @@ export class CommentNode extends Disposable { { actionViewItemProvider: action => this.actionViewItemProvider(action as Action), actionRunner: this.actionRunner, - classNames: ['toolbar-toggle-pickReactions', ...CSSIcon.asClassNameArray(Codicon.reactions)], + classNames: ['toolbar-toggle-pickReactions', ...ThemeIcon.asClassNameArray(Codicon.reactions)], anchorAlignmentProvider: () => AnchorAlignment.RIGHT } ); @@ -343,7 +344,7 @@ export class CommentNode extends Disposable { { actionViewItemProvider: action => this.actionViewItemProvider(action as Action), actionRunner: this.actionRunner, - classNames: ['toolbar-toggle-pickReactions', ...CSSIcon.asClassNameArray(Codicon.reactions)], + classNames: ['toolbar-toggle-pickReactions', ...ThemeIcon.asClassNameArray(Codicon.reactions)], anchorAlignmentProvider: () => AnchorAlignment.RIGHT } ); diff --git a/src/vs/workbench/contrib/comments/browser/commentThreadHeader.ts b/src/vs/workbench/contrib/comments/browser/commentThreadHeader.ts index 161d50ba555..302bec8e1b6 100644 --- a/src/vs/workbench/contrib/comments/browser/commentThreadHeader.ts +++ b/src/vs/workbench/contrib/comments/browser/commentThreadHeader.ts @@ -17,7 +17,7 @@ import { IMenu, MenuItemAction, SubmenuItemAction } from 'vs/platform/actions/co import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { CommentMenus } from 'vs/workbench/contrib/comments/browser/commentMenus'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { MarshalledId } from 'vs/base/common/marshallingIds'; diff --git a/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts b/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts index 6942fb99511..0e066b41c3e 100644 --- a/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts +++ b/src/vs/workbench/contrib/comments/browser/commentsTreeViewer.ts @@ -15,11 +15,12 @@ import { IListVirtualDelegate, IListRenderer } from 'vs/base/browser/ui/list/lis import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { WorkbenchAsyncDataTree, IListService, IWorkbenchAsyncDataTreeOptions } from 'vs/platform/list/browser/listService'; -import { IColorTheme, IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IColorTheme, IThemeService } from 'vs/platform/theme/common/themeService'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IColorMapping } from 'vs/platform/theme/common/styler'; import { TimestampWidget } from 'vs/workbench/contrib/comments/browser/timestamp'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; import { commentViewThreadStateColorVar, getCommentThreadStateColor } from 'vs/workbench/contrib/comments/browser/commentColors'; import { CommentThreadState } from 'vs/editor/common/languages'; @@ -188,7 +189,7 @@ export class CommentNodeRenderer implements IListRenderer return renderedComment; } - private getIcon(threadState?: CommentThreadState): CSSIcon { + private getIcon(threadState?: CommentThreadState): ThemeIcon { if (threadState === CommentThreadState.Unresolved) { return Codicon.commentUnresolved; } else { diff --git a/src/vs/workbench/contrib/debug/browser/baseDebugView.ts b/src/vs/workbench/contrib/debug/browser/baseDebugView.ts index 87c8c91033c..f0ab9acc01f 100644 --- a/src/vs/workbench/contrib/debug/browser/baseDebugView.ts +++ b/src/vs/workbench/contrib/debug/browser/baseDebugView.ts @@ -9,7 +9,8 @@ import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { HighlightedLabel, IHighlight } from 'vs/base/browser/ui/highlightedlabel/highlightedLabel'; import { IInputValidationOptions, InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; import { ITreeNode, ITreeRenderer } from 'vs/base/browser/ui/tree/tree'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { createMatches, FuzzyScore } from 'vs/base/common/filters'; import { once } from 'vs/base/common/functional'; import { KeyCode } from 'vs/base/common/keyCodes'; @@ -157,7 +158,7 @@ export abstract class AbstractExpressionsRenderer implements ITreeRenderer { diff --git a/src/vs/workbench/contrib/debug/browser/debugToolBar.ts b/src/vs/workbench/contrib/debug/browser/debugToolBar.ts index d599dec0369..7e4ee4af327 100644 --- a/src/vs/workbench/contrib/debug/browser/debugToolBar.ts +++ b/src/vs/workbench/contrib/debug/browser/debugToolBar.ts @@ -28,7 +28,8 @@ import { INotificationService } from 'vs/platform/notification/common/notificati import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { widgetBorder, widgetShadow } from 'vs/platform/theme/common/colorRegistry'; -import { IThemeService, Themable, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, Themable } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { FocusSessionActionViewItem } from 'vs/workbench/contrib/debug/browser/debugActionViewItems'; import { debugToolBarBackground, debugToolBarBorder } from 'vs/workbench/contrib/debug/browser/debugColors'; diff --git a/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts b/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts index 2f733465cfc..1ebb7c9e5ff 100644 --- a/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts +++ b/src/vs/workbench/contrib/debug/browser/exceptionWidget.ts @@ -10,7 +10,8 @@ import { ZoneWidget } from 'vs/editor/contrib/zoneWidget/browser/zoneWidget'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { IExceptionInfo, IDebugSession, IDebugEditorContribution, EDITOR_CONTRIBUTION_ID } from 'vs/workbench/contrib/debug/common/debug'; import { RunOnceScheduler } from 'vs/base/common/async'; -import { IThemeService, IColorTheme, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, IColorTheme } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Color } from 'vs/base/common/color'; import { registerColor } from 'vs/platform/theme/common/colorRegistry'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; diff --git a/src/vs/workbench/contrib/debug/browser/repl.ts b/src/vs/workbench/contrib/debug/browser/repl.ts index 7c8bc6a43f9..e0a6832eb25 100644 --- a/src/vs/workbench/contrib/debug/browser/repl.ts +++ b/src/vs/workbench/contrib/debug/browser/repl.ts @@ -54,7 +54,8 @@ import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { editorForeground, resolveColorValue } from 'vs/platform/theme/common/colorRegistry'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { FilterViewPane, IViewPaneOptions, ViewAction } from 'vs/workbench/browser/parts/views/viewPane'; import { IViewDescriptorService, IViewsService } from 'vs/workbench/common/views'; import { getSimpleCodeEditorWidgetOptions, getSimpleEditorOptions } from 'vs/workbench/contrib/codeEditor/browser/simpleEditorOptions'; diff --git a/src/vs/workbench/contrib/debug/browser/replViewer.ts b/src/vs/workbench/contrib/debug/browser/replViewer.ts index bea244d9893..87fef2b500a 100644 --- a/src/vs/workbench/contrib/debug/browser/replViewer.ts +++ b/src/vs/workbench/contrib/debug/browser/replViewer.ts @@ -18,7 +18,8 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { ILabelService } from 'vs/platform/label/common/label'; import { defaultCountBadgeStyles } from 'vs/platform/theme/browser/defaultStyles'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { AbstractExpressionsRenderer, IExpressionTemplateData, IInputBoxOptions, renderExpressionValue, renderVariable } from 'vs/workbench/contrib/debug/browser/baseDebugView'; import { handleANSIOutput } from 'vs/workbench/contrib/debug/browser/debugANSIHandling'; import { debugConsoleEvaluationInput } from 'vs/workbench/contrib/debug/browser/debugIcons'; diff --git a/src/vs/workbench/contrib/debug/test/browser/callStack.test.ts b/src/vs/workbench/contrib/debug/test/browser/callStack.test.ts index ea4f808cc37..a3aa4a0b15a 100644 --- a/src/vs/workbench/contrib/debug/test/browser/callStack.test.ts +++ b/src/vs/workbench/contrib/debug/test/browser/callStack.test.ts @@ -17,7 +17,7 @@ import { getContext, getContextForContributedActions, getSpecificSourceName } fr import { getStackFrameThreadAndSessionToFocus } from 'vs/workbench/contrib/debug/browser/debugService'; import { generateUuid } from 'vs/base/common/uuid'; import { debugStackframe, debugStackframeFocused } from 'vs/workbench/contrib/debug/browser/debugIcons'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock'; import { MockRawSession } from 'vs/workbench/contrib/debug/test/common/mockDebug'; diff --git a/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts b/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts index 18a130388d9..50bdafb4a23 100644 --- a/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts +++ b/src/vs/workbench/contrib/editSessions/browser/editSessions.contribution.ts @@ -50,7 +50,7 @@ import { VirtualWorkspaceContext, WorkspaceFolderCountContext } from 'vs/workben import { CancellationToken, CancellationTokenSource } from 'vs/base/common/cancellation'; import { equals } from 'vs/base/common/objects'; import { EditSessionIdentityMatch, IEditSessionIdentityService } from 'vs/platform/workspace/common/editSessions'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IOutputService } from 'vs/workbench/services/output/common/output'; import { sha1Hex } from 'vs/base/browser/hash'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; diff --git a/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts b/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts index 7de1f262a68..f29072df3b8 100644 --- a/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts +++ b/src/vs/workbench/contrib/editSessions/browser/editSessionsStorageService.ts @@ -25,14 +25,15 @@ import { ICredentialsService } from 'vs/platform/credentials/common/credentials' import { getCurrentAuthenticationSessionInfo } from 'vs/workbench/services/authentication/browser/authenticationService'; import { isWeb } from 'vs/base/common/platform'; import { ICommandService } from 'vs/platform/commands/common/commands'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IUserDataSyncMachinesService, UserDataSyncMachinesService } from 'vs/platform/userDataSync/common/userDataSyncMachines'; import { Emitter } from 'vs/base/common/event'; type ExistingSession = IQuickPickItem & { session: AuthenticationSession & { providerId: string } }; type AuthenticationProviderOption = IQuickPickItem & { provider: IAuthenticationProvider }; -const configureContinueOnPreference = { iconClass: CSSIcon.asClassName(Codicon.settingsGear), tooltip: localize('configure continue on', 'Configure this preference in settings') }; +const configureContinueOnPreference = { iconClass: ThemeIcon.asClassName(Codicon.settingsGear), tooltip: localize('configure continue on', 'Configure this preference in settings') }; export class EditSessionsWorkbenchService extends Disposable implements IEditSessionsStorageService { declare _serviceBrand: undefined; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts b/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts index 7dfd6961a85..78c122b6302 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionEditor.ts @@ -34,7 +34,8 @@ import { import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; import { IOpenerService, matchesScheme } from 'vs/platform/opener/common/opener'; -import { IColorTheme, ICssStyleCollector, IThemeService, registerThemingParticipant, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IColorTheme, ICssStyleCollector, IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { KeybindingLabel } from 'vs/base/browser/ui/keybindingLabel/keybindingLabel'; import { ContextKeyExpr, IContextKey, IContextKeyService, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts index 417ff0f53ef..104b1849813 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsActions.ts @@ -27,7 +27,8 @@ import { IExtensionService, toExtension, toExtensionDescription } from 'vs/workb import { URI } from 'vs/base/common/uri'; import { CommandsRegistry, ICommandService } from 'vs/platform/commands/common/commands'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; -import { registerThemingParticipant, IColorTheme, ICssStyleCollector, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { registerThemingParticipant, IColorTheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { buttonBackground, buttonForeground, buttonHoverBackground, registerColor, editorWarningForeground, editorInfoForeground, editorErrorForeground, buttonSeparator } from 'vs/platform/theme/common/colorRegistry'; import { IJSONEditingService } from 'vs/workbench/services/configuration/common/jsonEditing'; import { ITextEditorSelection } from 'vs/platform/editor/common/editor'; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts index 62e2ceb8dae..3d9e62b37b4 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsList.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsList.ts @@ -20,7 +20,8 @@ import { IExtensionService, toExtension } from 'vs/workbench/services/extensions import { IExtensionManagementServerService } from 'vs/workbench/services/extensionManagement/common/extensionManagement'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { isLanguagePackExtension } from 'vs/platform/extensions/common/extensions'; -import { registerThemingParticipant, IColorTheme, ICssStyleCollector, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { registerThemingParticipant, IColorTheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { foreground, listActiveSelectionForeground, listActiveSelectionBackground, listInactiveSelectionForeground, listInactiveSelectionBackground, listFocusForeground, listFocusBackground, listHoverForeground, listHoverBackground } from 'vs/platform/theme/common/colorRegistry'; import { WORKBENCH_BACKGROUND } from 'vs/workbench/common/theme'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; diff --git a/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts b/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts index 776e7370da8..e451c046227 100644 --- a/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts +++ b/src/vs/workbench/contrib/extensions/browser/extensionsWidgets.ts @@ -14,7 +14,8 @@ import { EnablementState, IExtensionManagementServerService } from 'vs/workbench import { IExtensionIgnoredRecommendationsService, IExtensionRecommendationsService } from 'vs/workbench/services/extensionRecommendations/common/extensionRecommendations'; import { ILabelService } from 'vs/platform/label/common/label'; import { extensionButtonProminentBackground, ExtensionStatusAction } from 'vs/workbench/contrib/extensions/browser/extensionsActions'; -import { IThemeService, ThemeIcon, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { EXTENSION_BADGE_REMOTE_BACKGROUND, EXTENSION_BADGE_REMOTE_FOREGROUND } from 'vs/workbench/common/theme'; import { Emitter, Event } from 'vs/base/common/event'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; diff --git a/src/vs/workbench/contrib/feedback/browser/feedback.ts b/src/vs/workbench/contrib/feedback/browser/feedback.ts index eb7f28b298e..6d08fef9610 100644 --- a/src/vs/workbench/contrib/feedback/browser/feedback.ts +++ b/src/vs/workbench/contrib/feedback/browser/feedback.ts @@ -22,7 +22,8 @@ import { IProductService } from 'vs/platform/product/common/productService'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter } from 'vs/base/common/event'; import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/layoutService'; import { defaultButtonStyles } from 'vs/platform/theme/browser/defaultStyles'; @@ -122,7 +123,7 @@ export class FeedbackWidget extends Disposable { append(this.feedbackForm, $('h2.title')).textContent = localize("label.sendASmile", "Tweet us your feedback."); // Close Button (top right) - const closeBtn = append(this.feedbackForm, $(`div.cancel${CSSIcon.asCSSSelector(Codicon.close)}`)); + const closeBtn = append(this.feedbackForm, $(`div.cancel${ThemeIcon.asCSSSelector(Codicon.close)}`)); closeBtn.tabIndex = 0; closeBtn.setAttribute('role', 'button'); closeBtn.title = localize('close', "Close"); @@ -284,7 +285,7 @@ export class FeedbackWidget extends Disposable { this.sendButton = new Button(buttonsContainer, defaultButtonStyles); this.sendButton.enabled = false; this.sendButton.label = localize('tweet', "Tweet"); - prepend(this.sendButton.element, $(`span${CSSIcon.asCSSSelector(Codicon.twitter)}`)); + prepend(this.sendButton.element, $(`span${ThemeIcon.asCSSSelector(Codicon.twitter)}`)); this.sendButton.element.classList.add('send'); this.sendButton.element.title = localize('tweetFeedback', "Tweet Feedback"); diff --git a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts index 7f9a69d3f7d..e3267315b93 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.contribution.ts @@ -23,7 +23,7 @@ import { Schemas } from 'vs/base/common/network'; import { DirtyWorkingCopiesContext, EnterMultiRootWorkspaceSupportContext, HasWebFileSystemAccess, WorkbenchStateContext, WorkspaceFolderCountContext, SidebarFocusContext, ActiveEditorCanRevertContext, ActiveEditorContext, ResourceContextKey, ActiveEditorAvailableEditorIdsContext } from 'vs/workbench/common/contextkeys'; import { IsWebContext } from 'vs/platform/contextkey/common/contextkeys'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IExplorerService } from 'vs/workbench/contrib/files/browser/files'; import { Codicon } from 'vs/base/common/codicons'; diff --git a/src/vs/workbench/contrib/files/browser/fileActions.ts b/src/vs/workbench/contrib/files/browser/fileActions.ts index 549017c8865..f7867b30997 100644 --- a/src/vs/workbench/contrib/files/browser/fileActions.ts +++ b/src/vs/workbench/contrib/files/browser/fileActions.ts @@ -41,7 +41,8 @@ import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/wo import { IWorkingCopy } from 'vs/workbench/services/workingCopy/common/workingCopy'; import { timeout } from 'vs/base/common/async'; import { IWorkingCopyFileService } from 'vs/workbench/services/workingCopy/common/workingCopyFileService'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IViewsService, ViewContainerLocation } from 'vs/workbench/common/views'; import { trim, rtrim } from 'vs/base/common/strings'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; @@ -578,7 +579,7 @@ export class SaveAllInGroupAction extends BaseSaveAllAction { static readonly LABEL = nls.localize('saveAllInGroup', "Save All in Group"); override get class(): string { - return 'explorer-action ' + CSSIcon.asClassName(Codicon.saveAll); + return 'explorer-action ' + ThemeIcon.asClassName(Codicon.saveAll); } protected doRun(context: unknown): Promise { @@ -592,7 +593,7 @@ export class CloseGroupAction extends Action { static readonly LABEL = nls.localize('closeGroup', "Close Group"); constructor(id: string, label: string, @ICommandService private readonly commandService: ICommandService) { - super(id, label, CSSIcon.asClassName(Codicon.closeAll)); + super(id, label, ThemeIcon.asClassName(Codicon.closeAll)); } override run(context?: unknown): Promise { diff --git a/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.ts b/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.ts index 1e34d14a364..82c6cc915ac 100644 --- a/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.ts +++ b/src/vs/workbench/contrib/languageStatus/browser/languageStatus.contribution.ts @@ -11,7 +11,8 @@ import Severity from 'vs/base/common/severity'; import { getCodeEditor, ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { localize } from 'vs/nls'; import { Registry } from 'vs/platform/registry/common/platform'; -import { ThemeColor, themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { ThemeColor, ThemeIcon } from 'vs/base/common/themables'; import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions, IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { STATUS_BAR_ERROR_ITEM_BACKGROUND, STATUS_BAR_ERROR_ITEM_FOREGROUND, STATUS_BAR_WARNING_ITEM_BACKGROUND, STATUS_BAR_WARNING_ITEM_FOREGROUND } from 'vs/workbench/common/theme'; import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; @@ -24,7 +25,7 @@ import { IOpenerService } from 'vs/platform/opener/common/opener'; import { MarkdownString } from 'vs/base/common/htmlContent'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { Action } from 'vs/base/common/actions'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; import { IStorageService, IStorageValueChangeEvent, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { equals } from 'vs/base/common/arrays'; import { URI } from 'vs/base/common/uri'; @@ -308,14 +309,14 @@ class EditorStatusContribution implements IWorkbenchContribution { store.add(actionBar); let action: Action; if (!isPinned) { - action = new Action('pin', localize('pin', "Add to Status Bar"), CSSIcon.asClassName(Codicon.pin), true, () => { + action = new Action('pin', localize('pin', "Add to Status Bar"), ThemeIcon.asClassName(Codicon.pin), true, () => { this._dedicated.add(status.id); this._statusBarService.updateEntryVisibility(status.id, true); this._update(); this._storeState(); }); } else { - action = new Action('unpin', localize('unpin', "Remove from Status Bar"), CSSIcon.asClassName(Codicon.pinned), true, () => { + action = new Action('unpin', localize('unpin', "Remove from Status Bar"), ThemeIcon.asClassName(Codicon.pinned), true, () => { this._dedicated.delete(status.id); this._statusBarService.updateEntryVisibility(status.id, false); this._update(); diff --git a/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts b/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts index f5c2a695fd6..c46e0f9cf92 100644 --- a/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts +++ b/src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts @@ -13,7 +13,7 @@ import { IMarker, MarkerSeverity } from 'vs/platform/markers/common/markers'; import { ResourceMarkers, Marker, RelatedInformation, MarkerElement, MarkerTableItem } from 'vs/workbench/contrib/markers/browser/markersModel'; import Messages from 'vs/workbench/contrib/markers/browser/messages'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IDisposable, dispose, Disposable, toDisposable, DisposableStore } from 'vs/base/common/lifecycle'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { QuickFixAction, QuickFixActionViewItem } from 'vs/workbench/contrib/markers/browser/markersViewActions'; diff --git a/src/vs/workbench/contrib/markers/browser/markersViewActions.ts b/src/vs/workbench/contrib/markers/browser/markersViewActions.ts index ced8e6582c7..818f2f56fe6 100644 --- a/src/vs/workbench/contrib/markers/browser/markersViewActions.ts +++ b/src/vs/workbench/contrib/markers/browser/markersViewActions.ts @@ -11,7 +11,8 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { Marker } from 'vs/workbench/contrib/markers/browser/markersModel'; import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { Event, Emitter } from 'vs/base/common/event'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ActionViewItem } from 'vs/base/browser/ui/actionbar/actionViewItems'; import { MarkersContextKeys } from 'vs/workbench/contrib/markers/common/markers'; import 'vs/css!./markersViewActions'; @@ -111,7 +112,7 @@ export class MarkersFilters extends Disposable { export class QuickFixAction extends Action { public static readonly ID: string = 'workbench.actions.problems.quickfix'; - private static readonly CLASS: string = 'markers-panel-action-quickfix ' + CSSIcon.asClassName(Codicon.lightBulb); + private static readonly CLASS: string = 'markers-panel-action-quickfix ' + ThemeIcon.asClassName(Codicon.lightBulb); private static readonly AUTO_FIX_CLASS: string = QuickFixAction.CLASS + ' autofixable'; private readonly _onShowQuickFixes = this._register(new Emitter()); diff --git a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts index 8392a48cdb1..830ffd1a16c 100644 --- a/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts +++ b/src/vs/workbench/contrib/mergeEditor/browser/view/editors/inputCodeEditorView.ts @@ -7,7 +7,8 @@ import { addDisposableListener, EventType, h, reset } from 'vs/base/browser/dom' import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { Toggle } from 'vs/base/browser/ui/toggle/toggle'; import { Action, IAction, Separator } from 'vs/base/common/actions'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Disposable } from 'vs/base/common/lifecycle'; import { clamp } from 'vs/base/common/numbers'; import { autorun, autorunWithStore, derived, IObservable, ISettableObservable, ITransaction, observableValue, transaction } from 'vs/base/common/observable'; @@ -415,7 +416,7 @@ export class MergeConflictGutterItemView extends Disposable implements IGutterIt autorun('Update Checkbox', (reader) => { const item = this.item.read(reader)!; const value = item.toggleState.read(reader); - const iconMap: Record = { + const iconMap: Record = { [InputState.excluded]: { icon: undefined, checked: false, title: localize('accept.excluded', "Accept") }, [InputState.unrecognized]: { icon: Codicon.circleFilled, checked: false, title: localize('accept.conflicting', "Accept (result is dirty)") }, [InputState.first]: { icon: Codicon.check, checked: true, title: localize('accept.first', "Undo accept") }, diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.ts b/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.ts index eb5fd8135e6..c9a9a1a378d 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/executionStatusBarItemController.ts @@ -7,7 +7,8 @@ import { disposableTimeout, RunOnceScheduler } from 'vs/base/common/async'; import { Disposable, dispose, IDisposable, MutableDisposable } from 'vs/base/common/lifecycle'; import { localize } from 'vs/nls'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { themeColorFromId, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ICellVisibilityChangeEvent, NotebookVisibleCellObserver } from 'vs/workbench/contrib/notebook/browser/contrib/cellStatusBar/notebookVisibleCellObserver'; import { ICellViewModel, INotebookEditor, INotebookEditorContribution, INotebookViewModel } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { registerNotebookContribution } from 'vs/workbench/contrib/notebook/browser/notebookEditorExtensions'; diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.ts b/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.ts index c5897abc9b5..7e1f8d698a4 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/find/notebookFindReplaceWidget.ts @@ -19,7 +19,8 @@ import { ContextScopedReplaceInput, registerAndCreateHistoryNavigationContext } import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextMenuService, IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { registerIcon, widgetClose } from 'vs/platform/theme/common/iconRegistry'; -import { registerThemingParticipant, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { parseReplaceString, ReplacePattern } from 'vs/editor/contrib/find/browser/replacePattern'; import { Codicon } from 'vs/base/common/codicons'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; diff --git a/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts b/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts index 89d670f0c8c..68769f72685 100644 --- a/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts +++ b/src/vs/workbench/contrib/notebook/browser/contrib/outline/notebookOutline.ts @@ -7,7 +7,8 @@ import 'vs/css!./notebookOutline'; import { Codicon } from 'vs/base/common/codicons'; import { Emitter, Event } from 'vs/base/common/event'; import { combinedDisposable, IDisposable, Disposable, DisposableStore, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { CellRevealType, IActiveNotebookEditor, ICellViewModel, INotebookEditorOptions, INotebookEditorPane, INotebookViewCellsUpdateEvent } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { NotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookEditor'; import { CellKind } from 'vs/workbench/contrib/notebook/common/notebookCommon'; diff --git a/src/vs/workbench/contrib/notebook/browser/controller/executeActions.ts b/src/vs/workbench/contrib/notebook/browser/controller/executeActions.ts index 9ba98a19c19..831aaf9f639 100644 --- a/src/vs/workbench/contrib/notebook/browser/controller/executeActions.ts +++ b/src/vs/workbench/contrib/notebook/browser/controller/executeActions.ts @@ -11,7 +11,7 @@ import { localize } from 'vs/nls'; import { MenuId, registerAction2 } from 'vs/platform/actions/common/actions'; import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { EditorsOrder } from 'vs/workbench/common/editor'; import { insertCell } from 'vs/workbench/contrib/notebook/browser/controller/cellOperations'; import { cellExecutionArgs, CellToolbarOrder, CELL_TITLE_CELL_GROUP_ID, executeNotebookCondition, getContextFromActiveEditor, getContextFromUri, INotebookActionContext, INotebookCellActionContext, INotebookCellToolbarActionContext, INotebookCommandContext, NotebookAction, NotebookCellAction, NotebookMultiCellAction, NOTEBOOK_EDITOR_WIDGET_ACTION_WEIGHT, parseMultiCellExecutionArgs } from 'vs/workbench/contrib/notebook/browser/controller/coreActions'; diff --git a/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.ts b/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.ts index 60b51ae71b7..00c89e900fa 100644 --- a/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.ts +++ b/src/vs/workbench/contrib/notebook/browser/diff/diffElementOutputs.ts @@ -13,7 +13,7 @@ import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/no import { NotebookCellOutputsSplice } from 'vs/workbench/contrib/notebook/common/notebookCommon'; import { INotebookService } from 'vs/workbench/contrib/notebook/common/notebookService'; import { DiffNestedCellViewModel } from 'vs/workbench/contrib/notebook/browser/diff/diffNestedCellViewModel'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { mimetypeIcon } from 'vs/workbench/contrib/notebook/browser/notebookIcons'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { KeyCode } from 'vs/base/common/keyCodes'; diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts index ed38fe4bd2f..412c551d3af 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellOutput.ts @@ -18,7 +18,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IOpenerService } from 'vs/platform/opener/common/opener'; import { IQuickInputService, IQuickPickItem } from 'vs/platform/quickinput/common/quickInput'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ViewContainerLocation } from 'vs/workbench/common/views'; import { IExtensionsViewPaneContainer, VIEWLET_ID as EXTENSION_VIEWLET_ID } from 'vs/workbench/contrib/extensions/common/extensions'; import { INotebookCellActionContext } from 'vs/workbench/contrib/notebook/browser/controller/coreActions'; diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellStatusPart.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellStatusPart.ts index 9a7879ac1fe..da37f557870 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellStatusPart.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/cellStatusPart.ts @@ -19,7 +19,8 @@ import { ICommandService } from 'vs/platform/commands/common/commands'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { INotificationService } from 'vs/platform/notification/common/notification'; import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; -import { IThemeService, ThemeColor } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { INotebookCellActionContext } from 'vs/workbench/contrib/notebook/browser/controller/coreActions'; import { CellFocusMode, ICellViewModel, INotebookEditorDelegate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { CellContentPart } from 'vs/workbench/contrib/notebook/browser/view/cellPart'; diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCell.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCell.ts index 390a2e1da86..1768e58c766 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCell.ts @@ -6,7 +6,8 @@ import * as DOM from 'vs/base/browser/dom'; import { raceCancellation } from 'vs/base/common/async'; import { CancellationTokenSource } from 'vs/base/common/cancellation'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Event } from 'vs/base/common/event'; import { Disposable, IDisposable, toDisposable } from 'vs/base/common/lifecycle'; import * as strings from 'vs/base/common/strings'; @@ -406,7 +407,7 @@ export class CodeCell extends Disposable { expandIcon.title = localize('cellExpandInputButtonLabel', "Expand Cell Input ({0})", keybinding.getLabel()); } - expandIcon.classList.add(...CSSIcon.asClassNameArray(Codicon.more)); + expandIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.more)); element.appendChild(expandIcon); } diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCellExecutionIcon.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCellExecutionIcon.ts index 38a21aa16c7..a997fc93e8a 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCellExecutionIcon.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/codeCellExecutionIcon.ts @@ -7,7 +7,7 @@ import * as DOM from 'vs/base/browser/dom'; import { renderLabelWithIcons } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { Disposable } from 'vs/base/common/lifecycle'; import { localize } from 'vs/nls'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ICellViewModel, INotebookEditorDelegate } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { errorStateIcon, executingStateIcon, pendingStateIcon, successStateIcon } from 'vs/workbench/contrib/notebook/browser/notebookIcons'; import { NotebookCellExecutionState, NotebookCellInternalMetadata } from 'vs/workbench/contrib/notebook/common/notebookCommon'; diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/collapsedCellOutput.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/collapsedCellOutput.ts index f14f9750842..4994eae4f62 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/collapsedCellOutput.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/collapsedCellOutput.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import * as DOM from 'vs/base/browser/dom'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { localize } from 'vs/nls'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { EXPAND_CELL_OUTPUT_COMMAND_ID, INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; @@ -23,7 +24,7 @@ export class CollapsedCellOutput extends CellContentPart { const placeholder = DOM.append(cellOutputCollapseContainer, $('span.expandOutputPlaceholder')) as HTMLElement; placeholder.textContent = localize('cellOutputsCollapsedMsg', "Outputs are collapsed"); const expandIcon = DOM.append(cellOutputCollapseContainer, $('span.expandOutputIcon')); - expandIcon.classList.add(...CSSIcon.asClassNameArray(Codicon.more)); + expandIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.more)); const keybinding = keybindingService.lookupKeybinding(EXPAND_CELL_OUTPUT_COMMAND_ID); if (keybinding) { diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/foldedCellHint.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/foldedCellHint.ts index 84358d83847..d5dff6359c7 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/foldedCellHint.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/foldedCellHint.ts @@ -4,7 +4,8 @@ *--------------------------------------------------------------------------------------------*/ import * as DOM from 'vs/base/browser/dom'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { localize } from 'vs/nls'; import { FoldingController } from 'vs/workbench/contrib/notebook/browser/controller/foldingController'; import { CellEditState, CellFoldingState, INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; @@ -54,7 +55,7 @@ export class FoldedCellHint extends CellContentPart { private getHiddenCellHintButton(element: MarkupCellViewModel): HTMLElement { const expandIcon = DOM.$('span.cell-expand-part-button'); - expandIcon.classList.add(...CSSIcon.asClassNameArray(Codicon.more)); + expandIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.more)); this._register(DOM.addDisposableListener(expandIcon, DOM.EventType.CLICK, () => { const controller = this._notebookEditor.getContribution(FoldingController.id); const idx = this._notebookEditor.getCellIndex(element); diff --git a/src/vs/workbench/contrib/notebook/browser/view/cellParts/markupCell.ts b/src/vs/workbench/contrib/notebook/browser/view/cellParts/markupCell.ts index 81f9b09533e..2d641f89831 100644 --- a/src/vs/workbench/contrib/notebook/browser/view/cellParts/markupCell.ts +++ b/src/vs/workbench/contrib/notebook/browser/view/cellParts/markupCell.ts @@ -7,7 +7,8 @@ import * as DOM from 'vs/base/browser/dom'; import { renderIcon } from 'vs/base/browser/ui/iconLabel/iconLabels'; import { disposableTimeout, raceCancellation } from 'vs/base/common/async'; import { CancellationTokenSource } from 'vs/base/common/cancellation'; -import { Codicon, CSSIcon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Disposable, DisposableStore, MutableDisposable, toDisposable } from 'vs/base/common/lifecycle'; import { ICodeEditor } from 'vs/editor/browser/editorBrowser'; import { CodeEditorWidget } from 'vs/editor/browser/widget/codeEditorWidget'; @@ -255,7 +256,7 @@ export class MarkupCell extends Disposable { this.templateData.cellInputCollapsedContainer.innerText = ''; const markdownIcon = DOM.append(this.templateData.cellInputCollapsedContainer, DOM.$('span')); - markdownIcon.classList.add(...CSSIcon.asClassNameArray(Codicon.markdown)); + markdownIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.markdown)); const element = DOM.$('div'); element.classList.add('cell-collapse-preview'); @@ -264,7 +265,7 @@ export class MarkupCell extends Disposable { this.templateData.cellInputCollapsedContainer.appendChild(element); const expandIcon = DOM.append(element, DOM.$('span.expandInputIcon')); - expandIcon.classList.add(...CSSIcon.asClassNameArray(Codicon.more)); + expandIcon.classList.add(...ThemeIcon.asClassNameArray(Codicon.more)); const keybinding = this.keybindingService.lookupKeybinding(EXPAND_CELL_INPUT_COMMAND_ID); if (keybinding) { element.title = localize('cellExpandInputButtonLabelWithDoubleClick', "Double-click to expand cell input ({0})", keybinding.getLabel()); diff --git a/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.ts b/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.ts index a224313e946..e3cc822b307 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelQuickPickStrategy.ts @@ -23,7 +23,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { IProductService } from 'vs/platform/product/common/productService'; import { ProgressLocation } from 'vs/platform/progress/common/progress'; import { IQuickInputService, IQuickPick, IQuickPickItem, QuickPickInput } from 'vs/platform/quickinput/common/quickInput'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ViewContainerLocation } from 'vs/workbench/common/views'; import { IExtension, IExtensionsViewPaneContainer, IExtensionsWorkbenchService, VIEWLET_ID as EXTENSION_VIEWLET_ID } from 'vs/workbench/contrib/extensions/common/extensions'; import { IActiveNotebookEditor, INotebookExtensionRecommendation, JUPYTER_EXTENSION_ID, KERNEL_RECOMMENDATIONS } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; diff --git a/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelView.ts b/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelView.ts index 3b50e3ba7b4..9c2da8f7628 100644 --- a/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelView.ts +++ b/src/vs/workbench/contrib/notebook/browser/viewParts/notebookKernelView.ts @@ -13,7 +13,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { ContextKeyExpr, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { NOTEBOOK_ACTIONS_CATEGORY, SELECT_KERNEL_ID } from 'vs/workbench/contrib/notebook/browser/controller/coreActions'; import { getNotebookEditorFromEditorPane, INotebookEditor } from 'vs/workbench/contrib/notebook/browser/notebookBrowser'; import { selectKernelIcon } from 'vs/workbench/contrib/notebook/browser/notebookIcons'; diff --git a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts index 575dbbbe4d5..caaedcb525f 100644 --- a/src/vs/workbench/contrib/notebook/common/notebookCommon.ts +++ b/src/vs/workbench/contrib/notebook/common/notebookCommon.ts @@ -23,7 +23,7 @@ import { IAccessibilityInformation } from 'vs/platform/accessibility/common/acce import { RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { IEditorModel } from 'vs/platform/editor/common/editor'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { UndoRedoGroup } from 'vs/platform/undoRedo/common/undoRedo'; import { IRevertOptions, ISaveOptions, IUntypedEditorInput } from 'vs/workbench/common/editor'; import { NotebookTextModel } from 'vs/workbench/contrib/notebook/common/model/notebookTextModel'; diff --git a/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts b/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts index afef6e61ef5..5d69dd460af 100644 --- a/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts +++ b/src/vs/workbench/contrib/preferences/browser/keybindingsEditor.ts @@ -26,7 +26,8 @@ import { CONTEXT_KEYBINDING_FOCUS, CONTEXT_KEYBINDINGS_EDITOR, CONTEXT_KEYBINDIN import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IKeybindingEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing'; import { IListContextMenuEvent } from 'vs/base/browser/ui/list/list'; -import { IThemeService, registerThemingParticipant, IColorTheme, ICssStyleCollector, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, registerThemingParticipant, IColorTheme, ICssStyleCollector } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IContextKeyService, IContextKey, RawContextKey } from 'vs/platform/contextkey/common/contextkey'; import { KeyCode } from 'vs/base/common/keyCodes'; import { badgeBackground, contrastBorder, badgeForeground, listActiveSelectionForeground, listInactiveSelectionForeground, listHoverForeground, listFocusForeground, editorBackground, foreground, listActiveSelectionBackground, listInactiveSelectionBackground, listFocusBackground, listHoverBackground, registerColor, tableOddRowsBackgroundColor } from 'vs/platform/theme/common/colorRegistry'; diff --git a/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts b/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts index a3584686cb7..dec54845fa4 100644 --- a/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts +++ b/src/vs/workbench/contrib/preferences/browser/keybindingsEditorContribution.ts @@ -22,7 +22,8 @@ import { FloatingClickWidget } from 'vs/workbench/browser/codeeditor'; import { parseTree, Node } from 'vs/base/common/json'; import { EditorContextKeys } from 'vs/editor/common/editorContextKeys'; import { WindowsNativeResolvedKeybinding } from 'vs/workbench/services/keybinding/common/windowsKeyboardMapper'; -import { themeColorFromId, ThemeColor } from 'vs/platform/theme/common/themeService'; +import { themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { overviewRulerInfo, overviewRulerError } from 'vs/editor/common/core/editorColorRegistry'; import { IModelDeltaDecoration, ITextModel, TrackedRangeStickiness, OverviewRulerLane } from 'vs/editor/common/model'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; diff --git a/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts b/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts index bdf50803305..7105545524c 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferencesRenderers.ts @@ -29,7 +29,7 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { IMarkerData, IMarkerService, MarkerSeverity, MarkerTag } from 'vs/platform/markers/common/markers'; import { Registry } from 'vs/platform/registry/common/platform'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceTrustManagementService } from 'vs/platform/workspace/common/workspaceTrust'; import { RangeHighlightDecorations } from 'vs/workbench/browser/codeeditor'; diff --git a/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts b/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts index 47a1eb06a31..3a2a8dc2030 100644 --- a/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts +++ b/src/vs/workbench/contrib/preferences/browser/preferencesWidgets.ts @@ -30,7 +30,8 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { ILabelService } from 'vs/platform/label/common/label'; import { badgeBackground, badgeForeground, contrastBorder } from 'vs/platform/theme/common/colorRegistry'; import { attachStylerCallback } from 'vs/platform/theme/common/styler'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isWorkspaceFolder, IWorkspaceContextService, IWorkspaceFolder, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { settingsEditIcon, settingsScopeDropDownIcon } from 'vs/workbench/contrib/preferences/browser/preferencesIcons'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; diff --git a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts index 5afe5f9dd44..7ffbbcf88cf 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsEditor2.ts @@ -33,7 +33,8 @@ import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storag import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { badgeBackground, badgeForeground, contrastBorder, editorForeground } from 'vs/platform/theme/common/colorRegistry'; import { attachStylerCallback } from 'vs/platform/theme/common/styler'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IUserDataSyncEnablementService, IUserDataSyncService, SyncStatus } from 'vs/platform/userDataSync/common/userDataSync'; import { EditorPane } from 'vs/workbench/browser/parts/editor/editorPane'; import { IEditorMemento, IEditorOpenContext, IEditorPane } from 'vs/workbench/common/editor'; diff --git a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts index 0f340f69f25..e2d7f297860 100644 --- a/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts +++ b/src/vs/workbench/contrib/preferences/browser/settingsWidgets.ts @@ -23,7 +23,8 @@ import 'vs/css!./media/settingsWidgets'; import { localize } from 'vs/nls'; import { IContextViewService } from 'vs/platform/contextview/browser/contextView'; import { attachSelectBoxStyler } from 'vs/platform/theme/common/styler'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { settingsDiscardIcon, settingsEditIcon, settingsRemoveIcon } from 'vs/workbench/contrib/preferences/browser/preferencesIcons'; import { settingsSelectBackground, settingsSelectBorder, settingsSelectForeground, settingsSelectListBorder, settingsTextInputBackground, settingsTextInputBorder, settingsTextInputForeground } from 'vs/workbench/contrib/preferences/common/settingsEditorColorRegistry'; import { defaultButtonStyles, getInputBoxStyle } from 'vs/platform/theme/browser/defaultStyles'; diff --git a/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts b/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts index 0237a5e5ad5..81f6bb84a09 100644 --- a/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts +++ b/src/vs/workbench/contrib/quickaccess/browser/commandsQuickAccess.ts @@ -21,7 +21,8 @@ import { IDialogService } from 'vs/platform/dialogs/common/dialogs'; import { DefaultQuickAccessFilterValue } from 'vs/platform/quickinput/common/quickAccess'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IWorkbenchQuickAccessConfiguration } from 'vs/workbench/browser/quickaccess'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput'; import { IStorageService } from 'vs/platform/storage/common/storage'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; @@ -98,7 +99,7 @@ export class CommandsQuickAccessProvider extends AbstractEditorCommandsQuickAcce ].map(c => ({ ...c, buttons: [{ - iconClass: CSSIcon.asClassName(Codicon.gear), + iconClass: ThemeIcon.asClassName(Codicon.gear), tooltip: localize('configure keybinding', "Configure Keybinding"), }], trigger: (): TriggerAction => { diff --git a/src/vs/workbench/contrib/remote/browser/remote.ts b/src/vs/workbench/contrib/remote/browser/remote.ts index fd8af043709..7370ad9265b 100644 --- a/src/vs/workbench/contrib/remote/browser/remote.ts +++ b/src/vs/workbench/contrib/remote/browser/remote.ts @@ -13,7 +13,8 @@ import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace import { IStorageService } from 'vs/platform/storage/common/storage'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IExtensionService, isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { FilterViewPaneContainer } from 'vs/workbench/browser/parts/views/viewsViewlet'; diff --git a/src/vs/workbench/contrib/remote/browser/tunnelView.ts b/src/vs/workbench/contrib/remote/browser/tunnelView.ts index 34dd92a9f57..1bd9067729f 100644 --- a/src/vs/workbench/contrib/remote/browser/tunnelView.ts +++ b/src/vs/workbench/contrib/remote/browser/tunnelView.ts @@ -30,7 +30,8 @@ import { INotificationService, Severity } from 'vs/platform/notification/common/ import { InputBox, MessageType } from 'vs/base/browser/ui/inputbox/inputBox'; import { once } from 'vs/base/common/functional'; import { KeyCode, KeyMod } from 'vs/base/common/keyCodes'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { ViewPane, IViewPaneOptions } from 'vs/workbench/browser/parts/views/viewPane'; import { URI } from 'vs/base/common/uri'; diff --git a/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts b/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts index 8fa159950b9..671bdf87cde 100644 --- a/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts +++ b/src/vs/workbench/contrib/scm/browser/dirtydiffDecorator.ts @@ -17,7 +17,7 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { URI } from 'vs/base/common/uri'; import { ISCMService, ISCMRepository } from 'vs/workbench/contrib/scm/common/scm'; import { ModelDecorationOptions } from 'vs/editor/common/model/textModel'; -import { IColorTheme, themeColorFromId, IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IColorTheme, themeColorFromId, IThemeService } from 'vs/platform/theme/common/themeService'; import { editorErrorForeground, registerColor, transparent } from 'vs/platform/theme/common/colorRegistry'; import { ICodeEditor, IEditorMouseEvent, isCodeEditor, MouseTargetType } from 'vs/editor/browser/editorBrowser'; import { registerEditorAction, registerEditorContribution, ServicesAccessor, EditorAction, EditorContributionInstantiation } from 'vs/editor/browser/editorExtensions'; @@ -45,7 +45,8 @@ import { ISplice } from 'vs/base/common/sequence'; import { createStyleSheet } from 'vs/base/browser/dom'; import { EncodingMode, ITextFileEditorModel, IResolvedTextFileEditorModel, ITextFileService, isTextFileEditorModel } from 'vs/workbench/services/textfile/common/textfiles'; import { gotoNextLocation, gotoPreviousLocation } from 'vs/platform/theme/common/iconRegistry'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { onUnexpectedError } from 'vs/base/common/errors'; import { TextCompareEditorActiveContext } from 'vs/workbench/common/contextkeys'; import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; @@ -268,7 +269,7 @@ class DirtyDiffWidget extends PeekViewWidget { createAndFillInActionBarActions(this.menu, { shouldForwardArgs: true }, actions); this._actionbarWidget!.push(actions.reverse(), { label: false, icon: true }); this._actionbarWidget!.push([next, previous], { label: false, icon: true }); - this._actionbarWidget!.push(new Action('peekview.close', nls.localize('label.close', "Close"), CSSIcon.asClassName(Codicon.close), true, () => this.dispose()), { label: false, icon: true }); + this._actionbarWidget!.push(new Action('peekview.close', nls.localize('label.close', "Close"), ThemeIcon.asClassName(Codicon.close), true, () => this.dispose()), { label: false, icon: true }); } protected override _getActionBarOptions(): IActionBarOptions { diff --git a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts index f2aca5894f7..f233b5697dd 100644 --- a/src/vs/workbench/contrib/scm/browser/scmViewPane.ts +++ b/src/vs/workbench/contrib/scm/browser/scmViewPane.ts @@ -22,7 +22,7 @@ import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { MenuItemAction, IMenuService, registerAction2, MenuId, IAction2Options, MenuRegistry, Action2 } from 'vs/platform/actions/common/actions'; import { IAction, ActionRunner, Action, Separator } from 'vs/base/common/actions'; import { ActionBar, IActionViewItemProvider } from 'vs/base/browser/ui/actionbar/actionbar'; -import { IThemeService, IFileIconTheme, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService, IFileIconTheme } from 'vs/platform/theme/common/themeService'; import { isSCMResource, isSCMResourceGroup, connectPrimaryMenuToInlineActionBar, isSCMRepository, isSCMInput, collectContextMenuActions, getActionViewItemProvider, isSCMActionButton } from './util'; import { WorkbenchCompressibleObjectTree, IOpenEvent } from 'vs/platform/list/browser/listService'; import { IConfigurationService, ConfigurationTarget, IConfigurationChangeEvent } from 'vs/platform/configuration/common/configuration'; @@ -69,7 +69,8 @@ import { ILanguageService } from 'vs/editor/common/languages/language'; import { ILabelService } from 'vs/platform/label/common/label'; import { KeyCode } from 'vs/base/common/keyCodes'; import { DEFAULT_FONT_FAMILY } from 'vs/workbench/browser/style'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { AnchorAlignment } from 'vs/base/browser/ui/contextview/contextview'; import { RepositoryRenderer } from 'vs/workbench/contrib/scm/browser/scmRepositoryRenderer'; import { ColorScheme } from 'vs/platform/theme/common/theme'; @@ -2128,7 +2129,7 @@ class SCMInputWidget { } const actionsContainer = append(validationContainer, $('.scm-editor-validation-actions')); const actionbar = new ActionBar(actionsContainer); - const action = new Action('scmInputWidget.validationMessage.close', localize('label.close', "Close"), CSSIcon.asClassName(Codicon.close), true, () => { + const action = new Action('scmInputWidget.validationMessage.close', localize('label.close', "Close"), ThemeIcon.asClassName(Codicon.close), true, () => { this.contextViewService.hideContextView(); }); disposables.add(actionbar); diff --git a/src/vs/workbench/contrib/scm/common/scm.ts b/src/vs/workbench/contrib/scm/common/scm.ts index a98e8912f51..71f134e2a8b 100644 --- a/src/vs/workbench/contrib/scm/common/scm.ts +++ b/src/vs/workbench/contrib/scm/common/scm.ts @@ -11,7 +11,7 @@ import { Command } from 'vs/editor/common/languages'; import { ISequence } from 'vs/base/common/sequence'; import { IAction } from 'vs/base/common/actions'; import { IMenu } from 'vs/platform/actions/common/actions'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; export const VIEWLET_ID = 'workbench.view.scm'; diff --git a/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts b/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts index ab3d8af2128..b04584e0502 100644 --- a/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts +++ b/src/vs/workbench/contrib/search/browser/anythingQuickAccess.ts @@ -49,7 +49,8 @@ import { once } from 'vs/base/common/functional'; import { IEditorGroup } from 'vs/workbench/services/editor/common/editorGroupsService'; import { getIEditor } from 'vs/editor/browser/editorBrowser'; import { withNullAsUndefined } from 'vs/base/common/types'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { stripIcons } from 'vs/base/common/iconLabels'; import { HelpQuickAccessProvider } from 'vs/platform/quickinput/browser/helpQuickAccess'; @@ -982,7 +983,7 @@ export class AnythingQuickAccessProvider extends PickerQuickAccessProvider('environmentVariableService'); diff --git a/src/vs/workbench/contrib/terminal/common/terminal.ts b/src/vs/workbench/contrib/terminal/common/terminal.ts index 37cff90ecd2..4c779deb9ff 100644 --- a/src/vs/workbench/contrib/terminal/common/terminal.ts +++ b/src/vs/workbench/contrib/terminal/common/terminal.ts @@ -14,7 +14,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation' import { URI } from 'vs/base/common/uri'; import { Registry } from 'vs/platform/registry/common/platform'; import { IMarkProperties, ISerializedCommandDetectionCapability, ITerminalCapabilityStore, IXtermMarker } from 'vs/platform/terminal/common/capabilities/capabilities'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IProcessDetails } from 'vs/platform/terminal/common/terminalProcess'; import { ITerminalQuickFixProvider, ITerminalCommandSelector, ITerminalOutputMatch, ITerminalOutputMatcher } from 'vs/platform/terminal/common/xterm/terminalQuickFix'; diff --git a/src/vs/workbench/contrib/terminal/test/browser/terminalProfileService.integrationTest.ts b/src/vs/workbench/contrib/terminal/test/browser/terminalProfileService.integrationTest.ts index 76862ebcbdb..1964ab27e65 100644 --- a/src/vs/workbench/contrib/terminal/test/browser/terminalProfileService.integrationTest.ts +++ b/src/vs/workbench/contrib/terminal/test/browser/terminalProfileService.integrationTest.ts @@ -19,7 +19,7 @@ import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService'; import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService'; import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; import { Codicon } from 'vs/base/common/codicons'; import { deepStrictEqual } from 'assert'; import { Emitter } from 'vs/base/common/event'; @@ -134,7 +134,7 @@ let powershellProfile = { profileName: 'PowerShell', path: 'C:\\Powershell.exe', isDefault: true, - icon: ThemeIcon.asThemeIcon(Codicon.terminalPowershell) + icon: Codicon.terminalPowershell }; let jsdebugProfile = { extensionIdentifier: 'ms-vscode.js-debug-nightly', @@ -182,7 +182,7 @@ suite('TerminalProfileService', () => { profileName: 'PowerShell', path: 'C:\\Powershell.exe', isDefault: true, - icon: ThemeIcon.asThemeIcon(Codicon.terminalPowershell) + icon: Codicon.terminalPowershell }; jsdebugProfile = { extensionIdentifier: 'ms-vscode.js-debug-nightly', @@ -273,7 +273,7 @@ suite('TerminalProfileService', () => { }); test('should fire onDidChangeAvailableProfiles only when available profiles have changed via user config', async () => { - powershellProfile.icon = ThemeIcon.asThemeIcon(Codicon.lightBulb); + powershellProfile.icon = Codicon.lightBulb; let calls: ITerminalProfile[][] = []; terminalProfileService.onDidChangeAvailableProfiles(e => calls.push(e)); await configurationService.setUserConfiguration('terminal', { diff --git a/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts b/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts index f8388e94e19..8eefa0efd78 100644 --- a/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts +++ b/src/vs/workbench/contrib/terminal/test/browser/terminalStatusList.test.ts @@ -8,7 +8,7 @@ import { Codicon } from 'vs/base/common/codicons'; import Severity from 'vs/base/common/severity'; import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService'; import { spinningLoading } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { ITerminalStatus, TerminalStatusList } from 'vs/workbench/contrib/terminal/browser/terminalStatusList'; function statusesEqual(list: TerminalStatusList, expected: [string, Severity][]) { diff --git a/src/vs/workbench/contrib/testing/browser/icons.ts b/src/vs/workbench/contrib/testing/browser/icons.ts index adcd2a3dbf3..7d7c9c2c76e 100644 --- a/src/vs/workbench/contrib/testing/browser/icons.ts +++ b/src/vs/workbench/contrib/testing/browser/icons.ts @@ -6,7 +6,8 @@ import { Codicon } from 'vs/base/common/codicons'; import { localize } from 'vs/nls'; import { registerIcon, spinningLoading } from 'vs/platform/theme/common/iconRegistry'; -import { registerThemingParticipant, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { testingColorRunAction, testStatesToIconColors } from 'vs/workbench/contrib/testing/browser/theme'; import { TestResultState } from 'vs/workbench/contrib/testing/common/testTypes'; diff --git a/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.ts b/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.ts index 2427460910f..9f8365fe663 100644 --- a/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.ts +++ b/src/vs/workbench/contrib/testing/browser/testingConfigurationUi.ts @@ -9,7 +9,7 @@ import { ServicesAccessor } from 'vs/editor/browser/editorExtensions'; import { localize } from 'vs/nls'; import { CommandsRegistry } from 'vs/platform/commands/common/commands'; import { QuickPickInput, IQuickPickItem, IQuickInputService, IQuickPickItemButtonEvent } from 'vs/platform/quickinput/common/quickInput'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { testingUpdateProfiles } from 'vs/workbench/contrib/testing/browser/icons'; import { testConfigurationGroupNames } from 'vs/workbench/contrib/testing/common/constants'; import { InternalTestItem, ITestRunProfile, TestRunProfileBitset } from 'vs/workbench/contrib/testing/common/testTypes'; diff --git a/src/vs/workbench/contrib/testing/browser/testingDecorations.ts b/src/vs/workbench/contrib/testing/browser/testingDecorations.ts index 56e356e7e4d..b0689a7f2d1 100644 --- a/src/vs/workbench/contrib/testing/browser/testingDecorations.ts +++ b/src/vs/workbench/contrib/testing/browser/testingDecorations.ts @@ -33,7 +33,8 @@ import { IConfigurationService } from 'vs/platform/configuration/common/configur import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { themeColorFromId, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { themeColorFromId } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { BREAKPOINT_EDITOR_CONTRIBUTION_ID, IBreakpointEditorContribution } from 'vs/workbench/contrib/debug/common/debug'; import { getTestItemContextOverlay } from 'vs/workbench/contrib/testing/browser/explorerProjections/testItemContextOverlay'; diff --git a/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.ts b/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.ts index 62d96c13223..f813d35c151 100644 --- a/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.ts +++ b/src/vs/workbench/contrib/testing/browser/testingExplorerFilter.ts @@ -16,7 +16,8 @@ import { localize } from 'vs/nls'; import { IContextMenuService } from 'vs/platform/contextview/browser/contextView'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; import { StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { attachSuggestEnabledInputBoxStyler, ContextScopedSuggestEnabledInputWithHistory, SuggestEnabledInputWithHistory, SuggestResultsProvider } from 'vs/workbench/contrib/codeEditor/browser/suggestEnabledInput/suggestEnabledInput'; import { testingFilterIcon } from 'vs/workbench/contrib/testing/browser/icons'; import { StoredValue } from 'vs/workbench/contrib/testing/common/storedValue'; diff --git a/src/vs/workbench/contrib/testing/browser/testingExplorerView.ts b/src/vs/workbench/contrib/testing/browser/testingExplorerView.ts index 21102af1eef..84cee64ae68 100644 --- a/src/vs/workbench/contrib/testing/browser/testingExplorerView.ts +++ b/src/vs/workbench/contrib/testing/browser/testingExplorerView.ts @@ -39,7 +39,8 @@ import { IStorageService, StorageScope, StorageTarget, WillSaveStateReason } fro import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { defaultButtonStyles } from 'vs/platform/theme/browser/defaultStyles'; import { foreground } from 'vs/platform/theme/common/colorRegistry'; -import { IThemeService, ThemeIcon, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { IThemeService, registerThemingParticipant } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IUriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentity'; import { ViewPane } from 'vs/workbench/browser/parts/views/viewPane'; import { IViewletViewOptions } from 'vs/workbench/browser/parts/views/viewsViewlet'; diff --git a/src/vs/workbench/contrib/testing/browser/testingOutputPeek.ts b/src/vs/workbench/contrib/testing/browser/testingOutputPeek.ts index e955ed2dee2..e46679e66b5 100644 --- a/src/vs/workbench/contrib/testing/browser/testingOutputPeek.ts +++ b/src/vs/workbench/contrib/testing/browser/testingOutputPeek.ts @@ -16,7 +16,8 @@ import { ICompressibleTreeRenderer } from 'vs/base/browser/ui/tree/objectTree'; import { ITreeContextMenuEvent, ITreeNode } from 'vs/base/browser/ui/tree/tree'; import { Action, IAction, Separator } from 'vs/base/common/actions'; import { RunOnceScheduler } from 'vs/base/common/async'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Color } from 'vs/base/common/color'; import { Emitter, Event } from 'vs/base/common/event'; import { FuzzyScore } from 'vs/base/common/filters'; @@ -53,7 +54,7 @@ import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiati import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { WorkbenchCompressibleObjectTree } from 'vs/platform/list/browser/listService'; import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; -import { IColorTheme, IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IColorTheme, IThemeService } from 'vs/platform/theme/common/themeService'; import { Categories } from 'vs/platform/action/common/actionCommonCategories'; import { EditorModel } from 'vs/workbench/common/editor/editorModel'; import { flatTestItemDelimiter } from 'vs/workbench/contrib/testing/browser/explorerProjections/display'; @@ -1534,7 +1535,7 @@ class TreeActionsProvider { primary.push(new Action( 'testing.outputPeek.showResultOutput', localize('testing.showResultOutput', "Show Result Output"), - CSSIcon.asClassName(Codicon.terminal), + ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.testTerminalService.open(element.value) )); @@ -1563,7 +1564,7 @@ class TreeActionsProvider { primary.push(new Action( 'testing.outputPeek.goToFile', localize('testing.goToFile', "Go to File"), - CSSIcon.asClassName(Codicon.goToFile), + ThemeIcon.asClassName(Codicon.goToFile), undefined, () => this.commandService.executeCommand('vscode.revealTest', extId), )); @@ -1571,7 +1572,7 @@ class TreeActionsProvider { secondary.push(new Action( 'testing.outputPeek.revealInExplorer', localize('testing.revealInExplorer', "Reveal in Test Explorer"), - CSSIcon.asClassName(Codicon.listTree), + ThemeIcon.asClassName(Codicon.listTree), undefined, () => this.commandService.executeCommand('_revealTestInExplorer', extId), )); @@ -1602,7 +1603,7 @@ class TreeActionsProvider { primary.push(new Action( 'testing.outputPeek.showMessageInTerminal', localize('testing.showMessageInTerminal', "Show Output in Terminal"), - CSSIcon.asClassName(Codicon.terminal), + ThemeIcon.asClassName(Codicon.terminal), undefined, () => this.testTerminalService.open(element.result, element.marker), )); diff --git a/src/vs/workbench/contrib/themes/browser/themes.contribution.ts b/src/vs/workbench/contrib/themes/browser/themes.contribution.ts index 096813400a8..408ca9b210b 100644 --- a/src/vs/workbench/contrib/themes/browser/themes.contribution.ts +++ b/src/vs/workbench/contrib/themes/browser/themes.contribution.ts @@ -28,7 +28,7 @@ import { ILogService } from 'vs/platform/log/common/log'; import { IProgressService, ProgressLocation } from 'vs/platform/progress/common/progress'; import { Codicon } from 'vs/base/common/codicons'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { Emitter } from 'vs/base/common/event'; import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; diff --git a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts index 76e64f11d93..bb387304c73 100644 --- a/src/vs/workbench/contrib/timeline/browser/timelinePane.ts +++ b/src/vs/workbench/contrib/timeline/browser/timelinePane.ts @@ -32,7 +32,8 @@ import { ITimelineService, TimelineChangeEvent, TimelineItem, TimelineOptions, T import { IEditorService } from 'vs/workbench/services/editor/common/editorService'; import { SideBySideEditor, EditorResourceAccessor } from 'vs/workbench/common/editor'; import { ICommandService, CommandsRegistry } from 'vs/platform/commands/common/commands'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IViewDescriptorService } from 'vs/workbench/common/views'; import { IProgressService } from 'vs/platform/progress/common/progress'; import { IOpenerService } from 'vs/platform/opener/common/opener'; diff --git a/src/vs/workbench/contrib/timeline/common/timeline.ts b/src/vs/workbench/contrib/timeline/common/timeline.ts index 5185f65703e..5620cccb1bd 100644 --- a/src/vs/workbench/contrib/timeline/common/timeline.ts +++ b/src/vs/workbench/contrib/timeline/common/timeline.ts @@ -11,7 +11,7 @@ import { Command } from 'vs/editor/common/languages'; import { ExtensionIdentifier } from 'vs/platform/extensions/common/extensions'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IMarkdownString } from 'vs/base/common/htmlContent'; export function toKey(extension: ExtensionIdentifier | string, source: string) { diff --git a/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.ts b/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.ts index f03ecfaba85..41cd4a75293 100644 --- a/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.ts +++ b/src/vs/workbench/contrib/typeHierarchy/browser/typeHierarchyTree.ts @@ -14,7 +14,7 @@ import { compare } from 'vs/base/common/strings'; import { Range } from 'vs/editor/common/core/range'; import { IListAccessibilityProvider } from 'vs/base/browser/ui/list/listWidget'; import { localize } from 'vs/nls'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; export class Type { constructor( @@ -115,7 +115,7 @@ export class TypeRenderer implements ITreeRenderer, _index: number, template: TypeRenderingTemplate): void { const { element, filterData } = node; const deprecated = element.item.tags?.includes(SymbolTag.Deprecated); - template.icon.classList.add('inline', ...CSSIcon.asClassNameArray(SymbolKinds.toIcon(element.item.kind))); + template.icon.classList.add('inline', ...ThemeIcon.asClassNameArray(SymbolKinds.toIcon(element.item.kind))); template.label.setLabel( element.item.name, element.item.detail, diff --git a/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.ts b/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.ts index f1c91c4c93c..aedd3671210 100644 --- a/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.ts +++ b/src/vs/workbench/contrib/userDataProfile/browser/userDataProfile.ts @@ -32,7 +32,7 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace'; import { IWorkspaceTagsService } from 'vs/workbench/contrib/tags/common/workspaceTags'; import { getErrorMessage } from 'vs/base/common/errors'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; const SelectProfileSubMenu = new MenuId('SelectProfile'); diff --git a/src/vs/workbench/contrib/welcomeBanner/browser/welcomeBanner.contribution.ts b/src/vs/workbench/contrib/welcomeBanner/browser/welcomeBanner.contribution.ts index 543ff8df1be..12f828bb91d 100644 --- a/src/vs/workbench/contrib/welcomeBanner/browser/welcomeBanner.contribution.ts +++ b/src/vs/workbench/contrib/welcomeBanner/browser/welcomeBanner.contribution.ts @@ -10,7 +10,7 @@ import { IBannerService } from 'vs/workbench/services/banner/browser/bannerServi import { IStorageService, StorageScope, StorageTarget } from 'vs/platform/storage/common/storage'; import { IBrowserWorkbenchEnvironmentService } from 'vs/workbench/services/environment/browser/environmentService'; import { URI } from 'vs/base/common/uri'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; class WelcomeBannerContribution { diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts index 82b8f2e29db..42079b6d037 100644 --- a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts +++ b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStarted.ts @@ -14,7 +14,8 @@ import { $, addDisposableListener, append, clearNode, Dimension, reset } from 'v import { ICommandService } from 'vs/platform/commands/common/commands'; import { IProductService } from 'vs/platform/product/common/productService'; import { hiddenEntriesConfigurationKey, IResolvedWalkthrough, IResolvedWalkthroughStep, IWalkthroughsService } from 'vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding'; import { firstSessionDateStorageKey, ITelemetryService, TelemetryLevel } from 'vs/platform/telemetry/common/telemetry'; import { DomScrollableElement } from 'vs/base/browser/ui/scrollbar/scrollableElement'; diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts index 5df2e497278..820d5d25628 100644 --- a/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts +++ b/src/vs/workbench/contrib/welcomeGettingStarted/browser/gettingStartedService.ts @@ -17,7 +17,7 @@ import { URI } from 'vs/base/common/uri'; import { joinPath } from 'vs/base/common/resources'; import { FileAccess } from 'vs/base/common/network'; import { IExtensionManagementService } from 'vs/platform/extensionManagement/common/extensionManagement'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { walkthroughs } from 'vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent'; import { IWorkbenchAssignmentService } from 'vs/workbench/services/assignment/common/assignmentService'; import { IHostService } from 'vs/workbench/services/host/browser/host'; diff --git a/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts b/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts index f9ef65c641d..e66b268a381 100644 --- a/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts +++ b/src/vs/workbench/contrib/welcomeGettingStarted/common/gettingStartedContent.ts @@ -7,7 +7,7 @@ import 'vs/workbench/contrib/welcomeGettingStarted/common/media/theme_picker'; import 'vs/workbench/contrib/welcomeGettingStarted/common/media/notebookProfile'; import { localize } from 'vs/nls'; import { Codicon } from 'vs/base/common/codicons'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { registerIcon } from 'vs/platform/theme/common/iconRegistry'; import { NotebookSetting } from 'vs/workbench/contrib/notebook/common/notebookCommon'; diff --git a/src/vs/workbench/contrib/welcomeOverlay/browser/welcomeOverlay.ts b/src/vs/workbench/contrib/welcomeOverlay/browser/welcomeOverlay.ts index 241a43c181a..4df7c92dd9a 100644 --- a/src/vs/workbench/contrib/welcomeOverlay/browser/welcomeOverlay.ts +++ b/src/vs/workbench/contrib/welcomeOverlay/browser/welcomeOverlay.ts @@ -17,7 +17,8 @@ import { Disposable } from 'vs/base/common/lifecycle'; import { RawContextKey, IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey'; import { KeyCode } from 'vs/base/common/keyCodes'; import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { KeybindingWeight } from 'vs/platform/keybinding/common/keybindingsRegistry'; import { registerColor } from 'vs/platform/theme/common/colorRegistry'; @@ -227,7 +228,7 @@ class WelcomeOverlay extends Disposable { } private updateProblemsKey() { - const problems = document.querySelector(`footer[id="workbench.parts.statusbar"] .statusbar-item.left ${CSSIcon.asCSSSelector(Codicon.warning)}`); + const problems = document.querySelector(`footer[id="workbench.parts.statusbar"] .statusbar-item.left ${ThemeIcon.asCSSSelector(Codicon.warning)}`); const key = this._overlay.querySelector('.key.problems') as HTMLElement; if (problems instanceof HTMLElement) { const target = problems.getBoundingClientRect(); diff --git a/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.ts b/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.ts index 3474d5388aa..99f083df8ae 100644 --- a/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.ts +++ b/src/vs/workbench/contrib/workspace/browser/workspaceTrustEditor.ts @@ -36,7 +36,8 @@ import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry'; import { buttonBackground, buttonSecondaryBackground, editorErrorForeground } from 'vs/platform/theme/common/colorRegistry'; import { ISingleFolderWorkspaceIdentifier, IWorkspaceContextService, toWorkspaceIdentifier, WorkbenchState } from 'vs/platform/workspace/common/workspace'; import { attachStylerCallback } from 'vs/platform/theme/common/styler'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IWorkspaceTrustManagementService } from 'vs/platform/workspace/common/workspaceTrust'; import { EditorPane } from 'vs/workbench/browser/parts/editor/editorPane'; import { IEditorOpenContext } from 'vs/workbench/common/editor'; diff --git a/src/vs/workbench/electron-sandbox/actions/windowActions.ts b/src/vs/workbench/electron-sandbox/actions/windowActions.ts index 603cafed682..69a709a6ff2 100644 --- a/src/vs/workbench/electron-sandbox/actions/windowActions.ts +++ b/src/vs/workbench/electron-sandbox/actions/windowActions.ts @@ -18,7 +18,8 @@ import { ICommandHandler } from 'vs/platform/commands/common/commands'; import { ServicesAccessor } from 'vs/platform/instantiation/common/instantiation'; import { IConfigurationService } from 'vs/platform/configuration/common/configuration'; import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isSingleFolderWorkspaceIdentifier, isWorkspaceIdentifier } from 'vs/platform/workspace/common/workspace'; import { Action2, IAction2Options, MenuId } from 'vs/platform/actions/common/actions'; import { Categories } from 'vs/platform/action/common/actionCommonCategories'; @@ -181,7 +182,7 @@ export class ZoomResetAction extends BaseZoomAction { abstract class BaseSwitchWindow extends Action2 { private readonly closeWindowAction: IQuickInputButton = { - iconClass: CSSIcon.asClassName(Codicon.removeClose), + iconClass: ThemeIcon.asClassName(Codicon.removeClose), tooltip: localize('close', "Close Window") }; diff --git a/src/vs/workbench/electron-sandbox/parts/titlebar/titlebarPart.ts b/src/vs/workbench/electron-sandbox/parts/titlebar/titlebarPart.ts index 7436f44d6ed..33a7dd6d486 100644 --- a/src/vs/workbench/electron-sandbox/parts/titlebar/titlebarPart.ts +++ b/src/vs/workbench/electron-sandbox/parts/titlebar/titlebarPart.ts @@ -19,7 +19,8 @@ import { IWorkbenchLayoutService } from 'vs/workbench/services/layout/browser/la import { INativeHostService } from 'vs/platform/native/electron-sandbox/native'; import { getTitleBarStyle, useWindowControlsOverlay } from 'vs/platform/window/common/window'; import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation'; -import { CSSIcon, Codicon } from 'vs/base/common/codicons'; +import { Codicon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import { NativeMenubarControl } from 'vs/workbench/electron-sandbox/parts/titlebar/menubarControl'; import { IHoverService } from 'vs/workbench/services/hover/browser/hover'; @@ -83,11 +84,11 @@ export class TitlebarPart extends BrowserTitleBarPart { private onDidChangeWindowMaximized(maximized: boolean): void { if (this.maxRestoreControl) { if (maximized) { - this.maxRestoreControl.classList.remove(...CSSIcon.asClassNameArray(Codicon.chromeMaximize)); - this.maxRestoreControl.classList.add(...CSSIcon.asClassNameArray(Codicon.chromeRestore)); + this.maxRestoreControl.classList.remove(...ThemeIcon.asClassNameArray(Codicon.chromeMaximize)); + this.maxRestoreControl.classList.add(...ThemeIcon.asClassNameArray(Codicon.chromeRestore)); } else { - this.maxRestoreControl.classList.remove(...CSSIcon.asClassNameArray(Codicon.chromeRestore)); - this.maxRestoreControl.classList.add(...CSSIcon.asClassNameArray(Codicon.chromeMaximize)); + this.maxRestoreControl.classList.remove(...ThemeIcon.asClassNameArray(Codicon.chromeRestore)); + this.maxRestoreControl.classList.add(...ThemeIcon.asClassNameArray(Codicon.chromeMaximize)); } } @@ -165,7 +166,7 @@ export class TitlebarPart extends BrowserTitleBarPart { // Window Controls (Native Windows/Linux) if (!isMacintosh && getTitleBarStyle(this.configurationService) !== 'native' && !isWCOEnabled() && this.primaryWindowControls) { // Minimize - const minimizeIcon = append(this.primaryWindowControls, $('div.window-icon.window-minimize' + CSSIcon.asCSSSelector(Codicon.chromeMinimize))); + const minimizeIcon = append(this.primaryWindowControls, $('div.window-icon.window-minimize' + ThemeIcon.asCSSSelector(Codicon.chromeMinimize))); this._register(addDisposableListener(minimizeIcon, EventType.CLICK, e => { this.nativeHostService.minimizeWindow(); })); @@ -182,7 +183,7 @@ export class TitlebarPart extends BrowserTitleBarPart { })); // Close - const closeIcon = append(this.primaryWindowControls, $('div.window-icon.window-close' + CSSIcon.asCSSSelector(Codicon.chromeClose))); + const closeIcon = append(this.primaryWindowControls, $('div.window-icon.window-close' + ThemeIcon.asCSSSelector(Codicon.chromeClose))); this._register(addDisposableListener(closeIcon, EventType.CLICK, e => { this.nativeHostService.closeWindow(); })); diff --git a/src/vs/workbench/services/actions/common/menusExtensionPoint.ts b/src/vs/workbench/services/actions/common/menusExtensionPoint.ts index 19b2de2f6e4..e21bf115a5f 100644 --- a/src/vs/workbench/services/actions/common/menusExtensionPoint.ts +++ b/src/vs/workbench/services/actions/common/menusExtensionPoint.ts @@ -12,7 +12,7 @@ import { ContextKeyExpr } from 'vs/platform/contextkey/common/contextkey'; import { MenuId, MenuRegistry, IMenuItem, ISubmenuItem } from 'vs/platform/actions/common/actions'; import { URI } from 'vs/base/common/uri'; import { DisposableStore } from 'vs/base/common/lifecycle'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { index } from 'vs/base/common/arrays'; import { isProposedApiEnabled } from 'vs/workbench/services/extensions/common/extensions'; import { ApiProposalName } from 'vs/workbench/services/extensions/common/extensionsApiProposals'; diff --git a/src/vs/workbench/services/activity/common/activity.ts b/src/vs/workbench/services/activity/common/activity.ts index 1f9fc1f0d1f..1465fca02a3 100644 --- a/src/vs/workbench/services/activity/common/activity.ts +++ b/src/vs/workbench/services/activity/common/activity.ts @@ -5,7 +5,7 @@ import { IDisposable } from 'vs/base/common/lifecycle'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; export interface IActivity { readonly badge: IBadge; diff --git a/src/vs/workbench/services/banner/browser/bannerService.ts b/src/vs/workbench/services/banner/browser/bannerService.ts index 9bd7ca53d60..639b1b2ce81 100644 --- a/src/vs/workbench/services/banner/browser/bannerService.ts +++ b/src/vs/workbench/services/banner/browser/bannerService.ts @@ -7,7 +7,7 @@ import { MarkdownString } from 'vs/base/common/htmlContent'; import { URI } from 'vs/base/common/uri'; import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { ILinkDescriptor } from 'vs/platform/opener/browser/link'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; export interface IBannerItem { readonly id: string; diff --git a/src/vs/workbench/services/decorations/browser/decorationsService.ts b/src/vs/workbench/services/decorations/browser/decorationsService.ts index d59d765038e..846d6efc085 100644 --- a/src/vs/workbench/services/decorations/browser/decorationsService.ts +++ b/src/vs/workbench/services/decorations/browser/decorationsService.ts @@ -11,7 +11,8 @@ import { IDisposable, toDisposable, DisposableStore } from 'vs/base/common/lifec import { isThenable } from 'vs/base/common/async'; import { LinkedList } from 'vs/base/common/linkedList'; import { createStyleSheet, createCSSRule, removeCSSRulesContainingSelector, asCSSPropertyValue } from 'vs/base/browser/dom'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { isFalsyOrWhitespace } from 'vs/base/common/strings'; import { localize } from 'vs/nls'; import { isCancellationError } from 'vs/base/common/errors'; diff --git a/src/vs/workbench/services/decorations/common/decorations.ts b/src/vs/workbench/services/decorations/common/decorations.ts index 182bfb0fab2..5e8cba03661 100644 --- a/src/vs/workbench/services/decorations/common/decorations.ts +++ b/src/vs/workbench/services/decorations/common/decorations.ts @@ -9,7 +9,7 @@ import { Event } from 'vs/base/common/event'; import { ColorIdentifier } from 'vs/platform/theme/common/colorRegistry'; import { IDisposable } from 'vs/base/common/lifecycle'; import { CancellationToken } from 'vs/base/common/cancellation'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; export const IDecorationsService = createDecorator('IFileDecorationsService'); diff --git a/src/vs/workbench/services/statusbar/browser/statusbar.ts b/src/vs/workbench/services/statusbar/browser/statusbar.ts index 6b55bb6860d..dbb1dd921c2 100644 --- a/src/vs/workbench/services/statusbar/browser/statusbar.ts +++ b/src/vs/workbench/services/statusbar/browser/statusbar.ts @@ -5,7 +5,7 @@ import { createDecorator } from 'vs/platform/instantiation/common/instantiation'; import { IDisposable } from 'vs/base/common/lifecycle'; -import { ThemeColor } from 'vs/platform/theme/common/themeService'; +import { ThemeColor } from 'vs/base/common/themables'; import { Event } from 'vs/base/common/event'; import { Command } from 'vs/editor/common/languages'; import { IMarkdownString } from 'vs/base/common/htmlContent'; diff --git a/src/vs/workbench/services/themes/browser/productIconThemeData.ts b/src/vs/workbench/services/themes/browser/productIconThemeData.ts index 97fff900e80..da1add76935 100644 --- a/src/vs/workbench/services/themes/browser/productIconThemeData.ts +++ b/src/vs/workbench/services/themes/browser/productIconThemeData.ts @@ -16,7 +16,7 @@ import { fontIdRegex, fontWeightRegex, fontStyleRegex, fontFormatRegex } from 'v import { isObject, isString } from 'vs/base/common/types'; import { ILogService } from 'vs/platform/log/common/log'; import { IconDefinition, getIconRegistry, IconContribution, IconFontDefinition, IconFontSource } from 'vs/platform/theme/common/iconRegistry'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IExtensionResourceLoaderService } from 'vs/platform/extensionResourceLoader/common/extensionResourceLoader'; export const DEFAULT_PRODUCT_ICON_THEME_ID = ''; // TODO diff --git a/src/vs/workbench/services/themes/common/iconExtensionPoint.ts b/src/vs/workbench/services/themes/common/iconExtensionPoint.ts index a9b4bacc26f..754974fd2e3 100644 --- a/src/vs/workbench/services/themes/common/iconExtensionPoint.ts +++ b/src/vs/workbench/services/themes/common/iconExtensionPoint.ts @@ -7,7 +7,7 @@ import * as nls from 'vs/nls'; import { ExtensionsRegistry } from 'vs/workbench/services/extensions/common/extensionsRegistry'; import { IIconRegistry, Extensions as IconRegistryExtensions } from 'vs/platform/theme/common/iconRegistry'; import { Registry } from 'vs/platform/registry/common/platform'; -import { CSSIcon } from 'vs/base/common/codicons'; +import { ThemeIcon } from 'vs/base/common/themables'; import * as resources from 'vs/base/common/resources'; import { IExtensionDescription } from 'vs/platform/extensions/common/extensions'; import { extname, posix } from 'vs/base/common/path'; @@ -22,7 +22,7 @@ interface IIconExtensionPoint { const iconRegistry: IIconRegistry = Registry.as(IconRegistryExtensions.IconContribution); const iconReferenceSchema = iconRegistry.getIconReferenceSchema(); -const iconIdPattern = `^${CSSIcon.iconNameSegment}(-${CSSIcon.iconNameSegment})+$`; +const iconIdPattern = `^${ThemeIcon.iconNameSegment}(-${ThemeIcon.iconNameSegment})+$`; const iconConfigurationExtPoint = ExtensionsRegistry.registerExtensionPoint({ extensionPoint: 'icons', diff --git a/src/vs/workbench/services/userDataProfile/common/userDataProfileService.ts b/src/vs/workbench/services/userDataProfile/common/userDataProfileService.ts index d0cfc9995a3..2d7dbc829c3 100644 --- a/src/vs/workbench/services/userDataProfile/common/userDataProfileService.ts +++ b/src/vs/workbench/services/userDataProfile/common/userDataProfileService.ts @@ -6,7 +6,7 @@ import { Promises } from 'vs/base/common/async'; import { Emitter } from 'vs/base/common/event'; import { Disposable } from 'vs/base/common/lifecycle'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IUserDataProfile, IUserDataProfilesService } from 'vs/platform/userDataProfile/common/userDataProfile'; import { defaultUserDataProfileIcon, DidChangeUserDataProfileEvent, IUserDataProfileService } from 'vs/workbench/services/userDataProfile/common/userDataProfile'; diff --git a/src/vs/workbench/services/views/common/viewContainerModel.ts b/src/vs/workbench/services/views/common/viewContainerModel.ts index 6802cfa9449..dd0c4bc4be5 100644 --- a/src/vs/workbench/services/views/common/viewContainerModel.ts +++ b/src/vs/workbench/services/views/common/viewContainerModel.ts @@ -14,7 +14,7 @@ import { URI } from 'vs/base/common/uri'; import { coalesce, move } from 'vs/base/common/arrays'; import { isUndefined, isUndefinedOrNull } from 'vs/base/common/types'; import { isEqual, joinPath } from 'vs/base/common/resources'; -import { ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { IStringDictionary } from 'vs/base/common/collections'; import { localize } from 'vs/nls'; import { ILogger, ILoggerService } from 'vs/platform/log/common/log'; diff --git a/src/vs/workbench/test/browser/workbenchTestServices.ts b/src/vs/workbench/test/browser/workbenchTestServices.ts index b007e50e0e2..2bffedecb67 100644 --- a/src/vs/workbench/test/browser/workbenchTestServices.ts +++ b/src/vs/workbench/test/browser/workbenchTestServices.ts @@ -35,7 +35,8 @@ import { TestConfigurationService } from 'vs/platform/configuration/test/common/ import { MenuBarVisibility, IWindowOpenable, IOpenWindowOptions, IOpenEmptyWindowOptions } from 'vs/platform/window/common/window'; import { TestWorkspace } from 'vs/platform/workspace/test/common/testWorkspace'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; -import { IThemeService, ThemeIcon } from 'vs/platform/theme/common/themeService'; +import { IThemeService } from 'vs/platform/theme/common/themeService'; +import { ThemeIcon } from 'vs/base/common/themables'; import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService'; import { ITextResourceConfigurationService, ITextResourcePropertiesService } from 'vs/editor/common/services/textResourceConfiguration'; import { IPosition, Position as EditorPosition } from 'vs/editor/common/core/position';