提交 f380b665 编写于 作者: A Alex Ross

Ports view welcome state shouldn't hide detected ports

Also updated the status bar entry for detected ports
Fixes microsoft/vscode-remote-release#3876
上级 292a4d13
......@@ -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,
......
......@@ -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 {
......
......@@ -83,8 +83,8 @@ export function mapHasTunnelLocalhostOrAllInterfaces(map: Map<string, Tunnel>, h
export class TunnelModel extends Disposable {
readonly forwarded: Map<string, Tunnel>;
readonly detected: Map<string, Tunnel>;
private _onForwardPort: Emitter<Tunnel> = new Emitter();
public onForwardPort: Event<Tunnel> = this._onForwardPort.event;
private _onForwardPort: Emitter<Tunnel | void> = new Emitter();
public onForwardPort: Event<Tunnel | void> = 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 {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册