1 // Copyright 2013 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.
5 cr.define('options.managedUserOptions', function() {
6 /** @const */ var List = cr.ui.List;
7 /** @const */ var ListItem = cr.ui.ListItem;
8 /** @const */ var ListSingleSelectionModel = cr.ui.ListSingleSelectionModel;
11 * Create a new managed user list item.
12 * @param {Object} entry The managed user this item represents.
13 * It has the following form:
15 * id: "Managed User ID",
16 * name: "Managed User Name",
17 * iconURL: "chrome://path/to/icon/image",
18 * onCurrentDevice: true or false,
19 * needAvatar: true or false
22 * @extends {cr.ui.ListItem}
24 function ManagedUserListItem(entry) {
25 var el = cr.doc.createElement('div');
26 el.managedUser_ = entry;
27 el.__proto__ = ManagedUserListItem.prototype;
32 ManagedUserListItem.prototype = {
33 __proto__: ListItem.prototype,
36 * @type {string} the ID of this managed user list item.
39 return this.managedUser_.id;
43 * @type {string} the name of this managed user list item.
46 return this.managedUser_.name;
50 * @type {string} the path to the avatar icon of this managed
54 return this.managedUser_.iconURL;
58 decorate: function() {
59 ListItem.prototype.decorate.call(this);
60 var managedUser = this.managedUser_;
63 var iconElement = this.ownerDocument.createElement('img');
64 iconElement.className = 'profile-img';
65 iconElement.style.content = getProfileAvatarIcon(managedUser.iconURL);
66 this.appendChild(iconElement);
68 // Add the profile name.
69 var nameElement = this.ownerDocument.createElement('div');
70 nameElement.className = 'profile-name';
71 nameElement.textContent = managedUser.name;
72 this.appendChild(nameElement);
74 if (managedUser.onCurrentDevice) {
75 iconElement.className += ' profile-img-disabled';
76 nameElement.className += ' profile-name-disabled';
78 // Add "(already on this device)" message.
79 var alreadyOnDeviceElement = this.ownerDocument.createElement('div');
80 alreadyOnDeviceElement.className =
81 'profile-name-disabled already-on-this-device';
82 alreadyOnDeviceElement.textContent =
83 loadTimeData.getString('managedUserAlreadyOnThisDevice');
84 this.appendChild(alreadyOnDeviceElement);
90 * Create a new managed users list.
92 * @extends {cr.ui.List}
94 var ManagedUserList = cr.ui.define('list');
96 ManagedUserList.prototype = {
97 __proto__: List.prototype,
100 createItem: function(entry) {
101 return new ManagedUserListItem(entry);
105 decorate: function() {
106 List.prototype.decorate.call(this);
107 this.selectionModel = new ListSingleSelectionModel();
108 this.autoExpands = true;
113 ManagedUserListItem: ManagedUserListItem,
114 ManagedUserList: ManagedUserList,