Index: remoting/webapp/crd/js/host_list.js |
diff --git a/remoting/webapp/crd/js/host_list.js b/remoting/webapp/crd/js/host_list.js |
index 4221115d3e33e8c1cb040800b29e43b435eddef6..5096998bd3f29e018fcf7a7ba044f3d259e7a1e8 100644 |
--- a/remoting/webapp/crd/js/host_list.js |
+++ b/remoting/webapp/crd/js/host_list.js |
@@ -72,15 +72,13 @@ remoting.HostList = function(table, noHosts, errorMsg, errorButton, |
*/ |
this.lastError_ = ''; |
/** |
- * @type {remoting.Host?} |
+ * @type {remoting.LocalHostSection} |
* @private |
*/ |
- this.localHost_ = null; |
- /** |
- * @type {remoting.HostController.State} |
- * @private |
- */ |
- this.localHostState_ = remoting.HostController.State.UNKNOWN; |
+ this.localHostSection_ = new remoting.LocalHostSection( |
+ /** @type {HTMLElement} */ (document.querySelector('.daemon-control')), |
+ new remoting.LocalHostSection.Controller( |
+ this, new remoting.HostSetupDialog(remoting.hostController))); |
/** |
* @type {number} |
@@ -98,7 +96,7 @@ remoting.HostList = function(table, noHosts, errorMsg, errorButton, |
function refresh(event) { |
event.preventDefault(); |
that.refresh(that.display.bind(that)); |
- }; |
+ } |
reloadButton.addEventListener('click', refresh, false); |
}; |
@@ -258,40 +256,22 @@ remoting.HostList.prototype.display = function() { |
// not the local host (which is displayed separately). NB: if the host has |
// never sent a heartbeat, then there will be no jabberId. |
if (host.hostName && host.hostId && host.status && host.publicKey && |
- (!this.localHost_ || host.hostId != this.localHost_.hostId)) { |
+ (host.hostId != this.localHostSection_.getHostId())) { |
var hostTableEntry = new remoting.HostTableEntry( |
- host, this.webappMajorVersion_, |
- this.renameHost_.bind(this), this.deleteHost_.bind(this)); |
- hostTableEntry.createDom(); |
+ this.webappMajorVersion_, |
+ remoting.connectMe2Me, |
+ this.renameHost.bind(this), |
+ this.deleteHost_.bind(this)); |
+ hostTableEntry.setHost(host); |
this.hostTableEntries_[i] = hostTableEntry; |
- this.table_.appendChild(hostTableEntry.tableRow); |
+ this.table_.appendChild(hostTableEntry.element()); |
} |
} |
} |
this.errorMsg_.parentNode.hidden = (this.lastError_ == ''); |
- |
- // The local host cannot be stopped or started if the host controller is not |
- // implemented for this platform. Additionally, it cannot be started if there |
- // is an error (in many error states, the start operation will fail anyway, |
- // but even if it succeeds, the chance of a related but hard-to-diagnose |
- // future error is high). |
- var state = this.localHostState_; |
- var enabled = (state == remoting.HostController.State.STARTING) || |
- (state == remoting.HostController.State.STARTED); |
- var canChangeLocalHostState = |
- (state != remoting.HostController.State.NOT_IMPLEMENTED) && |
- (state != remoting.HostController.State.UNKNOWN) && |
- (state != remoting.HostController.State.NOT_INSTALLED || |
- remoting.isMe2MeInstallable()) && |
- (enabled || this.lastError_ == ''); |
- |
- remoting.updateModalUi(enabled ? 'enabled' : 'disabled', 'data-daemon-state'); |
- var element = document.getElementById('daemon-control'); |
- element.hidden = !canChangeLocalHostState; |
- |
if (noHostsRegistered) { |
- this.showHostListEmptyMessage_(canChangeLocalHostState); |
+ this.showHostListEmptyMessage_(this.localHostSection_.canChangeState()); |
} |
}; |
@@ -337,7 +317,7 @@ remoting.HostList.prototype.showHostListEmptyMessage_ = function( |
* @private |
*/ |
remoting.HostList.prototype.deleteHost_ = function(hostTableEntry) { |
- this.table_.removeChild(hostTableEntry.tableRow); |
+ this.table_.removeChild(hostTableEntry.element()); |
var index = this.hostTableEntries_.indexOf(hostTableEntry); |
if (index != -1) { |
this.hostTableEntries_.splice(index, 1); |
@@ -349,9 +329,8 @@ remoting.HostList.prototype.deleteHost_ = function(hostTableEntry) { |
* Prepare a host for renaming by replacing its name with an edit box. |
* @param {remoting.HostTableEntry} hostTableEntry The host to be renamed. |
* @return {void} Nothing. |
- * @private |
*/ |
-remoting.HostList.prototype.renameHost_ = function(hostTableEntry) { |
+remoting.HostList.prototype.renameHost = function(hostTableEntry) { |
for (var i = 0; i < this.hosts_.length; ++i) { |
if (this.hosts_[i].hostId == hostTableEntry.host.hostId) { |
this.hosts_[i].hostName = hostTableEntry.host.hostName; |
@@ -377,24 +356,6 @@ remoting.HostList.unregisterHostById = function(hostId) { |
}; |
/** |
- * Set tool-tips for the 'connect' action. We can't just set this on the |
- * parent element because the button has no tool-tip, and therefore would |
- * inherit connectStr. |
- * |
- * @return {void} Nothing. |
- * @private |
- */ |
-remoting.HostList.prototype.setTooltips_ = function() { |
- var connectStr = ''; |
- if (this.localHost_) { |
- chrome.i18n.getMessage(/*i18n-content*/'TOOLTIP_CONNECT', |
- this.localHost_.hostName); |
- } |
- document.getElementById('this-host-name').title = connectStr; |
- document.getElementById('this-host-icon').title = connectStr; |
-}; |
- |
-/** |
* Set the state of the local host and localHostId if any. |
* |
* @param {remoting.HostController.State} state State of the local host. |
@@ -402,48 +363,9 @@ remoting.HostList.prototype.setTooltips_ = function() { |
* @return {void} Nothing. |
*/ |
remoting.HostList.prototype.setLocalHostStateAndId = function(state, hostId) { |
- this.localHostState_ = state; |
- this.setLocalHost_(hostId ? this.getHostForId(hostId) : null); |
-} |
- |
-/** |
- * Set the host object that corresponds to the local computer, if any. |
- * |
- * @param {remoting.Host?} host The host, or null if not registered. |
- * @return {void} Nothing. |
- * @private |
- */ |
-remoting.HostList.prototype.setLocalHost_ = function(host) { |
- this.localHost_ = host; |
- this.setTooltips_(); |
- /** @type {remoting.HostList} */ |
- var that = this; |
- if (host) { |
- /** @param {remoting.HostTableEntry} host */ |
- var renameHost = function(host) { |
- that.renameHost_(host); |
- that.setTooltips_(); |
- }; |
- if (!this.localHostTableEntry_) { |
- /** @type {remoting.HostTableEntry} @private */ |
- this.localHostTableEntry_ = new remoting.HostTableEntry( |
- host, this.webappMajorVersion_, renameHost); |
- this.localHostTableEntry_.init( |
- document.getElementById('this-host-connect'), |
- document.getElementById('this-host-warning'), |
- document.getElementById('this-host-name'), |
- document.getElementById('this-host-rename')); |
- } else { |
- // TODO(jamiewalch): This is hack to prevent multiple click handlers being |
- // registered for the same DOM elements if this method is called more than |
- // once. A better solution would be to let HostTable create the daemon row |
- // like it creates the rows for non-local hosts. |
- this.localHostTableEntry_.host = host; |
- } |
- } else { |
- this.localHostTableEntry_ = null; |
- } |
-} |
+ var host = hostId ? this.getHostForId(hostId) : null; |
+ this.localHostSection_.setModel(host, state, this.lastError_ !== ''); |
+}; |
/** |
* Called by the HostControlled after the local host has been started. |
@@ -471,7 +393,9 @@ remoting.HostList.prototype.onLocalHostStarted = function( |
localHost.status = 'ONLINE'; |
this.hosts_.push(localHost); |
this.save_(); |
- this.setLocalHost_(localHost); |
+ this.localHostSection_.setModel(localHost, |
+ remoting.HostController.State.STARTED, |
+ this.lastError_ !== ''); |
}; |
/** |