| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * Scrollable thumbnail ribbon at the bottom of the Gallery in the Slide mode. | 6 * Scrollable thumbnail ribbon at the bottom of the Gallery in the Slide mode. |
| 7 * | 7 * |
| 8 * @param {!Document} document Document. | 8 * @param {!Document} document Document. |
| 9 * @param {!cr.ui.ArrayDataModel} dataModel Data model. | 9 * @param {!cr.ui.ArrayDataModel} dataModel Data model. |
| 10 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. | 10 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. |
| 11 * @param {!ThumbnailModel} thumbnailModel |
| 11 * @extends {HTMLDivElement} | 12 * @extends {HTMLDivElement} |
| 12 * @constructor | 13 * @constructor |
| 13 * @suppress {checkStructDictInheritance} | 14 * @suppress {checkStructDictInheritance} |
| 14 * @struct | 15 * @struct |
| 15 */ | 16 */ |
| 16 function Ribbon(document, dataModel, selectionModel) { | 17 function Ribbon(document, dataModel, selectionModel, thumbnailModel) { |
| 17 if (this instanceof Ribbon) { | 18 if (this instanceof Ribbon) { |
| 18 return Ribbon.call(/** @type {Ribbon} */ (document.createElement('div')), | 19 return Ribbon.call(/** @type {Ribbon} */ (document.createElement('div')), |
| 19 document, dataModel, selectionModel); | 20 document, dataModel, selectionModel, thumbnailModel); |
| 20 } | 21 } |
| 21 | 22 |
| 22 this.__proto__ = Ribbon.prototype; | 23 this.__proto__ = Ribbon.prototype; |
| 23 this.className = 'ribbon'; | 24 this.className = 'ribbon'; |
| 24 | 25 |
| 25 /** | 26 /** |
| 26 * @type {!cr.ui.ArrayDataModel} | 27 * @private {!cr.ui.ArrayDataModel} |
| 27 * @private | 28 * @const |
| 28 */ | 29 */ |
| 29 this.dataModel_ = dataModel; | 30 this.dataModel_ = dataModel; |
| 30 | 31 |
| 31 /** | 32 /** |
| 32 * @type {!cr.ui.ListSelectionModel} | 33 * @private {!cr.ui.ListSelectionModel} |
| 33 * @private | 34 * @const |
| 34 */ | 35 */ |
| 35 this.selectionModel_ = selectionModel; | 36 this.selectionModel_ = selectionModel; |
| 36 | 37 |
| 37 /** | 38 /** |
| 39 * @private {!ThumbnailModel} |
| 40 * @const |
| 41 */ |
| 42 this.thumbnailModel_ = thumbnailModel; |
| 43 |
| 44 /** |
| 38 * @type {!Object} | 45 * @type {!Object} |
| 39 * @private | 46 * @private |
| 40 */ | 47 */ |
| 41 this.renderCache_ = {}; | 48 this.renderCache_ = {}; |
| 42 | 49 |
| 43 /** | 50 /** |
| 44 * @type {number} | 51 * @type {number} |
| 45 * @private | 52 * @private |
| 46 */ | 53 */ |
| 47 this.firstVisibleIndex_ = 0; | 54 this.firstVisibleIndex_ = 0; |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 382 }; | 389 }; |
| 383 | 390 |
| 384 /** | 391 /** |
| 385 * Set the thumbnail image. | 392 * Set the thumbnail image. |
| 386 * | 393 * |
| 387 * @param {!Element} thumbnail Thumbnail element. | 394 * @param {!Element} thumbnail Thumbnail element. |
| 388 * @param {!Gallery.Item} item Gallery item. | 395 * @param {!Gallery.Item} item Gallery item. |
| 389 * @private | 396 * @private |
| 390 */ | 397 */ |
| 391 Ribbon.prototype.setThumbnailImage_ = function(thumbnail, item) { | 398 Ribbon.prototype.setThumbnailImage_ = function(thumbnail, item) { |
| 392 var loader = new ThumbnailLoader( | 399 this.thumbnailModel_.get([item.getEntry()]).then(function(metadataList) { |
| 393 item.getEntry(), | 400 var loader = new ThumbnailLoader( |
| 394 ThumbnailLoader.LoaderType.IMAGE, | 401 item.getEntry(), |
| 395 item.getMetadata()); | 402 ThumbnailLoader.LoaderType.IMAGE, |
| 396 loader.load( | 403 metadataList[0]); |
| 397 thumbnail.querySelector('.image-wrapper'), | 404 loader.load( |
| 398 ThumbnailLoader.FillMode.FILL /* fill */, | 405 thumbnail.querySelector('.image-wrapper'), |
| 399 ThumbnailLoader.OptimizationMode.NEVER_DISCARD); | 406 ThumbnailLoader.FillMode.FILL /* fill */, |
| 407 ThumbnailLoader.OptimizationMode.NEVER_DISCARD); |
| 408 }); |
| 400 }; | 409 }; |
| 401 | 410 |
| 402 /** | 411 /** |
| 403 * Content change handler. | 412 * Content change handler. |
| 404 * | 413 * |
| 405 * @param {!Event} event Event. | 414 * @param {!Event} event Event. |
| 406 * @private | 415 * @private |
| 407 */ | 416 */ |
| 408 Ribbon.prototype.onContentChange_ = function(event) { | 417 Ribbon.prototype.onContentChange_ = function(event) { |
| 409 var url = event.item.getEntry().toURL(); | 418 var url = event.item.getEntry().toURL(); |
| (...skipping 11 matching lines...) Expand all Loading... |
| 421 * @param {string} oldUrl Old url. | 430 * @param {string} oldUrl Old url. |
| 422 * @param {string} newUrl New url. | 431 * @param {string} newUrl New url. |
| 423 * @private | 432 * @private |
| 424 */ | 433 */ |
| 425 Ribbon.prototype.remapCache_ = function(oldUrl, newUrl) { | 434 Ribbon.prototype.remapCache_ = function(oldUrl, newUrl) { |
| 426 if (oldUrl != newUrl && (oldUrl in this.renderCache_)) { | 435 if (oldUrl != newUrl && (oldUrl in this.renderCache_)) { |
| 427 this.renderCache_[newUrl] = this.renderCache_[oldUrl]; | 436 this.renderCache_[newUrl] = this.renderCache_[oldUrl]; |
| 428 delete this.renderCache_[oldUrl]; | 437 delete this.renderCache_[oldUrl]; |
| 429 } | 438 } |
| 430 }; | 439 }; |
| OLD | NEW |