blob: 6101874cde42808566955d7ad14d02f1a27fb858 [file] [log] [blame]
// 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.
/**
* @fileoverview Oobe network screen implementation.
*/
login.createScreen('NetworkScreen', 'connect', function() {
return {
EXTERNAL_API: [
'enableContinueButton',
'setTimezone',
'showError'
],
/**
* Dropdown element for networks selection.
*/
dropdown_: null,
/** @override */
decorate: function() {
Oobe.setupSelect($('language-select'),
loadTimeData.getValue('languageList'),
'networkOnLanguageChanged');
Oobe.setupSelect($('keyboard-select'),
loadTimeData.getValue('inputMethodsList'),
'networkOnInputMethodChanged');
Oobe.setupSelect($('timezone-select'),
loadTimeData.getValue('timezoneList'),
'networkOnTimezoneChanged');
this.dropdown_ = $('networks-list');
cr.ui.DropDown.decorate(this.dropdown_);
},
onBeforeShow: function(data) {
cr.ui.DropDown.show('networks-list', true, -1);
},
onBeforeHide: function() {
cr.ui.DropDown.hide('networks-list');
this.enableContinueButton(false);
},
/**
* Header text of the screen.
* @type {string}
*/
get header() {
return loadTimeData.getString('networkScreenTitle');
},
/**
* Buttons in oobe wizard's button strip.
* @type {array} Array of Buttons.
*/
get buttons() {
var buttons = [];
var continueButton = this.ownerDocument.createElement('button');
continueButton.disabled = true;
continueButton.id = 'continue-button';
continueButton.textContent = loadTimeData.getString('continueButton');
continueButton.classList.add('preserve-disabled-state');
continueButton.addEventListener('click', function(e) {
chrome.send('networkOnExit');
e.stopPropagation();
});
buttons.push(continueButton);
return buttons;
},
/**
* Returns a control which should receive an initial focus.
*/
get defaultControl() {
return $('language-select');
},
/**
* Enables/disables continue button.
* @param {boolean} enable Should the button be enabled?
*/
enableContinueButton: function(enable) {
$('continue-button').disabled = !enable;
},
/**
* Sets the current timezone.
* @param {string} timezoneId The timezone ID to select.
*/
setTimezone: function(timezoneId) {
$('timezone-select').value = timezoneId;
},
/**
* Shows the network error message.
* @param {string} message Message to be shown.
*/
showError: function(message) {
var error = document.createElement('div');
var messageDiv = document.createElement('div');
messageDiv.className = 'error-message-bubble';
messageDiv.textContent = message;
error.appendChild(messageDiv);
$('bubble').showContentForElement($('networks-list'),
cr.ui.Bubble.Attachment.BOTTOM,
error);
}
};
});