| 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 * Slide mode displays a single image and has a set of controls to navigate | 6 * Slide mode displays a single image and has a set of controls to navigate |
| 7 * between the images and to edit an image. | 7 * between the images and to edit an image. |
| 8 * | 8 * |
| 9 * @param {!HTMLElement} container Main container element. | 9 * @param {!HTMLElement} container Main container element. |
| 10 * @param {!HTMLElement} content Content container element. | 10 * @param {!HTMLElement} content Content container element. |
| 11 * @param {!HTMLElement} topToolbar Top toolbar element. | 11 * @param {!HTMLElement} toolbar Toolbar element. |
| 12 * @param {!HTMLElement} bottomToolbar Toolbar element. | |
| 13 * @param {!ImageEditor.Prompt} prompt Prompt. | 12 * @param {!ImageEditor.Prompt} prompt Prompt. |
| 14 * @param {!ErrorBanner} errorBanner Error banner. | 13 * @param {!ErrorBanner} errorBanner Error banner. |
| 15 * @param {!cr.ui.ArrayDataModel} dataModel Data model. | 14 * @param {!cr.ui.ArrayDataModel} dataModel Data model. |
| 16 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. | 15 * @param {!cr.ui.ListSelectionModel} selectionModel Selection model. |
| 17 * @param {!MetadataModel} metadataModel | 16 * @param {!MetadataModel} metadataModel |
| 18 * @param {!ThumbnailModel} thumbnailModel | 17 * @param {!ThumbnailModel} thumbnailModel |
| 19 * @param {!Object} context Context. | 18 * @param {!Object} context Context. |
| 20 * @param {!VolumeManagerWrapper} volumeManager Volume manager. | 19 * @param {!VolumeManagerWrapper} volumeManager Volume manager. |
| 21 * @param {function(function())} toggleMode Function to toggle the Gallery mode. | 20 * @param {function(function())} toggleMode Function to toggle the Gallery mode. |
| 22 * @param {function(string):string} displayStringFunction String formatting | 21 * @param {function(string):string} displayStringFunction String formatting |
| 23 * function. | 22 * function. |
| 24 * @constructor | 23 * @constructor |
| 25 * @struct | 24 * @struct |
| 26 * @suppress {checkStructDictInheritance} | 25 * @suppress {checkStructDictInheritance} |
| 27 * @extends {cr.EventTarget} | 26 * @extends {cr.EventTarget} |
| 28 */ | 27 */ |
| 29 function SlideMode(container, content, topToolbar, bottomToolbar, prompt, | 28 function SlideMode(container, content, toolbar, prompt, errorBanner, dataModel, |
| 30 errorBanner, dataModel, selectionModel, metadataModel, thumbnailModel, | 29 selectionModel, metadataModel, thumbnailModel, context, volumeManager, |
| 31 context, volumeManager, toggleMode, displayStringFunction) { | 30 toggleMode, displayStringFunction) { |
| 32 /** | 31 /** |
| 33 * @type {!HTMLElement} | 32 * @type {!HTMLElement} |
| 34 * @private | 33 * @private |
| 35 * @const | 34 * @const |
| 36 */ | 35 */ |
| 37 this.container_ = container; | 36 this.container_ = container; |
| 38 | 37 |
| 39 /** | 38 /** |
| 40 * @type {!Document} | 39 * @type {!Document} |
| 41 * @private | 40 * @private |
| 42 * @const | 41 * @const |
| 43 */ | 42 */ |
| 44 this.document_ = assert(container.ownerDocument); | 43 this.document_ = assert(container.ownerDocument); |
| 45 | 44 |
| 46 /** | 45 /** |
| 47 * @type {!HTMLElement} | 46 * @type {!HTMLElement} |
| 48 * @const | 47 * @const |
| 49 */ | 48 */ |
| 50 this.content = content; | 49 this.content = content; |
| 51 | 50 |
| 52 /** | 51 /** |
| 53 * @type {!HTMLElement} | 52 * @type {!HTMLElement} |
| 54 * @private | 53 * @private |
| 55 * @const | 54 * @const |
| 56 */ | 55 */ |
| 57 this.topToolbar_ = topToolbar; | 56 this.toolbar_ = toolbar; |
| 58 | |
| 59 /** | |
| 60 * @type {!HTMLElement} | |
| 61 * @private | |
| 62 * @const | |
| 63 */ | |
| 64 this.bottomToolbar_ = bottomToolbar; | |
| 65 | 57 |
| 66 /** | 58 /** |
| 67 * @type {!ImageEditor.Prompt} | 59 * @type {!ImageEditor.Prompt} |
| 68 * @private | 60 * @private |
| 69 * @const | 61 * @const |
| 70 */ | 62 */ |
| 71 this.prompt_ = prompt; | 63 this.prompt_ = prompt; |
| 72 | 64 |
| 73 /** | 65 /** |
| 74 * @type {!ErrorBanner} | 66 * @type {!ErrorBanner} |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 | 212 |
| 221 this.document_.addEventListener('click', this.onDocumentClick_.bind(this)); | 213 this.document_.addEventListener('click', this.onDocumentClick_.bind(this)); |
| 222 | 214 |
| 223 /** | 215 /** |
| 224 * Overwrite options and info bubble. | 216 * Overwrite options and info bubble. |
| 225 * @type {!HTMLElement} | 217 * @type {!HTMLElement} |
| 226 * @private | 218 * @private |
| 227 * @const | 219 * @const |
| 228 */ | 220 */ |
| 229 this.options_ = util.createChild(queryRequiredElement( | 221 this.options_ = util.createChild(queryRequiredElement( |
| 230 this.topToolbar_, '.filename-spacer'), 'options'); | 222 this.toolbar_, '.filename-spacer'), 'options'); |
| 231 | 223 |
| 232 /** | 224 /** |
| 233 * @type {!HTMLElement} | 225 * @type {!HTMLElement} |
| 234 * @private | 226 * @private |
| 235 * @const | 227 * @const |
| 236 */ | 228 */ |
| 237 this.savedLabel_ = util.createChild(this.options_, 'saved'); | 229 this.savedLabel_ = util.createChild(this.options_, 'saved'); |
| 238 this.savedLabel_.textContent = this.displayStringFunction_('GALLERY_SAVED'); | 230 this.savedLabel_.textContent = this.displayStringFunction_('GALLERY_SAVED'); |
| 239 | 231 |
| 240 /** | 232 /** |
| (...skipping 30 matching lines...) Expand all Loading... |
| 271 this.overwriteOriginalBox_, '', 'label'); | 263 this.overwriteOriginalBox_, '', 'label'); |
| 272 overwriteLabel.textContent = | 264 overwriteLabel.textContent = |
| 273 this.displayStringFunction_('GALLERY_OVERWRITE_ORIGINAL'); | 265 this.displayStringFunction_('GALLERY_OVERWRITE_ORIGINAL'); |
| 274 overwriteLabel.setAttribute('for', 'overwrite-checkbox'); | 266 overwriteLabel.setAttribute('for', 'overwrite-checkbox'); |
| 275 | 267 |
| 276 /** | 268 /** |
| 277 * @type {!HTMLElement} | 269 * @type {!HTMLElement} |
| 278 * @private | 270 * @private |
| 279 * @const | 271 * @const |
| 280 */ | 272 */ |
| 281 this.bubble_ = util.createChild(this.bottomToolbar_, 'bubble'); | 273 this.bubble_ = util.createChild(this.toolbar_, 'bubble'); |
| 282 this.bubble_.hidden = true; | 274 this.bubble_.hidden = true; |
| 283 | 275 |
| 284 /** | 276 /** |
| 285 * @type {!HTMLElement} | 277 * @type {!HTMLElement} |
| 286 * @const | 278 * @const |
| 287 */ | 279 */ |
| 288 var bubbleContent = util.createChild(this.bubble_); | 280 var bubbleContent = util.createChild(this.bubble_); |
| 289 bubbleContent.innerHTML = this.displayStringFunction_( | 281 bubbleContent.innerHTML = this.displayStringFunction_( |
| 290 'GALLERY_OVERWRITE_BUBBLE'); | 282 'GALLERY_OVERWRITE_BUBBLE'); |
| 291 | 283 |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 328 this.arrowBox_, 'arrow right tool dimmable'); | 320 this.arrowBox_, 'arrow right tool dimmable'); |
| 329 this.arrowRight_.addEventListener('click', | 321 this.arrowRight_.addEventListener('click', |
| 330 this.advanceManually.bind(this, 1)); | 322 this.advanceManually.bind(this, 1)); |
| 331 util.createChild(this.arrowRight_); | 323 util.createChild(this.arrowRight_); |
| 332 | 324 |
| 333 /** | 325 /** |
| 334 * @type {!HTMLElement} | 326 * @type {!HTMLElement} |
| 335 * @private | 327 * @private |
| 336 * @const | 328 * @const |
| 337 */ | 329 */ |
| 338 this.ribbonSpacer_ = queryRequiredElement(this.bottomToolbar_, | 330 this.ribbonSpacer_ = queryRequiredElement(this.toolbar_, '.ribbon-spacer'); |
| 339 '.ribbon-spacer'); | |
| 340 | 331 |
| 341 /** | 332 /** |
| 342 * @type {!Ribbon} | 333 * @type {!Ribbon} |
| 343 * @private | 334 * @private |
| 344 * @const | 335 * @const |
| 345 */ | 336 */ |
| 346 this.ribbon_ = new Ribbon( | 337 this.ribbon_ = new Ribbon( |
| 347 this.document_, this.dataModel_, this.selectionModel_, thumbnailModel); | 338 this.document_, this.dataModel_, this.selectionModel_, thumbnailModel); |
| 348 this.ribbonSpacer_.appendChild(this.ribbon_); | 339 this.ribbonSpacer_.appendChild(this.ribbon_); |
| 349 | 340 |
| 350 util.createChild(this.container_, 'spinner'); | 341 util.createChild(this.container_, 'spinner'); |
| 351 | 342 |
| 352 /** | 343 /** |
| 353 * @type {!HTMLElement} | 344 * @type {!HTMLElement} |
| 354 * @const | 345 * @const |
| 355 */ | 346 */ |
| 356 var slideShowButton = queryRequiredElement(this.topToolbar_, | 347 var slideShowButton = queryRequiredElement(this.toolbar_, 'button.slideshow'); |
| 357 'button.slideshow'); | |
| 358 slideShowButton.title = this.displayStringFunction_('GALLERY_SLIDESHOW'); | 348 slideShowButton.title = this.displayStringFunction_('GALLERY_SLIDESHOW'); |
| 359 slideShowButton.addEventListener('click', | 349 slideShowButton.addEventListener('click', |
| 360 this.startSlideshow.bind(this, SlideMode.SLIDESHOW_INTERVAL_FIRST)); | 350 this.startSlideshow.bind(this, SlideMode.SLIDESHOW_INTERVAL_FIRST)); |
| 361 | 351 |
| 362 /** | 352 /** |
| 363 * @type {!HTMLElement} | 353 * @type {!HTMLElement} |
| 364 * @const | 354 * @const |
| 365 */ | 355 */ |
| 366 var slideShowToolbar = util.createChild( | 356 var slideShowToolbar = util.createChild( |
| 367 this.container_, 'tool slideshow-toolbar'); | 357 this.container_, 'tool slideshow-toolbar'); |
| 368 util.createChild(slideShowToolbar, 'slideshow-play'). | 358 util.createChild(slideShowToolbar, 'slideshow-play'). |
| 369 addEventListener('click', this.toggleSlideshowPause_.bind(this)); | 359 addEventListener('click', this.toggleSlideshowPause_.bind(this)); |
| 370 util.createChild(slideShowToolbar, 'slideshow-end'). | 360 util.createChild(slideShowToolbar, 'slideshow-end'). |
| 371 addEventListener('click', this.stopSlideshow_.bind(this)); | 361 addEventListener('click', this.stopSlideshow_.bind(this)); |
| 372 | 362 |
| 373 // Editor. | 363 // Editor. |
| 374 /** | 364 /** |
| 375 * @type {!HTMLElement} | 365 * @type {!HTMLElement} |
| 376 * @private | 366 * @private |
| 377 * @const | 367 * @const |
| 378 */ | 368 */ |
| 379 this.editButton_ = queryRequiredElement(this.topToolbar_, 'button.edit'); | 369 this.editButton_ = queryRequiredElement(this.toolbar_, 'button.edit'); |
| 380 this.editButton_.title = this.displayStringFunction_('GALLERY_EDIT'); | 370 this.editButton_.title = this.displayStringFunction_('GALLERY_EDIT'); |
| 381 this.editButton_.disabled = true; // Disabled by default. | 371 this.editButton_.disabled = true; // Disabled by default. |
| 382 this.editButton_.addEventListener('click', this.toggleEditor.bind(this)); | 372 this.editButton_.addEventListener('click', this.toggleEditor.bind(this)); |
| 383 | 373 |
| 384 /** | 374 /** |
| 385 * @type {!HTMLElement} | 375 * @type {!HTMLElement} |
| 386 * @private | 376 * @private |
| 387 * @const | 377 * @const |
| 388 */ | 378 */ |
| 389 this.printButton_ = queryRequiredElement(this.topToolbar_, 'button.print'); | 379 this.printButton_ = queryRequiredElement(this.toolbar_, 'button.print'); |
| 390 this.printButton_.title = this.displayStringFunction_('GALLERY_PRINT'); | 380 this.printButton_.title = this.displayStringFunction_('GALLERY_PRINT'); |
| 391 this.printButton_.disabled = true; // Disabled by default. | 381 this.printButton_.disabled = true; // Disabled by default. |
| 392 this.printButton_.addEventListener('click', this.print_.bind(this)); | 382 this.printButton_.addEventListener('click', this.print_.bind(this)); |
| 393 | 383 |
| 394 /** | 384 /** |
| 395 * @type {!HTMLElement} | 385 * @type {!HTMLElement} |
| 396 * @private | 386 * @private |
| 397 * @const | 387 * @const |
| 398 */ | 388 */ |
| 399 this.editBarSpacer_ = queryRequiredElement(this.bottomToolbar_, | 389 this.editBarSpacer_ = queryRequiredElement(this.toolbar_, '.edit-bar-spacer'); |
| 400 '.edit-bar-spacer'); | |
| 401 | 390 |
| 402 /** | 391 /** |
| 403 * @type {!HTMLElement} | 392 * @type {!HTMLElement} |
| 404 * @private | 393 * @private |
| 405 * @const | 394 * @const |
| 406 */ | 395 */ |
| 407 this.editBarMain_ = util.createChild(this.editBarSpacer_, 'edit-main'); | 396 this.editBarMain_ = util.createChild(this.editBarSpacer_, 'edit-main'); |
| 408 | 397 |
| 409 /** | 398 /** |
| 410 * @type {!HTMLElement} | 399 * @type {!HTMLElement} |
| (...skipping 1459 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1870 var event = assertInstanceof(event, MouseEvent); | 1859 var event = assertInstanceof(event, MouseEvent); |
| 1871 var viewport = this.slideMode_.getViewport(); | 1860 var viewport = this.slideMode_.getViewport(); |
| 1872 if (!this.enabled_ || !viewport.isZoomed()) | 1861 if (!this.enabled_ || !viewport.isZoomed()) |
| 1873 return; | 1862 return; |
| 1874 this.stopOperation(); | 1863 this.stopOperation(); |
| 1875 viewport.setOffset( | 1864 viewport.setOffset( |
| 1876 viewport.getOffsetX() + event.wheelDeltaX, | 1865 viewport.getOffsetX() + event.wheelDeltaX, |
| 1877 viewport.getOffsetY() + event.wheelDeltaY); | 1866 viewport.getOffsetY() + event.wheelDeltaY); |
| 1878 this.slideMode_.applyViewportChange(); | 1867 this.slideMode_.applyViewportChange(); |
| 1879 }; | 1868 }; |
| OLD | NEW |