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

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/ui/SuggestBox.js

Issue 2916743002: [DevTools] Introduce Common.List used as a backend for list controls (Closed)
Patch Set: addressed comments Created 3 years, 6 months 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 this._maxItemsHeight = maxItemsHeight; 59 this._maxItemsHeight = maxItemsHeight;
60 this._captureEnter = captureEnter; 60 this._captureEnter = captureEnter;
61 this._rowHeight = 17; 61 this._rowHeight = 17;
62 this._userInteracted = false; 62 this._userInteracted = false;
63 this._userEnteredText = ''; 63 this._userEnteredText = '';
64 this._defaultSelectionIsDimmed = false; 64 this._defaultSelectionIsDimmed = false;
65 65
66 /** @type {?string} */ 66 /** @type {?string} */
67 this._onlyCompletion = null; 67 this._onlyCompletion = null;
68 68
69 /** @type {!UI.ListModel<!UI.SuggestBox.Suggestion>} */
70 this._items = new UI.ListModel();
69 /** @type {!UI.ListControl<!UI.SuggestBox.Suggestion>} */ 71 /** @type {!UI.ListControl<!UI.SuggestBox.Suggestion>} */
70 this._list = new UI.ListControl(this, UI.ListMode.EqualHeightItems); 72 this._list = new UI.ListControl(this._items, this, UI.ListMode.EqualHeightIt ems);
71 this._element = this._list.element; 73 this._element = this._list.element;
72 this._element.classList.add('suggest-box'); 74 this._element.classList.add('suggest-box');
73 this._element.addEventListener('mousedown', event => event.preventDefault(), true); 75 this._element.addEventListener('mousedown', event => event.preventDefault(), true);
74 this._element.addEventListener('click', this._onClick.bind(this), false); 76 this._element.addEventListener('click', this._onClick.bind(this), false);
75 77
76 this._glassPane = new UI.GlassPane(); 78 this._glassPane = new UI.GlassPane();
77 this._glassPane.setAnchorBehavior(UI.GlassPane.AnchorBehavior.PreferBottom); 79 this._glassPane.setAnchorBehavior(UI.GlassPane.AnchorBehavior.PreferBottom);
78 this._glassPane.setOutsideClickCallback(this.hide.bind(this)); 80 this._glassPane.setOutsideClickCallback(this.hide.bind(this));
79 var shadowRoot = UI.createShadowRootWithCoreStyles(this._glassPane.contentEl ement, 'ui/suggestBox.css'); 81 var shadowRoot = UI.createShadowRootWithCoreStyles(this._glassPane.contentEl ement, 'ui/suggestBox.css');
80 shadowRoot.appendChild(this._element); 82 shadowRoot.appendChild(this._element);
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 */ 311 */
310 updateSuggestions(anchorBox, completions, selectHighestPriority, canShowForSin gleItem, userEnteredText) { 312 updateSuggestions(anchorBox, completions, selectHighestPriority, canShowForSin gleItem, userEnteredText) {
311 this._onlyCompletion = null; 313 this._onlyCompletion = null;
312 if (this._canShowBox(completions, canShowForSingleItem, userEnteredText)) { 314 if (this._canShowBox(completions, canShowForSingleItem, userEnteredText)) {
313 this._userEnteredText = userEnteredText; 315 this._userEnteredText = userEnteredText;
314 316
315 this._show(); 317 this._show();
316 this._updateMaxSize(completions); 318 this._updateMaxSize(completions);
317 this._glassPane.setContentAnchorBox(anchorBox); 319 this._glassPane.setContentAnchorBox(anchorBox);
318 this._list.invalidateItemHeight(); 320 this._list.invalidateItemHeight();
319 this._list.replaceAllItems(completions); 321 this._items.replaceAllItems(completions);
320 322
321 if (selectHighestPriority) { 323 if (selectHighestPriority) {
322 var highestPriorityItem = completions[0]; 324 var highestPriorityItem = completions[0];
323 var highestPriority = completions[0].priority || 0; 325 var highestPriority = completions[0].priority || 0;
324 for (var i = 0; i < completions.length; i++) { 326 for (var i = 0; i < completions.length; i++) {
325 var priority = completions[i].priority || 0; 327 var priority = completions[i].priority || 0;
326 if (highestPriority < priority) { 328 if (highestPriority < priority) {
327 highestPriority = priority; 329 highestPriority = priority;
328 highestPriorityItem = completions[i]; 330 highestPriorityItem = completions[i];
329 } 331 }
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 390
389 /** 391 /**
390 * @typedef {!{text: string, subtitle: (string|undefined), iconType: (string|und efined), priority: (number|undefined), isSecondary: (boolean|undefined), title: (string|undefined)}} 392 * @typedef {!{text: string, subtitle: (string|undefined), iconType: (string|und efined), priority: (number|undefined), isSecondary: (boolean|undefined), title: (string|undefined)}}
391 */ 393 */
392 UI.SuggestBox.Suggestion; 394 UI.SuggestBox.Suggestion;
393 395
394 /** 396 /**
395 * @typedef {!Array<!UI.SuggestBox.Suggestion>} 397 * @typedef {!Array<!UI.SuggestBox.Suggestion>}
396 */ 398 */
397 UI.SuggestBox.Suggestions; 399 UI.SuggestBox.Suggestions;
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698