Skip to content

Commit 9993de2

Browse files
committed
debug: use badges
1 parent c3d1b9f commit 9993de2

4 files changed

Lines changed: 80 additions & 2 deletions

File tree

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {DelayedDragHandler} from 'vs/base/browser/dnd';
1212
import {Action} from 'vs/base/common/actions';
1313
import {BaseActionItem} from 'vs/base/browser/ui/actionbar/actionbar';
1414
import {IEmitterEvent} from 'vs/base/common/eventEmitter';
15-
import {ProgressBadge, TextBadge, NumberBadge, IBadge} from 'vs/workbench/services/activity/common/activityService';
15+
import {ProgressBadge, TextBadge, NumberBadge, IconBadge, IBadge} from 'vs/workbench/services/activity/common/activityService';
1616

1717
export class ActivityAction extends Action {
1818

@@ -144,6 +144,11 @@ export class ActivityActionItem extends BaseActionItem {
144144
this.$badge.show();
145145
}
146146

147+
// Text
148+
else if (badge instanceof IconBadge) {
149+
this.$badge.show();
150+
}
151+
147152
// Progress
148153
else if (badge instanceof ProgressBadge) {
149154
this.$badge.show();

src/vs/workbench/parts/debug/browser/media/debug.contribution.css

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,30 @@
99
background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIzMiIgaGVpZ2h0PSIzMiIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGUgdHlwZT0idGV4dC9jc3MiPi5pY29uLWNhbnZhcy10cmFuc3BhcmVudHtvcGFjaXR5OjA7ZmlsbDojRjZGNkY2O30gLmljb24td2hpdGV7ZmlsbDojRkZGRkZGO308L3N0eWxlPjxwYXRoIGNsYXNzPSJpY29uLWNhbnZhcy10cmFuc3BhcmVudCIgZD0iTTMyIDMySDBWMGgzMnYzMnoiIGlkPSJjYW52YXMiLz48ZyBpZD0iaWNvbkJnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTE3IDE5LjQ4OHY0LjI0OGMwIC40NjIuMDkgMS4yNjQtLjM3MyAxLjI2NEgxNXYtMWgxdi0zLjE5bC0uMTczLS4xOGMtMS40NTMgMS4yMDUtMy41MjggMS4yNDgtNC42Ny4xMDhDMTAgMTkuNTc4IDEwLjExOCAxOCAxMS4zNzYgMTZIOHYxSDd2LTEuNjI3QzcgMTQuOTEgNy44MDIgMTUgOC4yNjQgMTVoNC4xMDVMMTcgMTkuNDg4ek0xNCA5aC0xVjhoMS45NTVjLjQ2IDAgMS4wNDUuMjIgMS4wNDUuNjgydjMuMzQ1bC43MzYuODc1Yy4xOC0uOTczLjg5LTEuNzEgMS45MTQtMS43MS4xNDMgMCAuMzUuMDE0LjM1LjA0VjloMXYyLjYxOGMwIC4xMTcuMjY1LjM4Mi4zODIuMzgySDIzdjFoLTIuMjMzYy4wMjcgMCAuMDQyLjE1NC4wNDIuMjk4IDAgMS4wMjUtLjc0IDEuNzUzLTEuNzEyIDEuOTMybC44NzUuNzdIMjMuMzE4Yy40NjIgMCAuNjgyLjU4My42ODIgMS4wNDVWMTloLTF2LTFoLTIuNTJMMTQgMTEuNjk4Vjl6TTE2IDRDOS4zNzMgNCA0IDkuMzczIDQgMTZzNS4zNzMgMTIgMTIgMTIgMTItNS4zNzMgMTItMTJTMjIuNjI3IDQgMTYgNHptMTAgMTJjMCAyLjM5Ny0uODUgNC42LTIuMjYyIDYuMzI0TDkuNjc2IDguMjYyQzExLjQgNi44NSAxMy42MDIgNiAxNiA2YzUuNTE0IDAgMTAgNC40ODYgMTAgMTB6TTYgMTZjMC0yLjM5OC44NS00LjYgMi4yNjItNi4zMjRMMjIuMzI0IDIzLjc0QzIwLjYgMjUuMTUgMTguMzk3IDI2IDE2IDI2Yy01LjUxNCAwLTEwLTQuNDg2LTEwLTEweiIvPjwvZz48L3N2Zz4=');
1010
}
1111

12+
.debug-viewlet-paused-label > .badge-content {
13+
background-color: #007ACC;
14+
}
15+
16+
.debug-viewlet-paused-label > .badge-content:before {
17+
border: 3px solid white;
18+
border-top: none;
19+
border-bottom: none;
20+
content: '';
21+
display: block;
22+
position: absolute;
23+
top: 5px;
24+
left: 5px;
25+
width: 2px;
26+
height: 8px;
27+
}
28+
29+
.debug-viewlet-running-label > .badge-content {
30+
background-color: #007ACC;
31+
background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgdmlld0JveD0iMiAyIDE0IDE0IiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDIgMiAxNCAxNCI+PHBhdGggZmlsbD0iI2ZmZiIgZD0iTTkgMTZjLTMuODYgMC03LTMuMTQtNy03czMuMTQtNyA3LTdjMy44NTkgMCA3IDMuMTQxIDcgN3MtMy4xNDEgNy03IDd6bTAtMTIuNmMtMy4wODggMC01LjYgMi41MTMtNS42IDUuNnMyLjUxMiA1LjYgNS42IDUuNiA1LjYtMi41MTIgNS42LTUuNi0yLjUxMi01LjYtNS42LTUuNnptMy44NiA3LjFsLTMuMTYtMS44OTZ2LTMuODA0aC0xLjR2NC41OTZsMy44NCAyLjMwNS43Mi0xLjIwMXoiLz48L3N2Zz4=");
32+
background-position: center center;
33+
background-repeat: no-repeat;
34+
}
35+
1236
.monaco-editor .debug-top-stack-frame-line {
1337
background: rgba(255, 255, 0, 0.35);
1438
}

src/vs/workbench/parts/debug/electron-browser/debug.contribution.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@
66
import 'vs/css!../browser/media/debug.contribution';
77
import 'vs/css!../browser/media/debugHover';
88
import nls = require('vs/nls');
9-
import { CommonEditorRegistry, ContextKey, EditorActionDescriptor } from 'vs/editor/common/editorCommonExtensions';
9+
import lifecycle = require('vs/base/common/lifecycle');
1010
import { KeyMod, KeyCode } from 'vs/base/common/keyCodes';
11+
import { CommonEditorRegistry, ContextKey, EditorActionDescriptor } from 'vs/editor/common/editorCommonExtensions';
1112
import { SyncActionDescriptor } from 'vs/platform/actions/common/actions';
1213
import platform = require('vs/platform/platform');
1314
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
@@ -25,6 +26,7 @@ import debugwidget = require('vs/workbench/parts/debug/browser/debugActionsWidge
2526
import service = require('vs/workbench/parts/debug/electron-browser/debugService');
2627
import { DebugEditorContribution } from 'vs/workbench/parts/debug/browser/debugEditorContribution';
2728
import { IViewletService } from 'vs/workbench/services/viewlet/common/viewletService';
29+
import { IActivityService, IconBadge, NumberBadge, ProgressBadge } from 'vs/workbench/services/activity/common/activityService';
2830
import { IWorkbenchEditorService } from 'vs/workbench/services/editor/common/editorService';
2931

3032
import IDebugService = debug.IDebugService;
@@ -43,6 +45,41 @@ class OpenDebugViewletAction extends viewlet.ToggleViewletAction {
4345
}
4446
}
4547

48+
class StatusUpdater implements wbext.IWorkbenchContribution {
49+
static ID = 'Monaco.IDE.UI.Viewlets.DebugViewlet.Workbench.StatusUpdater';
50+
51+
private toDispose: lifecycle.IDisposable[];
52+
private pausedBadge: ProgressBadge;
53+
private runningBadge: IconBadge;
54+
55+
constructor(
56+
@IActivityService private activityService: IActivityService,
57+
@IDebugService private debugService: IDebugService
58+
) {
59+
this.pausedBadge = new IconBadge(() => { return nls.localize('debugPaused', "Paused"); });
60+
this.runningBadge = new ProgressBadge(() => { return nls.localize('debugRunning', "Running"); });
61+
this.toDispose = [this.debugService.addListener2(debug.ServiceEvents.STATE_CHANGED, () => this.onDebugServiceStateChange())];
62+
}
63+
64+
private onDebugServiceStateChange(): void {
65+
if (this.debugService.getState() === debug.State.Stopped) {
66+
this.activityService.showActivity(debug.VIEWLET_ID, this.pausedBadge, 'debug-viewlet-paused-label');
67+
} else if (this.debugService.getState() === debug.State.Running) {
68+
this.activityService.showActivity(debug.VIEWLET_ID, this.runningBadge, 'debug-viewlet-running-label');
69+
} else {
70+
this.activityService.clearActivity(debug.VIEWLET_ID);
71+
}
72+
}
73+
74+
public getId(): string {
75+
return StatusUpdater.ID;
76+
}
77+
78+
public dispose(): void {
79+
this.toDispose = lifecycle.disposeAll(this.toDispose);
80+
}
81+
}
82+
4683
EditorBrowserRegistry.registerEditorContribution(DebugEditorContribution);
4784
CommonEditorRegistry.registerEditorAction(new EditorActionDescriptor(dbgactions.ToggleBreakpointAction, dbgactions.ToggleBreakpointAction.ID, nls.localize('toggleBreakpointAction', "Debug: Toggle Breakpoint"), {
4885
context: ContextKey.EditorTextFocus,
@@ -100,3 +137,8 @@ registry.registerWorkbenchAction(new SyncActionDescriptor(dbgactions.AddFunction
100137

101138
// register service
102139
registerSingleton(IDebugService, service.DebugService);
140+
141+
// Register StatusUpdater
142+
(<wbext.IWorkbenchContributionsRegistry>platform.Registry.as(wbext.Extensions.Workbench)).registerWorkbenchContribution(
143+
StatusUpdater
144+
);

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,13 @@ export class TextBadge extends BaseBadge {
4646
}
4747
}
4848

49+
export class IconBadge extends BaseBadge {
50+
51+
constructor(descriptorFn: (args: any) => string) {
52+
super(descriptorFn);
53+
}
54+
}
55+
4956
export class ProgressBadge extends BaseBadge {
5057
}
5158

0 commit comments

Comments
 (0)