use ResourceLabels in breadcrumbs control

This commit is contained in:
Johannes 2022-07-20 09:03:08 +02:00
parent a3cc2f87ac
commit 03e58be297
No known key found for this signature in database
GPG key ID: 6DEF802A22264FCA

View file

@ -26,7 +26,7 @@ import { IQuickInputService } from 'vs/platform/quickinput/common/quickInput';
import { ColorIdentifier, ColorTransform } from 'vs/platform/theme/common/colorRegistry'; import { ColorIdentifier, ColorTransform } from 'vs/platform/theme/common/colorRegistry';
import { attachBreadcrumbsStyler } from 'vs/platform/theme/common/styler'; import { attachBreadcrumbsStyler } from 'vs/platform/theme/common/styler';
import { IThemeService } from 'vs/platform/theme/common/themeService'; import { IThemeService } from 'vs/platform/theme/common/themeService';
import { ResourceLabel } from 'vs/workbench/browser/labels'; import { DEFAULT_LABELS_CONTAINER, ResourceLabels } from 'vs/workbench/browser/labels';
import { BreadcrumbsConfig, IBreadcrumbsService } from 'vs/workbench/browser/parts/editor/breadcrumbs'; import { BreadcrumbsConfig, IBreadcrumbsService } from 'vs/workbench/browser/parts/editor/breadcrumbs';
import { BreadcrumbsModel, FileElement, OutlineElement2 } from 'vs/workbench/browser/parts/editor/breadcrumbsModel'; import { BreadcrumbsModel, FileElement, OutlineElement2 } from 'vs/workbench/browser/parts/editor/breadcrumbsModel';
import { BreadcrumbsFilePicker, BreadcrumbsOutlinePicker, BreadcrumbsPicker } from 'vs/workbench/browser/parts/editor/breadcrumbsPicker'; import { BreadcrumbsFilePicker, BreadcrumbsOutlinePicker, BreadcrumbsPicker } from 'vs/workbench/browser/parts/editor/breadcrumbsPicker';
@ -109,7 +109,7 @@ class FileItem extends BreadcrumbsItem {
readonly model: BreadcrumbsModel, readonly model: BreadcrumbsModel,
readonly element: FileElement, readonly element: FileElement,
readonly options: IBreadcrumbsControlOptions, readonly options: IBreadcrumbsControlOptions,
@IInstantiationService private readonly _instantiationService: IInstantiationService private readonly _labels: ResourceLabels
) { ) {
super(); super();
} }
@ -130,8 +130,8 @@ class FileItem extends BreadcrumbsItem {
render(container: HTMLElement): void { render(container: HTMLElement): void {
// file/folder // file/folder
const label = this._instantiationService.createInstance(ResourceLabel, container, {}); const label = this._labels.create(container);
label.element.setFile(this.element.uri, { label.setFile(this.element.uri, {
hidePath: true, hidePath: true,
hideIcon: this.element.kind === FileKind.FOLDER || !this.options.showFileIcons, hideIcon: this.element.kind === FileKind.FOLDER || !this.options.showFileIcons,
fileKind: this.element.kind, fileKind: this.element.kind,
@ -182,6 +182,7 @@ export class BreadcrumbsControl {
private readonly _disposables = new DisposableStore(); private readonly _disposables = new DisposableStore();
private readonly _breadcrumbsDisposables = new DisposableStore(); private readonly _breadcrumbsDisposables = new DisposableStore();
private readonly _labels: ResourceLabels;
private _breadcrumbsPickerShowing = false; private _breadcrumbsPickerShowing = false;
private _breadcrumbsPickerIgnoreOnceItem: BreadcrumbsItem | undefined; private _breadcrumbsPickerIgnoreOnceItem: BreadcrumbsItem | undefined;
@ -208,6 +209,8 @@ export class BreadcrumbsControl {
this._cfShowIcons = BreadcrumbsConfig.Icons.bindTo(configurationService); this._cfShowIcons = BreadcrumbsConfig.Icons.bindTo(configurationService);
this._cfTitleScrollbarSizing = BreadcrumbsConfig.TitleScrollbarSizing.bindTo(configurationService); this._cfTitleScrollbarSizing = BreadcrumbsConfig.TitleScrollbarSizing.bindTo(configurationService);
this._labels = this._instantiationService.createInstance(ResourceLabels, DEFAULT_LABELS_CONTAINER);
const sizing = this._cfTitleScrollbarSizing.getValue() ?? 'default'; const sizing = this._cfTitleScrollbarSizing.getValue() ?? 'default';
this._widget = new BreadcrumbsWidget(this.domNode, BreadcrumbsControl.SCROLLBAR_SIZES[sizing], separatorIcon); this._widget = new BreadcrumbsWidget(this.domNode, BreadcrumbsControl.SCROLLBAR_SIZES[sizing], separatorIcon);
this._widget.onDidSelectItem(this._onSelectEvent, this, this._disposables); this._widget.onDidSelectItem(this._onSelectEvent, this, this._disposables);
@ -232,6 +235,7 @@ export class BreadcrumbsControl {
this._cfUseQuickPick.dispose(); this._cfUseQuickPick.dispose();
this._cfShowIcons.dispose(); this._cfShowIcons.dispose();
this._widget.dispose(); this._widget.dispose();
this._labels.dispose();
this.domNode.remove(); this.domNode.remove();
} }
@ -290,7 +294,7 @@ export class BreadcrumbsControl {
showFileIcons: this._options.showFileIcons && showIcons, showFileIcons: this._options.showFileIcons && showIcons,
showSymbolIcons: this._options.showSymbolIcons && showIcons showSymbolIcons: this._options.showSymbolIcons && showIcons
}; };
const items = model.getElements().map(element => element instanceof FileElement ? new FileItem(model, element, options, this._instantiationService) : new OutlineItem(model, element, options)); const items = model.getElements().map(element => element instanceof FileElement ? new FileItem(model, element, options, this._labels) : new OutlineItem(model, element, options));
if (items.length === 0) { if (items.length === 0) {
this._widget.setEnabled(false); this._widget.setEnabled(false);
this._widget.setItems([new class extends BreadcrumbsItem { this._widget.setItems([new class extends BreadcrumbsItem {