chrome-devtools-frontend
Version:
Chrome DevTools UI
60 lines (49 loc) • 2.1 kB
text/typescript
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/* eslint-disable rulesdir/no-imperative-dom-api */
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 * as IconButton from '../../ui/components/icon_button/icon_button.js';
import {FilteredUISourceCodeListProvider} from './FilteredUISourceCodeListProvider.js';
import {SourcesView} from './SourcesView.js';
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, titleElement: Element, subtitleElement: Element): void {
super.renderItem(itemIndex, query, titleElement, subtitleElement);
const iconElement = new IconButton.Icon.Icon();
const iconData = PanelUtils.iconDataForResourceType(this.itemContentTypeAt(itemIndex));
iconElement.data = {
...iconData,
width: '18px',
height: '18px',
};
titleElement.parentElement?.parentElement?.insertBefore(iconElement, titleElement.parentElement);
}
override renderAsTwoRows(): boolean {
return true;
}
}