From f380b665b562eeff4fdd4eb5e82346d6b156934a Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Thu, 22 Oct 2020 17:12:48 +0200 Subject: [PATCH] Ports view welcome state shouldn't hide detected ports Also updated the status bar entry for detected ports Fixes microsoft/vscode-remote-release#3876 --- .../contrib/remote/browser/remoteExplorer.ts | 19 +++++++++++++------ .../contrib/remote/browser/tunnelView.ts | 3 ++- .../remote/common/remoteExplorerService.ts | 5 +++-- 3 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/vs/workbench/contrib/remote/browser/remoteExplorer.ts b/src/vs/workbench/contrib/remote/browser/remoteExplorer.ts index 5b7658f65d5..6606f904b46 100644 --- a/src/vs/workbench/contrib/remote/browser/remoteExplorer.ts +++ b/src/vs/workbench/contrib/remote/browser/remoteExplorer.ts @@ -88,15 +88,22 @@ export class ForwardedPortsView extends Disposable implements IWorkbenchContribu private get entry(): IStatusbarEntry { let text: string; - if (this.remoteExplorerService.tunnelModel.forwarded.size === 0) { + let tooltip: string; + const count = this.remoteExplorerService.tunnelModel.forwarded.size + this.remoteExplorerService.tunnelModel.detected.size; + if (count === 0) { text = nls.localize('remote.forwardedPorts.statusbarTextNone', "No Ports Available"); - } else if (this.remoteExplorerService.tunnelModel.forwarded.size === 1) { - text = nls.localize('remote.forwardedPorts.statusbarTextSingle', "1 Port Available"); + tooltip = text; } else { - text = nls.localize('remote.forwardedPorts.statusbarTextMultiple', "{0} Ports Available", this.remoteExplorerService.tunnelModel.forwarded.size); + if (count === 1) { + text = nls.localize('remote.forwardedPorts.statusbarTextSingle', "1 Port Available"); + } else { + text = nls.localize('remote.forwardedPorts.statusbarTextMultiple', "{0} Ports Available", count); + } + const allTunnels = Array.from(this.remoteExplorerService.tunnelModel.forwarded.values()); + allTunnels.push(...Array.from(this.remoteExplorerService.tunnelModel.detected.values())); + tooltip = nls.localize('remote.forwardedPorts.statusbarTooltip', "Available Ports: {0}", + allTunnels.map(forwarded => forwarded.remotePort).join(', ')); } - const tooltip = nls.localize('remote.forwardedPorts.statusbarTooltip', "Available Ports: {0}", - Array.from(this.remoteExplorerService.tunnelModel.forwarded.values()).map(forwarded => forwarded.remotePort).join(', ')); return { text: `$(radio-tower) ${text}`, ariaLabel: tooltip, diff --git a/src/vs/workbench/contrib/remote/browser/tunnelView.ts b/src/vs/workbench/contrib/remote/browser/tunnelView.ts index 5ef37918355..8e9eacbab0e 100644 --- a/src/vs/workbench/contrib/remote/browser/tunnelView.ts +++ b/src/vs/workbench/contrib/remote/browser/tunnelView.ts @@ -589,7 +589,8 @@ export class TunnelPanel extends ViewPane { } shouldShowWelcome(): boolean { - return this.viewModel.forwarded.length === 0 && this.viewModel.candidates.length === 0 && !this.isEditing; + return (this.viewModel.forwarded.length === 0) && (this.viewModel.candidates.length === 0) && + (this.viewModel.detected.length === 0) && !this.isEditing; } focus(): void { diff --git a/src/vs/workbench/services/remote/common/remoteExplorerService.ts b/src/vs/workbench/services/remote/common/remoteExplorerService.ts index 7d2f38f30d0..8b587b11673 100644 --- a/src/vs/workbench/services/remote/common/remoteExplorerService.ts +++ b/src/vs/workbench/services/remote/common/remoteExplorerService.ts @@ -83,8 +83,8 @@ export function mapHasTunnelLocalhostOrAllInterfaces(map: Map, h export class TunnelModel extends Disposable { readonly forwarded: Map; readonly detected: Map; - private _onForwardPort: Emitter = new Emitter(); - public onForwardPort: Event = this._onForwardPort.event; + private _onForwardPort: Emitter = new Emitter(); + public onForwardPort: Event = this._onForwardPort.event; private _onClosePort: Emitter<{ host: string, port: number }> = new Emitter(); public onClosePort: Event<{ host: string, port: number }> = this._onClosePort.event; private _onPortName: Emitter<{ host: string, port: number }> = new Emitter(); @@ -214,6 +214,7 @@ export class TunnelModel extends Disposable { closeable: false }); }); + this._onForwardPort.fire(); } registerCandidateFinder(finder: () => Promise<{ host: string, port: number, detail: string }[]>): void { -- GitLab