Skip to content

Commit b5138af

Browse files
committed
ActivityService
1 parent 87f4150 commit b5138af

12 files changed

Lines changed: 62 additions & 26 deletions

File tree

src/vs/workbench/browser/parts/activitybar/activitybarPart.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { Registry } from 'vs/platform/registry/common/platform';
1717
import { Part } from 'vs/workbench/browser/part';
1818
import { GlobalActivityActionItem, GlobalActivityAction, ViewletActivityAction, ToggleViewletAction } from 'vs/workbench/browser/parts/activitybar/activitybarActions';
1919
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
20-
import { IActivityBarService, IBadge } from 'vs/workbench/services/activity/common/activityBarService';
20+
import { IBadge } from 'vs/workbench/services/activity/common/activity';
2121
import { IPartService, Position as SideBarPosition } from 'vs/workbench/services/part/common/partService';
2222
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
2323
import { IExtensionService } from 'vs/platform/extensions/common/extensions';
@@ -32,7 +32,7 @@ import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
3232
import { CompositeBar } from 'vs/workbench/browser/parts/compositebar/compositeBar';
3333
import { ToggleCompositePinnedAction } from 'vs/workbench/browser/parts/compositebar/compositeBarActions';
3434

35-
export class ActivitybarPart extends Part implements IActivityBarService {
35+
export class ActivitybarPart extends Part {
3636

3737
private static readonly PINNED_VIEWLETS = 'workbench.activity.pinnedViewlets';
3838

src/vs/workbench/browser/parts/compositebar/compositeBar.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import * as dom from 'vs/base/browser/dom';
1212
import * as arrays from 'vs/base/common/arrays';
1313
import { Dimension } from 'vs/base/browser/builder';
1414
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
15-
import { IBadge } from 'vs/workbench/services/activity/common/activityBarService';
15+
import { IBadge } from 'vs/workbench/services/activity/common/activity';
1616
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
1717
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1818
import { ActionBar, IActionItem, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar';

src/vs/workbench/browser/parts/compositebar/compositeBarActions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
1515
import { dispose } from 'vs/base/common/lifecycle';
1616
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
1717
import { IThemeService, ITheme } from 'vs/platform/theme/common/themeService';
18-
import { TextBadge, NumberBadge, IBadge, IconBadge, ProgressBadge } from 'vs/workbench/services/activity/common/activityBarService';
18+
import { TextBadge, NumberBadge, IBadge, IconBadge, ProgressBadge } from 'vs/workbench/services/activity/common/activity';
1919
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
2020
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
2121
import { ACTIVITY_BAR_BADGE_FOREGROUND, ACTIVITY_BAR_DRAG_AND_DROP_BACKGROUND, ACTIVITY_BAR_BADGE_BACKGROUND } from 'vs/workbench/common/theme';

src/vs/workbench/browser/parts/panel/panelPart.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,8 @@ import { activeContrastBorder, focusBorder, contrastBorder, editorBackground } f
2929
import { CompositeBar } from 'vs/workbench/browser/parts/compositebar/compositeBar';
3030
import { ToggleCompositePinnedAction } from 'vs/workbench/browser/parts/compositebar/compositeBarActions';
3131
import { StandardMouseEvent } from 'vs/base/browser/mouseEvent';
32-
import { dispose } from 'vs/base/common/lifecycle';
32+
import { dispose, IDisposable } from 'vs/base/common/lifecycle';
33+
import { IBadge } from 'vs/workbench/services/activity/common/activity';
3334

3435
export class PanelPart extends CompositePart<Panel> implements IPanelService {
3536

@@ -137,6 +138,10 @@ export class PanelPart extends CompositePart<Panel> implements IPanelService {
137138
return promise.then(() => this.openComposite(id, focus));
138139
}
139140

141+
public showActivity(panelId: string, badge: IBadge, clazz?: string): IDisposable {
142+
return this.compositeBar.showActivity(panelId, badge, clazz);
143+
}
144+
140145
private getPanel(panelId: string): IPanelIdentifier {
141146
return Registry.as<PanelRegistry>(PanelExtensions.Panels).getPanels().filter(p => p.id === panelId).pop();
142147
}

src/vs/workbench/electron-browser/workbench.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ import { ContextKeyService } from 'vs/platform/contextkey/browser/contextKeyServ
5252
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
5353
import { IKeybindingEditingService, KeybindingsEditingService } from 'vs/workbench/services/keybinding/common/keybindingEditing';
5454
import { ContextKeyExpr, RawContextKey, IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
55-
import { IActivityBarService } from 'vs/workbench/services/activity/common/activityBarService';
55+
import { IActivityService } from 'vs/workbench/services/activity/common/activity';
5656
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
5757
import { ViewletService } from 'vs/workbench/services/viewlet/browser/viewletService';
5858
import { RemoteFileService } from 'vs/workbench/services/files/electron-browser/remoteFileService';
@@ -96,6 +96,7 @@ import { IWorkspaceEditingService } from 'vs/workbench/services/workspace/common
9696
import { WorkspaceEditingService } from 'vs/workbench/services/workspace/node/workspaceEditingService';
9797
import { FileDecorationsService } from 'vs/workbench/services/decorations/browser/decorationsService';
9898
import { IDecorationsService } from 'vs/workbench/services/decorations/browser/decorations';
99+
import { ActivityService } from 'vs/workbench/services/activity/browser/activityService';
99100
import URI from 'vs/base/common/uri';
100101

101102
export const MessagesVisibleContext = new RawContextKey<boolean>('globalMessageVisible', false);
@@ -550,7 +551,8 @@ export class Workbench implements IPartService {
550551
this.activitybarPart = this.instantiationService.createInstance(ActivitybarPart, Identifiers.ACTIVITYBAR_PART);
551552
this.toDispose.push(this.activitybarPart);
552553
this.toShutdown.push(this.activitybarPart);
553-
serviceCollection.set(IActivityBarService, this.activitybarPart);
554+
const activityService = this.instantiationService.createInstance(ActivityService, this.activitybarPart, this.panelPart);
555+
serviceCollection.set(IActivityService, activityService);
554556

555557
// File Service
556558
this.fileService = this.instantiationService.createInstance(RemoteFileService);

src/vs/workbench/parts/extensions/electron-browser/extensionsViewlet.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/edi
4141
import { IEditorGroupService } from 'vs/workbench/services/group/common/groupService';
4242
import { IMessageService, CloseAction } from 'vs/platform/message/common/message';
4343
import Severity from 'vs/base/common/severity';
44-
import { IActivityBarService, ProgressBadge, NumberBadge } from 'vs/workbench/services/activity/common/activityBarService';
44+
import { IActivityService, ProgressBadge, NumberBadge } from 'vs/workbench/services/activity/common/activity';
4545
import { IThemeService } from 'vs/platform/theme/common/themeService';
4646
import { inputForeground, inputBackground, inputBorder } from 'vs/platform/theme/common/colorRegistry';
4747
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
@@ -399,7 +399,7 @@ export class StatusUpdater implements IWorkbenchContribution {
399399
private badgeHandle: IDisposable;
400400

401401
constructor(
402-
@IActivityBarService private activityBarService: IActivityBarService,
402+
@IActivityService private activityService: IActivityService,
403403
@IExtensionsWorkbenchService private extensionsWorkbenchService: IExtensionsWorkbenchService
404404
) {
405405
extensionsWorkbenchService.onChange(this.onServiceChange, this, this.disposables);
@@ -414,14 +414,14 @@ export class StatusUpdater implements IWorkbenchContribution {
414414
dispose(this.badgeHandle);
415415

416416
if (this.extensionsWorkbenchService.local.some(e => e.state === ExtensionState.Installing)) {
417-
this.badgeHandle = this.activityBarService.showActivity(VIEWLET_ID, new ProgressBadge(() => localize('extensions', "Extensions")), 'extensions-badge progress-badge');
417+
this.badgeHandle = this.activityService.showActivity(VIEWLET_ID, new ProgressBadge(() => localize('extensions', "Extensions")), 'extensions-badge progress-badge');
418418
return;
419419
}
420420

421421
const outdated = this.extensionsWorkbenchService.local.reduce((r, e) => r + (e.outdated ? 1 : 0), 0);
422422
if (outdated > 0) {
423423
const badge = new NumberBadge(outdated, n => localize('outdatedExtensions', '{0} Outdated Extensions', n));
424-
this.badgeHandle = this.activityBarService.showActivity(VIEWLET_ID, badge, 'extensions-badge count-badge');
424+
this.badgeHandle = this.activityService.showActivity(VIEWLET_ID, badge, 'extensions-badge count-badge');
425425
}
426426
}
427427

src/vs/workbench/parts/files/common/dirtyFilesTracker.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ import { ILifecycleService } from 'vs/platform/lifecycle/common/lifecycle';
1919
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
2020
import URI from 'vs/base/common/uri';
2121
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
22-
import { IActivityBarService, NumberBadge } from 'vs/workbench/services/activity/common/activityBarService';
22+
import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity';
2323
import { IUntitledEditorService } from 'vs/workbench/services/untitled/common/untitledEditorService';
2424
import arrays = require('vs/base/common/arrays');
2525

@@ -35,7 +35,7 @@ export class DirtyFilesTracker implements IWorkbenchContribution {
3535
@ILifecycleService private lifecycleService: ILifecycleService,
3636
@IEditorGroupService editorGroupService: IEditorGroupService,
3737
@IWorkbenchEditorService private editorService: IWorkbenchEditorService,
38-
@IActivityBarService private activityBarService: IActivityBarService,
38+
@IActivityService private activityService: IActivityService,
3939
@IWindowService private windowService: IWindowService,
4040
@IUntitledEditorService private untitledEditorService: IUntitledEditorService
4141
) {
@@ -141,7 +141,7 @@ export class DirtyFilesTracker implements IWorkbenchContribution {
141141
this.lastDirtyCount = dirtyCount;
142142
dispose(this.badgeHandle);
143143
if (dirtyCount > 0) {
144-
this.badgeHandle = this.activityBarService.showActivity(VIEWLET_ID, new NumberBadge(dirtyCount, num => num === 1 ? nls.localize('dirtyFile', "1 unsaved file") : nls.localize('dirtyFiles', "{0} unsaved files", dirtyCount)), 'explorer-viewlet-label');
144+
this.badgeHandle = this.activityService.showActivity(VIEWLET_ID, new NumberBadge(dirtyCount, num => num === 1 ? nls.localize('dirtyFile', "1 unsaved file") : nls.localize('dirtyFiles', "{0} unsaved files", dirtyCount)), 'explorer-viewlet-label');
145145
}
146146
}
147147

src/vs/workbench/parts/scm/electron-browser/scmActivity.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { IDisposable, dispose, empty as EmptyDisposable, combinedDisposable } fr
1111
import { filterEvent, any as anyEvent } from 'vs/base/common/event';
1212
import { VIEWLET_ID } from 'vs/workbench/parts/scm/common/scm';
1313
import { ISCMService, ISCMRepository } from 'vs/workbench/services/scm/common/scm';
14-
import { IActivityBarService, NumberBadge } from 'vs/workbench/services/activity/common/activityBarService';
14+
import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity';
1515
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
1616
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
1717
import { IStatusbarService, StatusbarAlignment as MainThreadStatusBarAlignment } from 'vs/platform/statusbar/common/statusbar';
@@ -25,7 +25,7 @@ export class StatusUpdater implements IWorkbenchContribution {
2525

2626
constructor(
2727
@ISCMService private scmService: ISCMService,
28-
@IActivityBarService private activityBarService: IActivityBarService
28+
@IActivityService private activityService: IActivityService
2929
) {
3030
this.scmService.onDidAddRepository(this.onDidAddRepository, this, this.disposables);
3131
this.render();
@@ -64,7 +64,7 @@ export class StatusUpdater implements IWorkbenchContribution {
6464

6565
if (count > 0) {
6666
const badge = new NumberBadge(count, num => localize('scmPendingChangesBadge', '{0} pending changes', num));
67-
this.badgeDisposable = this.activityBarService.showActivity(VIEWLET_ID, badge, 'scm-viewlet-label');
67+
this.badgeDisposable = this.activityService.showActivity(VIEWLET_ID, badge, 'scm-viewlet-label');
6868
} else {
6969
this.badgeDisposable = EmptyDisposable;
7070
}

src/vs/workbench/parts/update/electron-browser/update.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import pkg from 'vs/platform/node/package';
1717
import product from 'vs/platform/node/product';
1818
import URI from 'vs/base/common/uri';
1919
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
20-
import { IActivityBarService, NumberBadge } from 'vs/workbench/services/activity/common/activityBarService';
20+
import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity';
2121
import { IInstantiationService, ServicesAccessor } from 'vs/platform/instantiation/common/instantiation';
2222
import { ReleaseNotesInput } from 'vs/workbench/parts/update/electron-browser/releaseNotesInput';
2323
import { IGlobalActivity } from 'vs/workbench/common/activity';
@@ -323,7 +323,7 @@ export class UpdateContribution implements IGlobalActivity {
323323
@IMessageService private messageService: IMessageService,
324324
@IUpdateService private updateService: IUpdateService,
325325
@IWorkbenchEditorService editorService: IWorkbenchEditorService,
326-
@IActivityBarService private activityBarService: IActivityBarService
326+
@IActivityService private activityService: IActivityService
327327
) {
328328
const onUpdateAvailable = isLinux
329329
? mapEvent(updateService.onUpdateAvailable, e => e.version)
@@ -363,7 +363,7 @@ export class UpdateContribution implements IGlobalActivity {
363363

364364
if (isUpdateAvailable) {
365365
const badge = new NumberBadge(1, () => nls.localize('updateIsReady', "New {0} update available.", product.nameShort));
366-
this.badgeDisposable = this.activityBarService.showActivity(this.id, badge);
366+
this.badgeDisposable = this.activityService.showActivity(this.id, badge);
367367
}
368368
}
369369

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
'use strict';
7+
8+
import { IPanelService } from 'vs/workbench/services/panel/common/panelService';
9+
import { ActivitybarPart } from 'vs/workbench/browser/parts/activitybar/activitybarPart';
10+
import { PanelPart } from 'vs/workbench/browser/parts/panel/panelPart';
11+
import { IActivityService, IBadge } from 'vs/workbench/services/activity/common/activity';
12+
import { IDisposable } from 'vs/base/common/lifecycle';
13+
14+
export class ActivityService implements IActivityService {
15+
16+
public _serviceBrand: any;
17+
18+
constructor(
19+
private activitybarPart: ActivitybarPart,
20+
private panelPart: PanelPart,
21+
@IPanelService private panelService: IPanelService
22+
) { }
23+
24+
public showActivity(compositeOrActionId: string, badge: IBadge, clazz?: string): IDisposable {
25+
if (this.panelService.getPanels().filter(p => p.id === compositeOrActionId).length) {
26+
return this.panelPart.showActivity(compositeOrActionId, badge, clazz);
27+
}
28+
29+
return this.activitybarPart.showActivity(compositeOrActionId, badge, clazz);
30+
}
31+
}

0 commit comments

Comments
 (0)