// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. cr.define('options', function() { /** @const */ var ArrayDataModel = cr.ui.ArrayDataModel; /** @const */ var OptionsPage = options.OptionsPage; /** * This class is an overlay which allows the user to add or remove media * galleries, and displays known media galleries. * @constructor * @extends {OptionsPage} */ function MediaGalleriesManager() { OptionsPage.call(this, 'manageGalleries', loadTimeData.getString('manageMediaGalleriesTabTitle'), 'manage-media-galleries-overlay'); } cr.addSingletonGetter(MediaGalleriesManager); MediaGalleriesManager.prototype = { __proto__: OptionsPage.prototype, /** * Decorate the overlay and set up event handlers. */ initializePage: function() { OptionsPage.prototype.initializePage.call(this); this.availableGalleriesList_ = $('available-galleries-list'); options.MediaGalleriesList.decorate(this.availableGalleriesList_); $('new-media-gallery').addEventListener('click', function() { chrome.send('addNewGallery'); }); $('manage-media-confirm').addEventListener( 'click', OptionsPage.closeOverlay.bind(OptionsPage)); this.addEventListener('visibleChange', this.handleVisibleChange_); }, /** * TODO(dbeam): why is a private method being overridden? * @override * @private */ handleVisibleChange_: function() { if (!this.visible) return; if (this.availableGalleriesList_) this.availableGalleriesList_.redraw(); }, /** * @param {Array} galleries List of structs describibing galleries. * @private */ setAvailableMediaGalleries_: function(galleries) { $('available-galleries-list').dataModel = new ArrayDataModel(galleries); // TODO(estade): show this section by default. $('media-galleries-section').hidden = false; }, }, // Forward public APIs to private implementations. [ 'setAvailableMediaGalleries', ].forEach(function(name) { MediaGalleriesManager[name] = function() { var instance = MediaGalleriesManager.getInstance(); return instance[name + '_'].apply(instance, arguments); }; }); // Export return { MediaGalleriesManager: MediaGalleriesManager }; });