• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5cr.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