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.
5 cr.define('options', function() {
7 var Page = cr.ui.pageManager.Page;
8 var PageManager = cr.ui.pageManager.PageManager;
9 var ArrayDataModel = cr.ui.ArrayDataModel;
10 var DeletableItem = options.DeletableItem;
11 var DeletableItemList = options.DeletableItemList;
13 /////////////////////////////////////////////////////////////////////////////
14 // NetworkPreferences class:
17 * Encapsulated handling of ChromeOS network preferences page.
20 function PreferredNetworks(model) {
21 Page.call(this, 'preferredNetworksPage', null, 'preferredNetworksPage');
24 cr.addSingletonGetter(PreferredNetworks);
26 PreferredNetworks.prototype = {
27 __proto__: Page.prototype,
30 initializePage: function() {
31 Page.prototype.initializePage.call(this);
32 PreferredNetworkList.decorate($('remembered-network-list'));
33 $('preferred-networks-confirm').onclick =
34 PageManager.closeOverlay.bind(PageManager);
37 update: function(rememberedNetworks) {
38 var list = $('remembered-network-list');
40 for (var i = 0; i < rememberedNetworks.length; i++) {
41 list.append(rememberedNetworks[i]);
49 * Creates a list entry for a remembered network.
50 * @param {{Name: string, Type: string, servicePath: string}} data
51 * Description of the network.
54 function PreferredNetworkListItem(data) {
55 var el = cr.doc.createElement('div');
56 el.__proto__ = PreferredNetworkListItem.prototype;
59 el.data[key] = data[key];
64 PreferredNetworkListItem.prototype = {
65 __proto__: DeletableItem.prototype,
68 * Description of the network.
69 * @type {{Name: string, Type: string, servicePath: string}}
74 decorate: function() {
75 DeletableItem.prototype.decorate.call(this);
76 var label = this.ownerDocument.createElement('div');
77 label.textContent = this.data.Name;
78 if (this.data.policyManaged)
79 this.deletable = false;
80 this.contentElement.appendChild(label);
85 * Class for displaying a list of preferred networks.
87 * @extends {options.DeletableItemList}
89 var PreferredNetworkList = cr.ui.define('list');
91 PreferredNetworkList.prototype = {
92 __proto__: DeletableItemList.prototype,
95 decorate: function() {
96 DeletableItemList.prototype.decorate.call(this);
97 this.addEventListener('blur', this.onBlur_);
102 * When the list loses focus, unselect all items in the list.
105 onBlur_: function() {
106 this.selectionModel.unselectAll();
110 createItem: function(entry) {
111 return new PreferredNetworkListItem(entry);
115 deleteItemAtIndex: function(index) {
116 var item = this.dataModel.item(index);
118 // Inform the network library that we are forgetting this network.
119 chrome.send('networkCommand',
124 this.dataModel.splice(index, 1);
125 // Invalidate the list since it has a stale cache after a splice
126 // involving a deletion.
132 * Purges all networks from the list.
135 this.dataModel = new ArrayDataModel([]);
140 * Adds a remembered network to the list.
141 * @param {{Name: string, Type: string, servicePath: string}} data
142 * Description of the network.
144 append: function(data) {
145 this.dataModel.push(data);
151 PreferredNetworks: PreferredNetworks