mirror of
https://github.com/Microsoft/vscode
synced 2024-09-19 10:40:41 +00:00
Add badge back to ports view
Part of microsoft/vscode-remote-release#4021
This commit is contained in:
parent
3018240290
commit
58fe1b9dfa
|
@ -5,7 +5,7 @@
|
|||
import * as nls from 'vs/nls';
|
||||
import { Disposable, IDisposable } from 'vs/base/common/lifecycle';
|
||||
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
|
||||
import { Extensions, IViewContainersRegistry, IViewsRegistry, IViewsService, ViewContainerLocation } from 'vs/workbench/common/views';
|
||||
import { Extensions, IViewContainersRegistry, IViewDescriptorService, IViewsRegistry, IViewsService, ViewContainerLocation } from 'vs/workbench/common/views';
|
||||
import { IRemoteExplorerService, makeAddress, mapHasAddressLocalhostOrAllInterfaces, TUNNEL_VIEW_ID } from 'vs/workbench/services/remote/common/remoteExplorerService';
|
||||
import { forwardedPortsViewEnabled, ForwardPortAction, OpenPortInBrowserAction, TunnelPanel, TunnelPanelDescriptor, TunnelViewModel } from 'vs/workbench/contrib/remote/browser/tunnelView';
|
||||
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
|
||||
|
@ -25,17 +25,21 @@ import { RemoteTunnel } from 'vs/platform/remote/common/tunnel';
|
|||
import { Codicon } from 'vs/base/common/codicons';
|
||||
import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
|
||||
import { ViewPaneContainer } from 'vs/workbench/browser/parts/views/viewPaneContainer';
|
||||
import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity';
|
||||
|
||||
export const VIEWLET_ID = 'workbench.view.remote';
|
||||
|
||||
export class ForwardedPortsView extends Disposable implements IWorkbenchContribution {
|
||||
private contextKeyListener?: IDisposable;
|
||||
private _activityBadge?: IDisposable;
|
||||
private entryAccessor: IStatusbarEntryAccessor | undefined;
|
||||
|
||||
constructor(
|
||||
@IContextKeyService private readonly contextKeyService: IContextKeyService,
|
||||
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
|
||||
@IRemoteExplorerService private readonly remoteExplorerService: IRemoteExplorerService,
|
||||
@IViewDescriptorService private readonly viewDescriptorService: IViewDescriptorService,
|
||||
@IActivityService private readonly activityService: IActivityService,
|
||||
@IStatusbarService private readonly statusbarService: IStatusbarService
|
||||
) {
|
||||
super();
|
||||
|
@ -82,18 +86,35 @@ export class ForwardedPortsView extends Disposable implements IWorkbenchContribu
|
|||
const disposable = Registry.as<IViewsRegistry>(Extensions.ViewsRegistry).onViewsRegistered(e => {
|
||||
if (e.find(view => view.views.find(viewDescriptor => viewDescriptor.id === TUNNEL_VIEW_ID))) {
|
||||
this._register(this.remoteExplorerService.tunnelModel.onForwardPort(() => {
|
||||
this.updateActivityBadge();
|
||||
this.updateStatusBar();
|
||||
}));
|
||||
this._register(this.remoteExplorerService.tunnelModel.onClosePort(() => {
|
||||
this.updateActivityBadge();
|
||||
this.updateStatusBar();
|
||||
}));
|
||||
|
||||
this.updateActivityBadge();
|
||||
this.updateStatusBar();
|
||||
disposable.dispose();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private updateActivityBadge() {
|
||||
if (this._activityBadge) {
|
||||
this._activityBadge.dispose();
|
||||
}
|
||||
if (this.remoteExplorerService.tunnelModel.forwarded.size > 0) {
|
||||
const viewContainer = this.viewDescriptorService.getViewContainerByViewId(TUNNEL_VIEW_ID);
|
||||
if (viewContainer) {
|
||||
this._activityBadge = this.activityService.showViewContainerActivity(viewContainer.id, {
|
||||
badge: new NumberBadge(this.remoteExplorerService.tunnelModel.forwarded.size, n => n === 1 ? nls.localize('1forwardedPort', "1 forwarded port") : nls.localize('nForwardedPorts', "{0} forwarded ports", n))
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private updateStatusBar() {
|
||||
if (!this.entryAccessor) {
|
||||
this._register(this.entryAccessor = this.statusbarService.addEntry(this.entry, 'status.forwardedPorts', nls.localize('status.forwardedPorts', "Forwarded Ports"), StatusbarAlignment.LEFT, 40));
|
||||
|
@ -106,15 +127,10 @@ export class ForwardedPortsView extends Disposable implements IWorkbenchContribu
|
|||
let text: string;
|
||||
let tooltip: string;
|
||||
const count = this.remoteExplorerService.tunnelModel.forwarded.size + this.remoteExplorerService.tunnelModel.detected.size;
|
||||
text = `${count}`;
|
||||
if (count === 0) {
|
||||
text = nls.localize('remote.forwardedPorts.statusbarTextNone', "No Ports Forwarded");
|
||||
tooltip = text;
|
||||
tooltip = nls.localize('remote.forwardedPorts.statusbarTextNone', "No Ports Forwarded");
|
||||
} else {
|
||||
if (count === 1) {
|
||||
text = nls.localize('remote.forwardedPorts.statusbarTextSingle', "1 Port Forwarded");
|
||||
} else {
|
||||
text = nls.localize('remote.forwardedPorts.statusbarTextMultiple', "{0} Ports Forwarded", 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', "Forwarded Ports: {0}",
|
||||
|
|
Loading…
Reference in a new issue