Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(271)

Unified Diff: third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js

Issue 2592433003: [DevTools] Replace ViewportControl with ListControl. (Closed)
Patch Set: partial Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js
diff --git a/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js b/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js
index cc801aa975cf869689da265a4dd44454e9cf4345..ceb66f6da7d0f15e396d4308efc719853a0cd2ca 100644
--- a/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js
+++ b/third_party/WebKit/Source/devtools/front_end/ui_lazy/FilteredListWidget.js
@@ -4,7 +4,6 @@
* found in the LICENSE file.
*/
/**
- * @implements {UI.ViewportControl.Provider}
* @unrestricted
*/
UI.FilteredListWidget = class extends UI.VBox {
@@ -33,8 +32,8 @@ UI.FilteredListWidget = class extends UI.VBox {
promptProxy.classList.add('filtered-list-widget-prompt-element');
this._filteredItems = [];
- this._viewportControl = new UI.ViewportControl(this);
- this._itemElementsContainer = this._viewportControl.element;
+ this._viewport = new UI.SimpleViewport(this._createItemElement.bind(this));
+ this._itemElementsContainer = this._viewport.element;
this._itemElementsContainer.classList.add('container');
this._itemElementsContainer.addEventListener('click', this._onClick.bind(this), false);
this.contentElement.appendChild(this._itemElementsContainer);
@@ -45,10 +44,6 @@ UI.FilteredListWidget = class extends UI.VBox {
this._delegate.setRefreshCallback(this._itemsLoaded.bind(this));
this._itemsLoaded();
this._updateShowMatchingItems();
- this._viewportControl.refresh();
-
- /** @typedef {!Array.<!Element>} */
- this._elements = [];
}
/**
@@ -126,6 +121,7 @@ UI.FilteredListWidget = class extends UI.VBox {
* @return {!Element}
*/
_createItemElement(index) {
+ index = this._filteredItems[index];
var itemElement = createElement('div');
itemElement.className = 'filtered-list-widget-item ' + (this._renderAsTwoRows ? 'two-rows' : 'one-row');
itemElement._titleElement = itemElement.createChild('div', 'filtered-list-widget-title');
@@ -238,11 +234,10 @@ UI.FilteredListWidget = class extends UI.VBox {
break;
}
}
- this._elements = [];
- this._viewportControl.refresh();
+ this._viewport.refresh(this._filteredItems.length);
if (!query)
this._selectedIndexInFiltered = 0;
- this._updateSelection(this._selectedIndexInFiltered, false);
+ this._updateSelection(this._selectedIndexInFiltered);
this._itemsFilteredForTest();
}
}
@@ -264,13 +259,6 @@ UI.FilteredListWidget = class extends UI.VBox {
this._itemElementsContainer.classList.toggle('hidden', !shouldShowMatchingItems);
}
- /**
- * @return {number}
- */
- _rowsPerViewport() {
- return Math.floor(this._viewportControl.element.clientHeight / this._rowHeight);
- }
-
_onKeyDown(event) {
var newSelectedIndex = this._selectedIndexInFiltered;
@@ -278,23 +266,24 @@ UI.FilteredListWidget = class extends UI.VBox {
case UI.KeyboardShortcut.Keys.Down.code:
if (++newSelectedIndex >= this._filteredItems.length)
newSelectedIndex = 0;
- this._updateSelection(newSelectedIndex, true);
+ this._updateSelection(newSelectedIndex);
event.consume(true);
break;
case UI.KeyboardShortcut.Keys.Up.code:
if (--newSelectedIndex < 0)
newSelectedIndex = this._filteredItems.length - 1;
- this._updateSelection(newSelectedIndex, false);
+ this._updateSelection(newSelectedIndex);
event.consume(true);
break;
case UI.KeyboardShortcut.Keys.PageDown.code:
- newSelectedIndex = Math.min(newSelectedIndex + this._rowsPerViewport(), this._filteredItems.length - 1);
- this._updateSelection(newSelectedIndex, true);
+ newSelectedIndex =
+ Math.min(newSelectedIndex + this._viewport.elementsPerViewport(), this._filteredItems.length - 1);
+ this._updateSelection(newSelectedIndex);
event.consume(true);
break;
case UI.KeyboardShortcut.Keys.PageUp.code:
- newSelectedIndex = Math.max(newSelectedIndex - this._rowsPerViewport(), 0);
- this._updateSelection(newSelectedIndex, false);
+ newSelectedIndex = Math.max(newSelectedIndex - this._viewport.elementsPerViewport(), 0);
+ this._updateSelection(newSelectedIndex);
event.consume(true);
break;
case UI.KeyboardShortcut.Keys.Enter.code:
@@ -315,16 +304,15 @@ UI.FilteredListWidget = class extends UI.VBox {
/**
* @param {number} index
- * @param {boolean} makeLast
*/
- _updateSelection(index, makeLast) {
+ _updateSelection(index) {
if (!this._filteredItems.length)
return;
if (this._selectedElement)
this._selectedElement.classList.remove('selected');
- this._viewportControl.scrollItemIntoView(index, makeLast);
+ this._viewport.scrollItemIntoView(index);
this._selectedIndexInFiltered = index;
- this._selectedElement = this._elements[index];
+ this._selectedElement = this._viewport.elementAtIndex(index);
if (this._selectedElement)
this._selectedElement.classList.add('selected');
}
@@ -339,39 +327,6 @@ UI.FilteredListWidget = class extends UI.VBox {
this._dialog.detach();
this._delegate.selectItemWithQuery(itemElement._index, this._value());
}
-
- /**
- * @override
- * @return {number}
- */
- itemCount() {
- return this._filteredItems.length;
- }
-
- /**
- * @override
- * @param {number} index
- * @return {number}
- */
- fastItemHeight(index) {
- if (!this._rowHeight) {
- var delegateIndex = this._filteredItems[index];
- var element = this._createItemElement(delegateIndex);
- this._rowHeight = UI.measurePreferredSize(element, this._itemElementsContainer).height;
- }
- return this._rowHeight;
- }
-
- /**
- * @override
- * @param {number} index
- * @return {!Element}
- */
- itemElement(index) {
- if (!this._elements[index])
- this._elements[index] = this._createItemElement(this._filteredItems[index]);
- return this._elements[index];
- }
};

Powered by Google App Engine
This is Rietveld 408576698