chrome-devtools-frontend
Version:
Chrome DevTools UI
55 lines (44 loc) • 1.88 kB
text/typescript
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../../ui/kit/kit.js';
import * as Common from '../../core/common/common.js';
import * as Host from '../../core/host/host.js';
import type * as Workspace from '../../models/workspace/workspace.js';
import {PanelUtils} from '../../panels/utils/utils.js';
import {Directives, html, type TemplateResult} from '../../ui/lit/lit.js';
import {FilteredUISourceCodeListProvider} from './FilteredUISourceCodeListProvider.js';
import {SourcesView} from './SourcesView.js';
const {styleMap} = Directives;
export class OpenFileQuickOpen extends FilteredUISourceCodeListProvider {
constructor() {
super('source-file');
}
override attach(): void {
this.setDefaultScores(SourcesView.defaultUISourceCodeScores());
super.attach();
}
override uiSourceCodeSelected(
uiSourceCode: Workspace.UISourceCode.UISourceCode|null, lineNumber?: number, columnNumber?: number): void {
Host.userMetrics.actionTaken(Host.UserMetrics.Action.SelectFileFromFilePicker);
if (!uiSourceCode) {
return;
}
if (typeof lineNumber === 'number') {
void Common.Revealer.reveal(uiSourceCode.uiLocation(lineNumber, columnNumber));
} else {
void Common.Revealer.reveal(uiSourceCode);
}
}
override filterProject(project: Workspace.Workspace.Project): boolean {
return !project.isServiceProject();
}
override renderItem(itemIndex: number, query: string): TemplateResult {
const {iconName, color} = PanelUtils.iconDataForResourceType(this.itemContentTypeAt(itemIndex));
// clang-format off
return html`
<devtools-icon class="large" name=${iconName} style=${styleMap({color})}></devtools-icon>
${super.renderItem(itemIndex, query)}`;
// clang-format on
}
}