blob: b2500fe92eca4a659a20393318f89fcf70a6f5be [file] [log] [blame]
/*
* Copyright (c) 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.
*/
Sources.OpenFileQuickOpen = class extends Sources.FilteredUISourceCodeListProvider {
/**
* @override
*/
attach() {
this.setDefaultScores(Sources.SourcesView.defaultUISourceCodeScores());
super.attach();
}
/**
* @override
* @param {?Workspace.UISourceCode} uiSourceCode
* @param {number=} lineNumber
* @param {number=} columnNumber
*/
uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber) {
Host.userMetrics.actionTaken(Host.UserMetrics.Action.SelectFileFromFilePicker);
if (!uiSourceCode)
return;
if (typeof lineNumber === 'number')
Common.Revealer.reveal(uiSourceCode.uiLocation(lineNumber, columnNumber));
else
Common.Revealer.reveal(uiSourceCode);
}
/**
* @override
* @param {!Workspace.Project} project
* @return {boolean}
*/
filterProject(project) {
return !project.isServiceProject();
}
/**
* @override
* @return {boolean}
*/
renderAsTwoRows() {
return true;
}
};
Sources.SelectUISourceCodeForProjectTypesDialog = class extends Sources.FilteredUISourceCodeListProvider {
/**
* @param {!Array.<string>} types
* @param {function(?Workspace.UISourceCode)} callback
*/
constructor(types, callback) {
super();
this._types = types;
this._callback = callback;
}
/**
* @param {string} name
* @param {!Array.<string>} types
* @param {function(?Workspace.UISourceCode)} callback
*/
static show(name, types, callback) {
var filteredItemSelectionDialog =
new QuickOpen.FilteredListWidget(new Sources.SelectUISourceCodeForProjectTypesDialog(types, callback));
filteredItemSelectionDialog.showAsDialog();
filteredItemSelectionDialog.setQuery(name);
}
/**
* @override
* @param {?Workspace.UISourceCode} uiSourceCode
* @param {number=} lineNumber
* @param {number=} columnNumber
*/
uiSourceCodeSelected(uiSourceCode, lineNumber, columnNumber) {
this._callback(uiSourceCode);
}
/**
* @override
* @param {!Workspace.Project} project
* @return {boolean}
*/
filterProject(project) {
return this._types.indexOf(project.type()) !== -1;
}
/**
* @override
* @return {boolean}
*/
renderAsTwoRows() {
return true;
}
};