| Index: third_party/WebKit/Source/devtools/front_end/quick_open/FilteredListWidget.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/quick_open/FilteredListWidget.js b/third_party/WebKit/Source/devtools/front_end/quick_open/FilteredListWidget.js
|
| index 2ef2cea1edbb0932e9c18a02df80750b5d855d3e..2d598c4753b421e367a1c9689d8f0b22eb1e4a3f 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/quick_open/FilteredListWidget.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/quick_open/FilteredListWidget.js
|
| @@ -11,8 +11,9 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| /**
|
| * @param {?QuickOpen.FilteredListWidget.Provider} provider
|
| * @param {!Array<string>=} promptHistory
|
| + * @param {function(string)=} queryChangedCallback
|
| */
|
| - constructor(provider, promptHistory) {
|
| + constructor(provider, promptHistory, queryChangedCallback) {
|
| super(true);
|
| this._promptHistory = promptHistory || [];
|
|
|
| @@ -46,7 +47,9 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
|
|
| this.setDefaultFocusedElement(this._promptElement);
|
|
|
| + this._prefix = '';
|
| this._provider = provider;
|
| + this._queryChangedCallback = queryChangedCallback;
|
| }
|
|
|
| /**
|
| @@ -118,6 +121,13 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| }
|
|
|
| /**
|
| + * @param {string} prefix
|
| + */
|
| + setPrefix(prefix) {
|
| + this._prefix = prefix;
|
| + }
|
| +
|
| + /**
|
| * @param {?QuickOpen.FilteredListWidget.Provider} provider
|
| */
|
| setProvider(provider) {
|
| @@ -139,7 +149,6 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| this._provider.attach();
|
| }
|
| this._itemsLoaded(this._provider);
|
| - this._updateShowMatchingItems();
|
| }
|
|
|
| /**
|
| @@ -149,6 +158,10 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| return this._prompt.text().trim();
|
| }
|
|
|
| + _cleanValue() {
|
| + return this._value().substring(this._prefix.length);
|
| + }
|
| +
|
| /**
|
| * @override
|
| */
|
| @@ -181,14 +194,14 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| */
|
| _onEnter(event) {
|
| event.preventDefault();
|
| - if (!this._provider || !this._provider.itemCount())
|
| + if (!this._provider)
|
| return;
|
| - var selectedIndexInProvider = this._shouldShowMatchingItems() ? this._list.selectedItem() : null;
|
| + var selectedIndexInProvider = this._provider.itemCount() ? this._list.selectedItem() : null;
|
|
|
| // Detach dialog before allowing provider to override focus.
|
| if (this._dialog)
|
| this._dialog.hide();
|
| - this._selectItemWithQuery(selectedIndexInProvider, this._value());
|
| + this._selectItem(selectedIndexInProvider);
|
| }
|
|
|
| /**
|
| @@ -216,7 +229,7 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| var titleElement = itemElement.createChild('div', 'filtered-list-widget-title');
|
| var subtitleElement = itemElement.createChild('div', 'filtered-list-widget-subtitle');
|
| subtitleElement.textContent = '\u200B';
|
| - this._provider.renderItem(item, this._value(), titleElement, subtitleElement);
|
| + this._provider.renderItem(item, this._cleanValue(), titleElement, subtitleElement);
|
| return itemElement;
|
| }
|
|
|
| @@ -265,7 +278,7 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| // Detach dialog before allowing provider to override focus.
|
| if (this._dialog)
|
| this._dialog.hide();
|
| - this._selectItemWithQuery(item, this._value());
|
| + this._selectItem(item);
|
| }
|
|
|
| /**
|
| @@ -273,9 +286,9 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| */
|
| setQuery(query) {
|
| this._prompt.setText(query);
|
| + this._queryChanged();
|
| this._prompt.autoCompleteSoon(true);
|
| this._scheduleFilter();
|
| - this._updateShowMatchingItems();
|
| }
|
|
|
| _tabKeyPressed() {
|
| @@ -309,15 +322,18 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| }
|
|
|
| if (!this._provider) {
|
| + this._bottomElementsContainer.classList.toggle('hidden', true);
|
| this._itemsFilteredForTest();
|
| return;
|
| }
|
|
|
| + this._bottomElementsContainer.classList.toggle('hidden', false);
|
| +
|
| this._progressBarElement.style.transform = 'scaleX(0)';
|
| this._progressBarElement.classList.remove('filtered-widget-progress-fade');
|
| this._progressBarElement.classList.remove('hidden');
|
|
|
| - var query = this._provider.rewriteQuery(this._value());
|
| + var query = this._provider.rewriteQuery(this._cleanValue());
|
| this._query = query;
|
|
|
| var filterRegex = query ? QuickOpen.FilteredListWidget.filterRegex(query) : null;
|
| @@ -423,24 +439,19 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
| this._list.element.classList.toggle('hidden', !hasItems);
|
| this._notFoundElement.classList.toggle('hidden', hasItems);
|
| if (!hasItems)
|
| - this._notFoundElement.textContent = this._provider.notFoundText();
|
| - }
|
| -
|
| - /**
|
| - * @return {boolean}
|
| - */
|
| - _shouldShowMatchingItems() {
|
| - return !!this._provider && this._provider.shouldShowMatchingItems(this._value());
|
| + this._notFoundElement.textContent = this._provider.notFoundText(this._cleanValue());
|
| }
|
|
|
| _onInput() {
|
| - this._updateShowMatchingItems();
|
| + this._queryChanged();
|
| this._scheduleFilter();
|
| }
|
|
|
| - _updateShowMatchingItems() {
|
| - var shouldShowMatchingItems = this._shouldShowMatchingItems();
|
| - this._bottomElementsContainer.classList.toggle('hidden', !shouldShowMatchingItems);
|
| + _queryChanged() {
|
| + if (this._queryChangedCallback)
|
| + this._queryChangedCallback(this._value());
|
| + if (this._provider)
|
| + this._provider.queryChanged(this._cleanValue());
|
| }
|
|
|
| /**
|
| @@ -480,13 +491,12 @@ QuickOpen.FilteredListWidget = class extends UI.VBox {
|
|
|
| /**
|
| * @param {?number} itemIndex
|
| - * @param {string} promptValue
|
| */
|
| - _selectItemWithQuery(itemIndex, promptValue) {
|
| - this._promptHistory.push(promptValue);
|
| + _selectItem(itemIndex) {
|
| + this._promptHistory.push(this._value());
|
| if (this._promptHistory.length > 100)
|
| this._promptHistory.shift();
|
| - this._provider.selectItem(itemIndex, promptValue);
|
| + this._provider.selectItem(itemIndex, this._cleanValue());
|
| }
|
| };
|
|
|
| @@ -506,14 +516,6 @@ QuickOpen.FilteredListWidget.Provider = class {
|
| }
|
|
|
| /**
|
| - * @param {string} query
|
| - * @return {boolean}
|
| - */
|
| - shouldShowMatchingItems(query) {
|
| - return true;
|
| - }
|
| -
|
| - /**
|
| * @return {number}
|
| */
|
| itemCount() {
|
| @@ -573,9 +575,16 @@ QuickOpen.FilteredListWidget.Provider = class {
|
| }
|
|
|
| /**
|
| + * @param {string} query
|
| + */
|
| + queryChanged(query) {
|
| + }
|
| +
|
| + /**
|
| + * @param {string} query
|
| * @return {string}
|
| */
|
| - notFoundText() {
|
| + notFoundText(query) {
|
| return Common.UIString('No results found');
|
| }
|
|
|
|
|