OLD | NEW |
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 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
264 * @param {!Event} event | 264 * @param {!Event} event |
265 */ | 265 */ |
266 _onItemMouseDown(event) { | 266 _onItemMouseDown(event) { |
267 this._selectedElement = event.currentTarget; | 267 this._selectedElement = event.currentTarget; |
268 this.acceptSuggestion(); | 268 this.acceptSuggestion(); |
269 event.consume(true); | 269 event.consume(true); |
270 } | 270 } |
271 | 271 |
272 /** | 272 /** |
273 * @param {string} query | 273 * @param {string} query |
274 * @param {string} text | 274 * @param {string} title |
| 275 * @param {string=} subtitle |
275 * @param {string=} iconType | 276 * @param {string=} iconType |
276 * @param {boolean=} isSecondary | 277 * @param {boolean=} isSecondary |
277 * @return {!Element} | 278 * @return {!Element} |
278 */ | 279 */ |
279 _createItemElement(query, text, iconType, isSecondary) { | 280 _createItemElement(query, title, subtitle, iconType, isSecondary) { |
280 var element = createElementWithClass('div', 'suggest-box-content-item source
-code'); | 281 var element = createElementWithClass('div', 'suggest-box-content-item source
-code'); |
281 if (iconType) { | 282 if (iconType) { |
282 var icon = UI.Icon.create(iconType, 'suggestion-icon'); | 283 var icon = UI.Icon.create(iconType, 'suggestion-icon'); |
283 element.appendChild(icon); | 284 element.appendChild(icon); |
284 } | 285 } |
285 if (isSecondary) | 286 if (isSecondary) |
286 element.classList.add('secondary'); | 287 element.classList.add('secondary'); |
287 element.tabIndex = -1; | 288 element.tabIndex = -1; |
288 var displayText = text.trimEnd(50 + query.length); | 289 var displayText = title.trimEnd(50 + query.length); |
289 | 290 |
290 var suggestionText = element.createChild('span', 'suggestion-text'); | 291 var titleElement = element.createChild('span', 'suggestion-title'); |
291 var index = displayText.toLowerCase().indexOf(query.toLowerCase()); | 292 var index = displayText.toLowerCase().indexOf(query.toLowerCase()); |
292 if (index > 0) | 293 if (index > 0) |
293 suggestionText.createChild('span').textContent = displayText.substring(0,
index); | 294 titleElement.createChild('span').textContent = displayText.substring(0, in
dex); |
294 if (index > -1) | 295 if (index > -1) |
295 suggestionText.createChild('span', 'query').textContent = displayText.subs
tring(index, index + query.length); | 296 titleElement.createChild('span', 'query').textContent = displayText.substr
ing(index, index + query.length); |
296 suggestionText.createChild('span').textContent = displayText.substring(index
> -1 ? index + query.length : 0); | 297 titleElement.createChild('span').textContent = displayText.substring(index >
-1 ? index + query.length : 0); |
297 suggestionText.createChild('span', 'spacer'); | 298 titleElement.createChild('span', 'spacer'); |
298 element.__fullValue = text; | 299 if (subtitle) { |
| 300 var subtitleElement = element.createChild('span', 'suggestion-subtitle'); |
| 301 subtitleElement.textContent = subtitle.trimEnd(15); |
| 302 } |
| 303 element.__fullValue = title; |
299 element.addEventListener('mousedown', this._onItemMouseDown.bind(this), fals
e); | 304 element.addEventListener('mousedown', this._onItemMouseDown.bind(this), fals
e); |
300 return element; | 305 return element; |
301 } | 306 } |
302 | 307 |
303 /** | 308 /** |
304 * @param {!UI.SuggestBox.Suggestions} items | 309 * @param {!UI.SuggestBox.Suggestions} items |
305 * @param {string} userEnteredText | 310 * @param {string} userEnteredText |
306 * @param {function(number): !Promise<{detail:string, description:string}>=} a
syncDetails | 311 * @param {function(number): !Promise<{detail:string, description:string}>=} a
syncDetails |
307 */ | 312 */ |
308 _updateItems(items, userEnteredText, asyncDetails) { | 313 _updateItems(items, userEnteredText, asyncDetails) { |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
529 } | 534 } |
530 | 535 |
531 /** | 536 /** |
532 * @override | 537 * @override |
533 * @param {number} index | 538 * @param {number} index |
534 * @return {?Element} | 539 * @return {?Element} |
535 */ | 540 */ |
536 itemElement(index) { | 541 itemElement(index) { |
537 if (!this._elementList[index]) { | 542 if (!this._elementList[index]) { |
538 this._elementList[index] = this._createItemElement( | 543 this._elementList[index] = this._createItemElement( |
539 this._userEnteredText, this._items[index].title, this._items[index].ic
onType, this._items[index].isSecondary); | 544 this._userEnteredText, this._items[index].title, this._items[index].su
btitle, this._items[index].iconType, |
| 545 this._items[index].isSecondary); |
540 } | 546 } |
541 return this._elementList[index]; | 547 return this._elementList[index]; |
542 } | 548 } |
543 }; | 549 }; |
544 | 550 |
545 /** | 551 /** |
546 * @typedef {!Array.<{title: string, iconType: (string|undefined), priority: (nu
mber|undefined), isSecondary: (boolean|undefined)}>} | 552 * @typedef {!Array.<{title: string, subtitle: (string|undefined), iconType: (st
ring|undefined), priority: (number|undefined), isSecondary: (boolean|undefined)}
>} |
547 */ | 553 */ |
548 UI.SuggestBox.Suggestions; | 554 UI.SuggestBox.Suggestions; |
549 | 555 |
550 /** | 556 /** |
551 * @unrestricted | 557 * @unrestricted |
552 */ | 558 */ |
553 UI.SuggestBox.Overlay = class { | 559 UI.SuggestBox.Overlay = class { |
554 /** | 560 /** |
555 * // FIXME: make SuggestBox work for multiple documents. | 561 * // FIXME: make SuggestBox work for multiple documents. |
556 * @suppressGlobalPropertiesCheck | 562 * @suppressGlobalPropertiesCheck |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
603 this.element.style.left = containerBox.x + 'px'; | 609 this.element.style.left = containerBox.x + 'px'; |
604 this.element.style.top = containerBox.y + 'px'; | 610 this.element.style.top = containerBox.y + 'px'; |
605 this.element.style.height = containerBox.height + 'px'; | 611 this.element.style.height = containerBox.height + 'px'; |
606 this.element.style.width = containerBox.width + 'px'; | 612 this.element.style.width = containerBox.width + 'px'; |
607 } | 613 } |
608 | 614 |
609 dispose() { | 615 dispose() { |
610 this.element.remove(); | 616 this.element.remove(); |
611 } | 617 } |
612 }; | 618 }; |
OLD | NEW |