| Index: remoting/webapp/me2mom/host_list.js
|
| diff --git a/remoting/webapp/me2mom/host_list.js b/remoting/webapp/me2mom/host_list.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d84d73edf7d8119dc0348e45707d700abea0e109
|
| --- /dev/null
|
| +++ b/remoting/webapp/me2mom/host_list.js
|
| @@ -0,0 +1,139 @@
|
| +// Copyright (c) 2011 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
|
| + * Class representing the host-list portion of the home screen UI.
|
| + */
|
| +
|
| +'use strict';
|
| +
|
| +/** @suppress {duplicate} */
|
| +var remoting = remoting || {};
|
| +
|
| +/**
|
| + * @constructor
|
| + */
|
| +remoting.Host = function() {
|
| + /** @type {string} */
|
| + this.hostName = '';
|
| + /** @type {string} */
|
| + this.hostId = '';
|
| + /** @type {string} */
|
| + this.status = '';
|
| + /** @type {string} */
|
| + this.jabberId = '';
|
| + /** @type {string} */
|
| + this.publicKey = '';
|
| +}
|
| +
|
| +
|
| +/**
|
| + * @constructor
|
| + * @param {Element} table The HTML <table> to contain host-list.
|
| + * @param {Element} errorDiv The HTML <div> to display error messages.
|
| + */
|
| +remoting.HostList = function(table, errorDiv) {
|
| + this.table = table;
|
| + this.errorDiv = errorDiv;
|
| + /** @type {Array.<remoting.Host>} */
|
| + this.hosts = null;
|
| +}
|
| +
|
| +/**
|
| + * Refresh the host list with up-to-date details.
|
| + * @param {Array.<remoting.Host>} hosts The new host list.
|
| + * @return {void} Nothing.
|
| + */
|
| +remoting.HostList.prototype.update = function(hosts) {
|
| + this.table.innerHTML = '';
|
| + this.showError(null);
|
| + this.hosts = hosts;
|
| +
|
| + for (var i = 0; i < hosts.length; ++i) {
|
| + var host = hosts[i];
|
| + if (!host.hostName || !host.hostId || !host.status || !host.jabberId ||
|
| + !host.publicKey)
|
| + continue;
|
| +
|
| + var hostEntry = document.createElement('tr');
|
| + addClass(hostEntry, 'host-list-row');
|
| +
|
| + var hostIcon = document.createElement('td');
|
| + var hostIconImage = document.createElement('img');
|
| + hostIconImage.src = 'icon_host.png';
|
| + hostIcon.className = 'host-list-row-start';
|
| + hostIcon.appendChild(hostIconImage);
|
| + hostEntry.appendChild(hostIcon);
|
| +
|
| + var hostName = document.createElement('td');
|
| + hostName.setAttribute('class', 'mode-select-label');
|
| + hostName.appendChild(document.createTextNode(host.hostName));
|
| + hostEntry.appendChild(hostName);
|
| +
|
| + var hostStatus = document.createElement('td');
|
| + if (host.status == 'ONLINE') {
|
| + var connectButton = document.createElement('button');
|
| + connectButton.setAttribute('class', 'mode-select-button');
|
| + connectButton.setAttribute('type', 'button');
|
| + connectButton.setAttribute('onclick',
|
| + 'remoting.connectHost("'+host.hostId+'")');
|
| + connectButton.innerHTML =
|
| + chrome.i18n.getMessage(/*i18n-content*/'CONNECT_BUTTON');
|
| + hostStatus.appendChild(connectButton);
|
| + } else {
|
| + addClass(hostEntry, 'host-offline');
|
| + hostStatus.innerHTML = chrome.i18n.getMessage(/*i18n-content*/'OFFLINE');
|
| + }
|
| + hostStatus.className = 'host-list-row-end';
|
| + hostEntry.appendChild(hostStatus);
|
| +
|
| + this.table.appendChild(hostEntry);
|
| + }
|
| +
|
| + this.showOrHide_(this.hosts.length != 0);
|
| +}
|
| +
|
| +/**
|
| + * Display a localized error message.
|
| + * @param {remoting.Error?} errorTag The error to display, or NULL to clear any
|
| + * previous error.
|
| + * @return {void} Nothing.
|
| + */
|
| +remoting.HostList.prototype.showError = function(errorTag) {
|
| + this.table.innerHTML = '';
|
| + if (errorTag) {
|
| + l10n.localizeElementFromTag(this.errorDiv,
|
| + /** @type {string} */ (errorTag));
|
| + this.showOrHide_(true);
|
| + } else {
|
| + this.errorDiv.innerText = '';
|
| + }
|
| +}
|
| +
|
| +/**
|
| + * Show or hide the host-list UI.
|
| + * @param {boolean} show True to show the UI, or false to hide it.
|
| + * @return {void} Nothing.
|
| + * @private
|
| + */
|
| +remoting.HostList.prototype.showOrHide_ = function(show) {
|
| + var parent = /** @type {Element} */ (this.table.parentNode);
|
| + parent.hidden = !show;
|
| + if (show) {
|
| + parent.style.height = parent.scrollHeight + 'px';
|
| + removeClass(parent, remoting.HostList.COLLAPSED_);
|
| + } else {
|
| + addClass(parent, remoting.HostList.COLLAPSED_);
|
| + }
|
| +}
|
| +
|
| +/**
|
| + * Class name for the host list when it is collapsed.
|
| + * @private
|
| + */
|
| +remoting.HostList.COLLAPSED_ = 'collapsed';
|
| +
|
| +/** @type {remoting.HostList} */
|
| +remoting.hostList = null;
|
|
|