Show detected ports and add input box

This commit is contained in:
Alex Ross
2021-02-18 13:07:45 +01:00
parent d5d0bf7b07
commit 9e6e47cea1
2 changed files with 142 additions and 61 deletions

View File

@@ -52,6 +52,13 @@ export interface ITunnelItem {
readonly label: string;
}
export enum TunnelEditId {
None = 0,
New = 1,
Label = 2,
LocalPort = 3
}
export interface Tunnel {
remoteHost: string;
remotePort: number;
@@ -545,9 +552,9 @@ export interface IRemoteExplorerService {
onDidChangeTargetType: Event<string[]>;
targetType: string[];
readonly tunnelModel: TunnelModel;
onDidChangeEditable: Event<ITunnelItem | undefined>;
setEditable(tunnelItem: ITunnelItem | undefined, data: IEditableData | null): void;
getEditableData(tunnelItem: ITunnelItem | undefined): IEditableData | undefined;
onDidChangeEditable: Event<{ tunnel: ITunnelItem, editId: TunnelEditId } | undefined>;
setEditable(tunnelItem: ITunnelItem | undefined, editId: TunnelEditId, data: IEditableData | null): void;
getEditableData(tunnelItem: ITunnelItem | undefined, editId?: TunnelEditId): IEditableData | undefined;
forward(remote: { host: string, port: number }, localPort?: number, name?: string, source?: string, elevateIfNeeded?: boolean, isPublic?: boolean, restore?: boolean): Promise<RemoteTunnel | void>;
close(remote: { host: string, port: number }): Promise<void>;
setTunnelInformation(tunnelInformation: TunnelInformation | undefined): void;
@@ -566,9 +573,9 @@ class RemoteExplorerService implements IRemoteExplorerService {
private readonly _onDidChangeTargetType: Emitter<string[]> = new Emitter<string[]>();
public readonly onDidChangeTargetType: Event<string[]> = this._onDidChangeTargetType.event;
private _tunnelModel: TunnelModel;
private _editable: { tunnelItem: ITunnelItem | undefined, data: IEditableData } | undefined;
private readonly _onDidChangeEditable: Emitter<ITunnelItem | undefined> = new Emitter();
public readonly onDidChangeEditable: Event<ITunnelItem | undefined> = this._onDidChangeEditable.event;
private _editable: { tunnelItem: ITunnelItem | undefined, editId: TunnelEditId, data: IEditableData } | undefined;
private readonly _onDidChangeEditable: Emitter<{ tunnel: ITunnelItem, editId: TunnelEditId } | undefined> = new Emitter();
public readonly onDidChangeEditable: Event<{ tunnel: ITunnelItem, editId: TunnelEditId } | undefined> = this._onDidChangeEditable.event;
private readonly _onEnabledPortsFeatures: Emitter<void> = new Emitter();
public readonly onEnabledPortsFeatures: Event<void> = this._onEnabledPortsFeatures.event;
private _portsFeaturesEnabled: boolean = false;
@@ -616,19 +623,20 @@ class RemoteExplorerService implements IRemoteExplorerService {
this.tunnelModel.addEnvironmentTunnels(tunnelInformation?.environmentTunnels);
}
setEditable(tunnelItem: ITunnelItem | undefined, data: IEditableData | null): void {
setEditable(tunnelItem: ITunnelItem | undefined, editId: TunnelEditId, data: IEditableData | null): void {
if (!data) {
this._editable = undefined;
} else {
this._editable = { tunnelItem, data };
this._editable = { tunnelItem, data, editId };
}
this._onDidChangeEditable.fire(tunnelItem);
this._onDidChangeEditable.fire(tunnelItem ? { tunnel: tunnelItem, editId } : undefined);
}
getEditableData(tunnelItem: ITunnelItem | undefined): IEditableData | undefined {
getEditableData(tunnelItem: ITunnelItem | undefined, editId: TunnelEditId): IEditableData | undefined {
return (this._editable &&
((!tunnelItem && (tunnelItem === this._editable.tunnelItem)) ||
(tunnelItem && (this._editable.tunnelItem?.remotePort === tunnelItem.remotePort) && (this._editable.tunnelItem.remoteHost === tunnelItem.remoteHost)))) ?
(tunnelItem && (this._editable.tunnelItem?.remotePort === tunnelItem.remotePort) && (this._editable.tunnelItem.remoteHost === tunnelItem.remoteHost)
&& (this._editable.editId === editId)))) ?
this._editable.data : undefined;
}