Skip to content

Commit 281bfeb

Browse files
committed
activityService: move pin methods to composite bar
1 parent fcd266b commit 281bfeb

5 files changed

Lines changed: 57 additions & 72 deletions

File tree

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

Lines changed: 0 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,9 @@
66
'use strict';
77

88
import 'vs/css!./media/activityaction';
9-
import nls = require('vs/nls');
109
import DOM = require('vs/base/browser/dom');
1110
import { TPromise } from 'vs/base/common/winjs.base';
1211
import { Action } from 'vs/base/common/actions';
13-
import { IActivityBarService } from 'vs/workbench/services/activity/common/activityBarService';
1412
import { IContextMenuService } from 'vs/platform/contextview/browser/contextView';
1513
import { ViewletDescriptor } from 'vs/workbench/browser/viewlet';
1614
import { IActivity, IGlobalActivity } from 'vs/workbench/common/activity';
@@ -85,30 +83,6 @@ export class ToggleViewletAction extends Action {
8583
}
8684
}
8785

88-
export class ToggleViewletPinnedAction extends Action {
89-
90-
constructor(
91-
private activity: IActivity,
92-
@IActivityBarService private activityBarService: IActivityBarService
93-
) {
94-
super('activitybar.show.toggleViewletPinned', activity ? activity.name : nls.localize('toggle', "Toggle View Pinned"));
95-
96-
this.checked = this.activity && this.activityBarService.isPinned(this.activity.id);
97-
}
98-
99-
public run(context: string): TPromise<any> {
100-
const id = this.activity ? this.activity.id : context;
101-
102-
if (this.activityBarService.isPinned(id)) {
103-
this.activityBarService.unpin(id);
104-
} else {
105-
this.activityBarService.pin(id);
106-
}
107-
108-
return TPromise.as(true);
109-
}
110-
}
111-
11286
export class GlobalActivityAction extends ActivityAction {
11387

11488
constructor(activity: IGlobalActivity) {

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

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { ActionsOrientation, ActionBar, Separator } from 'vs/base/browser/ui/act
1515
import { GlobalActivityExtensions, IGlobalActivityRegistry } from 'vs/workbench/common/activity';
1616
import { Registry } from 'vs/platform/registry/common/platform';
1717
import { Part } from 'vs/workbench/browser/part';
18-
import { ToggleViewletPinnedAction, GlobalActivityActionItem, GlobalActivityAction, ViewletActivityAction, ToggleViewletAction } from 'vs/workbench/browser/parts/activitybar/activitybarActions';
18+
import { GlobalActivityActionItem, GlobalActivityAction, ViewletActivityAction, ToggleViewletAction } from 'vs/workbench/browser/parts/activitybar/activitybarActions';
1919
import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
2020
import { IActivityBarService, IBadge } from 'vs/workbench/services/activity/common/activityBarService';
2121
import { IPartService, Position as SideBarPosition } from 'vs/workbench/services/part/common/partService';
@@ -30,6 +30,7 @@ import { IThemeService } from 'vs/platform/theme/common/themeService';
3030
import { ACTIVITY_BAR_BACKGROUND, ACTIVITY_BAR_BORDER } from 'vs/workbench/common/theme';
3131
import { contrastBorder } from 'vs/platform/theme/common/colorRegistry';
3232
import { CompositeBar } from 'vs/workbench/browser/parts/compositebar/compositeBar';
33+
import { ToggleCompositePinnedAction } from 'vs/workbench/browser/parts/compositebar/compositeBarActions';
3334

3435
export class ActivitybarPart extends Part implements IActivityBarService {
3536

@@ -66,7 +67,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
6667
getCompositeSize: (compositeId: string) => ActivitybarPart.ACTIVITY_ACTION_HEIGHT,
6768
openComposite: (compositeId: string) => this.viewletService.openViewlet(compositeId, true),
6869
getActivityAction: (compositeId: string) => this.instantiationService.createInstance(ViewletActivityAction, this.viewletService.getViewlet(compositeId)),
69-
getCompositePinnedAction: (compositeId: string) => this.instantiationService.createInstance(ToggleViewletPinnedAction, this.viewletService.getViewlet(compositeId)),
70+
getCompositePinnedAction: (compositeId: string) => new ToggleCompositePinnedAction(this.viewletService.getViewlet(compositeId), this.compositeBar),
7071
getOnCompositeClickAction: (compositeId: string) => this.instantiationService.createInstance(ToggleViewletAction, this.viewletService.getViewlet(compositeId)),
7172
getDefaultCompositeId: () => this.viewletService.getDefaultViewletId(),
7273
hidePart: () => this.partService.setSideBarHidden(true)
@@ -142,7 +143,7 @@ export class ActivitybarPart extends Part implements IActivityBarService {
142143
private showContextMenu(e: MouseEvent): void {
143144
const event = new StandardMouseEvent(e);
144145

145-
const actions: Action[] = this.viewletService.getViewlets().map(viewlet => this.instantiationService.createInstance(ToggleViewletPinnedAction, viewlet));
146+
const actions: Action[] = this.viewletService.getViewlets().map(viewlet => this.instantiationService.createInstance(ToggleCompositePinnedAction, viewlet, this.compositeBar));
146147
actions.push(new Separator());
147148
actions.push(this.instantiationService.createInstance(ToggleActivityBarVisibilityAction, ToggleActivityBarVisibilityAction.ID, nls.localize('hideActivitBar', "Hide Activity Bar")));
148149

@@ -177,22 +178,6 @@ export class ActivitybarPart extends Part implements IActivityBarService {
177178
return this.viewletService.getViewlets().map(v => v.id).filter(id => this.compositeBar.isPinned(id));;
178179
}
179180

180-
public unpin(viewletId: string): void {
181-
this.compositeBar.unpin(viewletId);
182-
}
183-
184-
public isPinned(viewletId: string): boolean {
185-
return this.compositeBar.isPinned(viewletId);
186-
}
187-
188-
public pin(viewletId: string, update = true): void {
189-
this.compositeBar.pin(viewletId, update);
190-
}
191-
192-
public move(viewletId: string, toViewletId: string): void {
193-
this.compositeBar.move(viewletId, toViewletId);
194-
}
195-
196181
/**
197182
* Layout title, content and status area in the given dimension.
198183
*/

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
1717
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1818
import { ActionBar, IActionItem, ActionsOrientation } from 'vs/base/browser/ui/actionbar/actionbar';
1919
import Event, { Emitter } from 'vs/base/common/event';
20-
import { CompositeActionItem, CompositeOverflowActivityAction, ICompositeActivity, CompositeOverflowActivityActionItem, ActivityAction } from 'vs/workbench/browser/parts/compositebar/compositeBarActions';
20+
import { CompositeActionItem, CompositeOverflowActivityAction, ICompositeActivity, CompositeOverflowActivityActionItem, ActivityAction, ICompositeBar } from 'vs/workbench/browser/parts/compositebar/compositeBarActions';
2121
import { TPromise } from 'vs/base/common/winjs.base';
2222

2323
export interface ICompositeBarOptions {
@@ -34,7 +34,7 @@ export interface ICompositeBarOptions {
3434
hidePart: () => TPromise<any>;
3535
}
3636

37-
export class CompositeBar {
37+
export class CompositeBar implements ICompositeBar {
3838

3939
private _onDidContextMenu: Emitter<MouseEvent>;
4040

@@ -312,7 +312,7 @@ export class CompositeBar {
312312
private toAction(compositeId: string): ActivityAction {
313313
const compositeActivityAction = this.options.getActivityAction(compositeId);
314314
const pinnedAction = this.options.getCompositePinnedAction(compositeId);
315-
this.compositeIdToActionItems[compositeId] = this.instantiationService.createInstance(CompositeActionItem, compositeActivityAction, pinnedAction);
315+
this.compositeIdToActionItems[compositeId] = this.instantiationService.createInstance(CompositeActionItem, compositeActivityAction, pinnedAction, this);
316316
this.compositeIdToActions[compositeId] = compositeActivityAction;
317317

318318
return compositeActivityAction;

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

Lines changed: 50 additions & 4 deletions
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 { IActivityBarService, 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/activityBarService';
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, ACTIVITY_BAR_FOREGROUND } from 'vs/workbench/common/theme';
@@ -29,6 +29,28 @@ export interface ICompositeActivity {
2929
clazz: string;
3030
}
3131

32+
export interface ICompositeBar {
33+
/**
34+
* Unpins a viewlet from the activitybar.
35+
*/
36+
unpin(viewletId: string): void;
37+
38+
/**
39+
* Pin a viewlet inside the activity bar.
40+
*/
41+
pin(viewletId: string): void;
42+
43+
/**
44+
* Find out if a viewlet is pinned in the activity bar.
45+
*/
46+
isPinned(viewletId: string): boolean;
47+
48+
/**
49+
* Reorder viewlet ordering by moving a viewlet to the location of another viewlet.
50+
*/
51+
move(viewletId: string, toViewletId: string): void;
52+
}
53+
3254
export class ActivityAction extends Action {
3355
private badge: IBadge;
3456
private _onDidChangeBadge = new Emitter<this>();
@@ -342,8 +364,8 @@ export class CompositeActionItem extends ActivityActionItem {
342364
constructor(
343365
private compositeActivityAction: ActivityAction,
344366
private toggleCompositePinnedAction: Action,
367+
private compositeBar: ICompositeBar,
345368
@IContextMenuService private contextMenuService: IContextMenuService,
346-
@IActivityBarService private activityBarService: IActivityBarService,
347369
@IKeybindingService private keybindingService: IKeybindingService,
348370
@IInstantiationService instantiationService: IInstantiationService,
349371
@IThemeService themeService: IThemeService
@@ -448,7 +470,7 @@ export class CompositeActionItem extends ActivityActionItem {
448470
this.updateFromDragging(container, false);
449471
CompositeActionItem.clearDraggedComposite();
450472

451-
this.activityBarService.move(draggedCompositeId, this.activity.id);
473+
this.compositeBar.move(draggedCompositeId, this.activity.id);
452474
}
453475
});
454476

@@ -488,7 +510,7 @@ export class CompositeActionItem extends ActivityActionItem {
488510
actions.push(CompositeActionItem.manageExtensionAction);
489511
}
490512

491-
const isPinned = this.activityBarService.isPinned(this.activity.id);
513+
const isPinned = this.compositeBar.isPinned(this.activity.id);
492514
if (isPinned) {
493515
this.toggleCompositePinnedAction.label = nls.localize('removeFromActivityBar', "Hide from Activity Bar");
494516
this.toggleCompositePinnedAction.checked = false;
@@ -540,3 +562,27 @@ export class CompositeActionItem extends ActivityActionItem {
540562
this.$label.destroy();
541563
}
542564
}
565+
566+
export class ToggleCompositePinnedAction extends Action {
567+
568+
constructor(
569+
private activity: IActivity,
570+
private compositeBar: ICompositeBar
571+
) {
572+
super('activitybar.show.toggleViewletPinned', activity ? activity.name : nls.localize('toggle', "Toggle View Pinned"));
573+
574+
this.checked = this.activity && this.compositeBar.isPinned(this.activity.id);
575+
}
576+
577+
public run(context: string): TPromise<any> {
578+
const id = this.activity ? this.activity.id : context;
579+
580+
if (this.compositeBar.isPinned(id)) {
581+
this.compositeBar.unpin(id);
582+
} else {
583+
this.compositeBar.pin(id);
584+
}
585+
586+
return TPromise.as(true);
587+
}
588+
}

src/vs/workbench/services/activity/common/activityBarService.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -67,24 +67,4 @@ export interface IActivityBarService {
6767
* Show activity in the activitybar for the given viewlet or global action.
6868
*/
6969
showActivity(viewletOrActionId: string, badge: IBadge, clazz?: string): IDisposable;
70-
71-
/**
72-
* Unpins a viewlet from the activitybar.
73-
*/
74-
unpin(viewletId: string): void;
75-
76-
/**
77-
* Pin a viewlet inside the activity bar.
78-
*/
79-
pin(viewletId: string): void;
80-
81-
/**
82-
* Find out if a viewlet is pinned in the activity bar.
83-
*/
84-
isPinned(viewletId: string): boolean;
85-
86-
/**
87-
* Reorder viewlet ordering by moving a viewlet to the location of another viewlet.
88-
*/
89-
move(viewletId: string, toViewletId: string): void;
9070
}

0 commit comments

Comments
 (0)