| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201 |
- /*---------------------------------------------------------------------------------------------
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for license information.
- *--------------------------------------------------------------------------------------------*/
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
- };
- var __param = (this && this.__param) || function (paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); }
- };
- import * as dom from '../../../../../base/browser/dom.js';
- import { CountBadge } from '../../../../../base/browser/ui/countBadge/countBadge.js';
- import { HighlightedLabel } from '../../../../../base/browser/ui/highlightedlabel/highlightedLabel.js';
- import { IconLabel } from '../../../../../base/browser/ui/iconLabel/iconLabel.js';
- import { createMatches, FuzzyScore } from '../../../../../base/common/filters.js';
- import { Disposable } from '../../../../../base/common/lifecycle.js';
- import { basename, dirname } from '../../../../../base/common/resources.js';
- import { ITextModelService } from '../../../../common/services/resolverService.js';
- import { localize } from '../../../../../nls.js';
- import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
- import { IKeybindingService } from '../../../../../platform/keybinding/common/keybinding.js';
- import { ILabelService } from '../../../../../platform/label/common/label.js';
- import { attachBadgeStyler } from '../../../../../platform/theme/common/styler.js';
- import { IThemeService } from '../../../../../platform/theme/common/themeService.js';
- import { FileReferences, OneReference, ReferencesModel } from '../referencesModel.js';
- let DataSource = class DataSource {
- constructor(_resolverService) {
- this._resolverService = _resolverService;
- }
- hasChildren(element) {
- if (element instanceof ReferencesModel) {
- return true;
- }
- if (element instanceof FileReferences) {
- return true;
- }
- return false;
- }
- getChildren(element) {
- if (element instanceof ReferencesModel) {
- return element.groups;
- }
- if (element instanceof FileReferences) {
- return element.resolve(this._resolverService).then(val => {
- // if (element.failure) {
- // // refresh the element on failure so that
- // // we can update its rendering
- // return tree.refresh(element).then(() => val.children);
- // }
- return val.children;
- });
- }
- throw new Error('bad tree');
- }
- };
- DataSource = __decorate([
- __param(0, ITextModelService)
- ], DataSource);
- export { DataSource };
- //#endregion
- export class Delegate {
- getHeight() {
- return 23;
- }
- getTemplateId(element) {
- if (element instanceof FileReferences) {
- return FileReferencesRenderer.id;
- }
- else {
- return OneReferenceRenderer.id;
- }
- }
- }
- let StringRepresentationProvider = class StringRepresentationProvider {
- constructor(_keybindingService) {
- this._keybindingService = _keybindingService;
- }
- getKeyboardNavigationLabel(element) {
- var _a;
- if (element instanceof OneReference) {
- const parts = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);
- if (parts) {
- return parts.value;
- }
- }
- // FileReferences or unresolved OneReference
- return basename(element.uri);
- }
- };
- StringRepresentationProvider = __decorate([
- __param(0, IKeybindingService)
- ], StringRepresentationProvider);
- export { StringRepresentationProvider };
- export class IdentityProvider {
- getId(element) {
- return element instanceof OneReference ? element.id : element.uri;
- }
- }
- //#region render: File
- let FileReferencesTemplate = class FileReferencesTemplate extends Disposable {
- constructor(container, _labelService, themeService) {
- super();
- this._labelService = _labelService;
- const parent = document.createElement('div');
- parent.classList.add('reference-file');
- this.file = this._register(new IconLabel(parent, { supportHighlights: true }));
- this.badge = new CountBadge(dom.append(parent, dom.$('.count')));
- this._register(attachBadgeStyler(this.badge, themeService));
- container.appendChild(parent);
- }
- set(element, matches) {
- const parent = dirname(element.uri);
- this.file.setLabel(this._labelService.getUriBasenameLabel(element.uri), this._labelService.getUriLabel(parent, { relative: true }), { title: this._labelService.getUriLabel(element.uri), matches });
- const len = element.children.length;
- this.badge.setCount(len);
- if (len > 1) {
- this.badge.setTitleFormat(localize('referencesCount', "{0} references", len));
- }
- else {
- this.badge.setTitleFormat(localize('referenceCount', "{0} reference", len));
- }
- }
- };
- FileReferencesTemplate = __decorate([
- __param(1, ILabelService),
- __param(2, IThemeService)
- ], FileReferencesTemplate);
- let FileReferencesRenderer = class FileReferencesRenderer {
- constructor(_instantiationService) {
- this._instantiationService = _instantiationService;
- this.templateId = FileReferencesRenderer.id;
- }
- renderTemplate(container) {
- return this._instantiationService.createInstance(FileReferencesTemplate, container);
- }
- renderElement(node, index, template) {
- template.set(node.element, createMatches(node.filterData));
- }
- disposeTemplate(templateData) {
- templateData.dispose();
- }
- };
- FileReferencesRenderer.id = 'FileReferencesRenderer';
- FileReferencesRenderer = __decorate([
- __param(0, IInstantiationService)
- ], FileReferencesRenderer);
- export { FileReferencesRenderer };
- //#endregion
- //#region render: Reference
- class OneReferenceTemplate {
- constructor(container) {
- this.label = new HighlightedLabel(container);
- }
- set(element, score) {
- var _a;
- const preview = (_a = element.parent.getPreview(element)) === null || _a === void 0 ? void 0 : _a.preview(element.range);
- if (!preview || !preview.value) {
- // this means we FAILED to resolve the document or the value is the empty string
- this.label.set(`${basename(element.uri)}:${element.range.startLineNumber + 1}:${element.range.startColumn + 1}`);
- }
- else {
- // render search match as highlight unless
- // we have score, then render the score
- const { value, highlight } = preview;
- if (score && !FuzzyScore.isDefault(score)) {
- this.label.element.classList.toggle('referenceMatch', false);
- this.label.set(value, createMatches(score));
- }
- else {
- this.label.element.classList.toggle('referenceMatch', true);
- this.label.set(value, [highlight]);
- }
- }
- }
- }
- export class OneReferenceRenderer {
- constructor() {
- this.templateId = OneReferenceRenderer.id;
- }
- renderTemplate(container) {
- return new OneReferenceTemplate(container);
- }
- renderElement(node, index, templateData) {
- templateData.set(node.element, node.filterData);
- }
- disposeTemplate() {
- }
- }
- OneReferenceRenderer.id = 'OneReferenceRenderer';
- //#endregion
- export class AccessibilityProvider {
- getWidgetAriaLabel() {
- return localize('treeAriaLabel', "References");
- }
- getAriaLabel(element) {
- return element.ariaMessage;
- }
- }
|