1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 cr.define('options', function() { 6 /** @const */ var ListItem = cr.ui.ListItem; 7 /** @const */ var Grid = cr.ui.Grid; 8 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel; 9 10 /** 11 * Creates a new profile icon grid item. 12 * @param {Object} iconURL The profile icon URL. 13 * @constructor 14 * @extends {cr.ui.GridItem} 15 */ 16 function ProfilesIconGridItem(iconURL) { 17 var el = cr.doc.createElement('span'); 18 el.iconURL_ = iconURL; 19 ProfilesIconGridItem.decorate(el); 20 return el; 21 } 22 23 /** 24 * Decorates an element as a profile grid item. 25 * @param {!HTMLElement} el The element to decorate. 26 */ 27 ProfilesIconGridItem.decorate = function(el) { 28 el.__proto__ = ProfilesIconGridItem.prototype; 29 el.decorate(); 30 }; 31 32 ProfilesIconGridItem.prototype = { 33 __proto__: ListItem.prototype, 34 35 /** @override */ 36 decorate: function() { 37 ListItem.prototype.decorate.call(this); 38 var imageEl = cr.doc.createElement('img'); 39 imageEl.className = 'profile-icon'; 40 imageEl.style.content = getProfileAvatarIcon(this.iconURL_); 41 this.appendChild(imageEl); 42 43 this.className = 'profile-icon-grid-item'; 44 }, 45 }; 46 47 var ProfilesIconGrid = cr.ui.define('grid'); 48 49 ProfilesIconGrid.prototype = { 50 __proto__: Grid.prototype, 51 52 /** @override */ 53 decorate: function() { 54 Grid.prototype.decorate.call(this); 55 this.selectionModel = new ListSingleSelectionModel(); 56 }, 57 58 /** @override */ 59 createItem: function(iconURL) { 60 return new ProfilesIconGridItem(iconURL); 61 }, 62 }; 63 64 return { 65 ProfilesIconGrid: ProfilesIconGrid 66 }; 67 }); 68