From 4d7b05374841dc96f63c3765f03c92cbf0f97d35 Mon Sep 17 00:00:00 2001 From: Alex Ross Date: Mon, 2 Dec 2019 14:18:57 +0100 Subject: [PATCH] Adopt input box for new port --- .../contrib/remote/browser/tunnelView.ts | 52 +++++++++---------- .../remote/common/remoteExplorerService.ts | 16 +++--- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/src/vs/workbench/contrib/remote/browser/tunnelView.ts b/src/vs/workbench/contrib/remote/browser/tunnelView.ts index f62f7647b3d..8e194bd815f 100644 --- a/src/vs/workbench/contrib/remote/browser/tunnelView.ts +++ b/src/vs/workbench/contrib/remote/browser/tunnelView.ts @@ -193,17 +193,21 @@ class TunnelTreeRenderer extends Disposable implements ITreeRenderer { - const quickInputService = accessor.get(IQuickInputService); const remoteExplorerService = accessor.get(IRemoteExplorerService); - let remote: number | undefined = undefined; if (arg instanceof TunnelItem) { - remote = arg.remote; + remoteExplorerService.tunnelModel.forward(arg.remote); } else { - const input = parseInt(await quickInputService.input({ placeHolder: nls.localize('remote.tunnelView.pickRemote', 'Remote port to forward') })); - if (typeof input === 'number') { - remote = input; - } - } - - if (!remote) { - return; - } - - const local: string = await quickInputService.input({ placeHolder: nls.localize('remote.tunnelView.pickLocal', 'Local port to forward to, or leave blank for {0}', remote) }); - if (local === undefined) { - return; - } - const name = await quickInputService.input({ placeHolder: nls.localize('remote.tunnelView.pickName', 'Port name, or leave blank for no name') }); - if (name === undefined) { - return; + remoteExplorerService.setEditable(undefined, { + onFinish: (value, success) => { + if (success) { + remoteExplorerService.tunnelModel.forward(Number(value)); + } + remoteExplorerService.setEditable(undefined, null); + }, + validationMessage: (value) => { + const asNumber = Number(value); + if (isNaN(asNumber) || (asNumber < 0) || (asNumber > 65535)) { + return nls.localize('remote.tunnelsView.portNumberValid', "Port number is invalid"); + } + return null; + }, + placeholder: nls.localize('remote.tunnelsView.forwardPortPlaceholder', "Port number") + }); } - await remoteExplorerService.tunnelModel.forward(remote, (local !== '') ? parseInt(local) : remote, (name !== '') ? name : undefined); }; } } @@ -641,7 +641,7 @@ namespace OpenPortInBrowserAction { const tunnel = model.forwarded.has(arg.remote) ? model.forwarded.get(arg.remote) : model.published.get(arg.remote); let address: string | undefined; if (tunnel && tunnel.localAddress && (address = model.address(tunnel.remote))) { - return openerService.open(URI.parse(address)); + return openerService.open(URI.parse('http://' + address)); } return Promise.resolve(); } diff --git a/src/vs/workbench/services/remote/common/remoteExplorerService.ts b/src/vs/workbench/services/remote/common/remoteExplorerService.ts index f43ba81ec1e..631de089101 100644 --- a/src/vs/workbench/services/remote/common/remoteExplorerService.ts +++ b/src/vs/workbench/services/remote/common/remoteExplorerService.ts @@ -115,9 +115,9 @@ export interface IRemoteExplorerService { targetType: string; readonly helpInformation: HelpInformation[]; readonly tunnelModel: TunnelModel; - onDidChangeEditable: Event; - setEditable(remote: number, data: IEditableData | null): void; - getEditableData(remote: number): IEditableData | undefined; + onDidChangeEditable: Event; + setEditable(remote: number | undefined, data: IEditableData | null): void; + getEditableData(remote: number | undefined): IEditableData | undefined; } export interface HelpInformation { @@ -162,9 +162,9 @@ class RemoteExplorerService implements IRemoteExplorerService { public readonly onDidChangeTargetType: Event = this._onDidChangeTargetType.event; private _helpInformation: HelpInformation[] = []; private _tunnelModel: TunnelModel; - private editable: { remote: number, data: IEditableData } | undefined; - private readonly _onDidChangeEditable: Emitter = new Emitter(); - public readonly onDidChangeEditable: Event = this._onDidChangeEditable.event; + private editable: { remote: number | undefined, data: IEditableData } | undefined; + private readonly _onDidChangeEditable: Emitter = new Emitter(); + public readonly onDidChangeEditable: Event = this._onDidChangeEditable.event; constructor( @IStorageService private readonly storageService: IStorageService, @@ -219,7 +219,7 @@ class RemoteExplorerService implements IRemoteExplorerService { return this._tunnelModel; } - setEditable(remote: number, data: IEditableData | null): void { + setEditable(remote: number | undefined, data: IEditableData | null): void { if (!data) { this.editable = undefined; } else { @@ -228,7 +228,7 @@ class RemoteExplorerService implements IRemoteExplorerService { this._onDidChangeEditable.fire(remote); } - getEditableData(remote: number): IEditableData | undefined { + getEditableData(remote: number | undefined): IEditableData | undefined { return this.editable && this.editable.remote === remote ? this.editable.data : undefined; } } -- GitLab