Skip to content

Commit 9ade6a6

Browse files
authored
Engineering - Refactor cyclic dependency (microsoft#150343)
* Refactor to avoid cyclic dependency * Pull request feedback + compilation errors
1 parent d891b49 commit 9ade6a6

File tree

10 files changed

+142
-146
lines changed

10 files changed

+142
-146
lines changed

src/vs/workbench/contrib/debug/browser/debugTaskRunner.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import * as nls from 'vs/nls';
77
import severity from 'vs/base/common/severity';
88
import { Event } from 'vs/base/common/event';
9-
import Constants from 'vs/workbench/contrib/markers/browser/constants';
9+
import { Markers } from 'vs/workbench/contrib/markers/common/markers';
1010
import { ITaskService, ITaskSummary } from 'vs/workbench/contrib/tasks/common/taskService';
1111
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
1212
import { IWorkspaceFolder, IWorkspace } from 'vs/platform/workspace/common/workspace';
@@ -76,7 +76,7 @@ export class DebugTaskRunner {
7676
return TaskRunResult.Success;
7777
}
7878
if (onTaskErrors === 'showErrors') {
79-
await this.viewsService.openView(Constants.MARKERS_VIEW_ID, true);
79+
await this.viewsService.openView(Markers.MARKERS_VIEW_ID, true);
8080
return Promise.resolve(TaskRunResult.Failure);
8181
}
8282
if (onTaskErrors === 'abort') {
@@ -113,7 +113,7 @@ export class DebugTaskRunner {
113113
return TaskRunResult.Success;
114114
}
115115

116-
await this.viewsService.openView(Constants.MARKERS_VIEW_ID, true);
116+
await this.viewsService.openView(Markers.MARKERS_VIEW_ID, true);
117117
return Promise.resolve(TaskRunResult.Failure);
118118
} catch (err) {
119119
const taskConfigureAction = this.taskService.configureAction();

src/vs/workbench/contrib/markers/browser/constants.ts

Lines changed: 0 additions & 33 deletions
This file was deleted.

src/vs/workbench/contrib/markers/browser/markers.contribution.ts

Lines changed: 83 additions & 60 deletions
Large diffs are not rendered by default.

src/vs/workbench/contrib/markers/browser/markers.ts

Lines changed: 1 addition & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,11 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { Disposable, MutableDisposable, IDisposable } from 'vs/base/common/lifecycle';
7-
import { IMarkerService } from 'vs/platform/markers/common/markers';
8-
import { IActivityService, NumberBadge } from 'vs/workbench/services/activity/common/activity';
9-
import { localize } from 'vs/nls';
10-
import Constants from './constants';
11-
import { IWorkbenchContribution } from 'vs/workbench/common/contributions';
126
import { MarkersFilters } from 'vs/workbench/contrib/markers/browser/markersViewActions';
137
import { Event } from 'vs/base/common/event';
148
import { IView } from 'vs/workbench/common/views';
159
import { MarkerElement, ResourceMarkers } from 'vs/workbench/contrib/markers/browser/markersModel';
16-
import { MarkersViewMode } from 'vs/workbench/contrib/markers/browser/markersView';
10+
import { MarkersViewMode } from 'vs/workbench/contrib/markers/common/markers';
1711

1812
export interface IMarkersView extends IView {
1913

@@ -33,24 +27,3 @@ export interface IMarkersView extends IView {
3327
setMultiline(multiline: boolean): void;
3428
setViewMode(viewMode: MarkersViewMode): void;
3529
}
36-
37-
export class ActivityUpdater extends Disposable implements IWorkbenchContribution {
38-
39-
private readonly activity = this._register(new MutableDisposable<IDisposable>());
40-
41-
constructor(
42-
@IActivityService private readonly activityService: IActivityService,
43-
@IMarkerService private readonly markerService: IMarkerService
44-
) {
45-
super();
46-
this._register(this.markerService.onMarkerChanged(() => this.updateBadge()));
47-
this.updateBadge();
48-
}
49-
50-
private updateBadge(): void {
51-
const { errors, warnings, infos } = this.markerService.getStatistics();
52-
const total = errors + warnings + infos;
53-
const message = localize('totalProblems', 'Total {0} Problems', total);
54-
this.activity.value = this.activityService.showViewActivity(Constants.MARKERS_VIEW_ID, { badge: new NumberBadge(total, () => message) });
55-
}
56-
}

src/vs/workbench/contrib/markers/browser/markersTreeViewer.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ import { Codicon } from 'vs/base/common/codicons';
4848
import { registerIcon } from 'vs/platform/theme/common/iconRegistry';
4949
import { Link } from 'vs/platform/opener/browser/link';
5050
import { ILanguageFeaturesService } from 'vs/editor/common/services/languageFeatures';
51-
import { MarkersViewMode } from 'vs/workbench/contrib/markers/browser/markersView';
5251
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
53-
import Constants from 'vs/workbench/contrib/markers/browser/constants';
52+
import { MarkersContextKeys, MarkersViewMode } from 'vs/workbench/contrib/markers/common/markers';
5453

5554
interface IResourceMarkersTemplateData {
5655
resourceLabel: IResourceLabel;
@@ -718,7 +717,7 @@ export class MarkersViewModel extends Disposable {
718717
this._multiline = multiline;
719718
this._viewMode = viewMode;
720719

721-
this.viewModeContextKey = Constants.MarkersViewModeContextKey.bindTo(this.contextKeyService);
720+
this.viewModeContextKey = MarkersContextKeys.MarkersViewModeContextKey.bindTo(this.contextKeyService);
722721
this.viewModeContextKey.set(viewMode);
723722
}
724723

src/vs/workbench/contrib/markers/browser/markersView.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import * as dom from 'vs/base/browser/dom';
1010
import { IAction, Action, Separator } from 'vs/base/common/actions';
1111
import { ITelemetryService } from 'vs/platform/telemetry/common/telemetry';
1212
import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService';
13-
import Constants from 'vs/workbench/contrib/markers/browser/constants';
1413
import { Marker, ResourceMarkers, RelatedInformation, MarkerChangesEvent, MarkersModel, compareMarkersByUri, MarkerElement, MarkerTableItem } from 'vs/workbench/contrib/markers/browser/markersModel';
1514
import { IInstantiationService } from 'vs/platform/instantiation/common/instantiation';
1615
import { MarkersFilterActionViewItem, MarkersFilters, IMarkersFiltersChangeEvent } from 'vs/workbench/contrib/markers/browser/markersViewActions';
@@ -59,6 +58,7 @@ import { createAndFillInContextMenuActions } from 'vs/platform/actions/browser/m
5958
import { ResourceListDnDHandler } from 'vs/workbench/browser/dnd';
6059
import { ITableContextMenuEvent, ITableEvent } from 'vs/base/browser/ui/table/table';
6160
import { MarkersTable } from 'vs/workbench/contrib/markers/browser/markersTable';
61+
import { Markers, MarkersContextKeys, MarkersViewMode } from 'vs/workbench/contrib/markers/common/markers';
6262

6363
function createResourceMarkersIterator(resourceMarkers: ResourceMarkers): Iterable<ITreeElement<MarkerElement>> {
6464
return Iterable.map(resourceMarkers.markers, m => {
@@ -69,11 +69,6 @@ function createResourceMarkersIterator(resourceMarkers: ResourceMarkers): Iterab
6969
});
7070
}
7171

72-
export const enum MarkersViewMode {
73-
Table = 'table',
74-
Tree = 'tree'
75-
}
76-
7772
export interface IProblemsWidget {
7873
get contextKeyService(): IContextKeyService;
7974

@@ -162,8 +157,8 @@ export class MarkersView extends ViewPane implements IMarkersView {
162157
@IThemeService themeService: IThemeService,
163158
) {
164159
super(options, keybindingService, contextMenuService, configurationService, contextKeyService, viewDescriptorService, instantiationService, openerService, themeService, telemetryService);
165-
this.smallLayoutContextKey = Constants.MarkersViewSmallLayoutContextKey.bindTo(this.contextKeyService);
166-
this.panelState = new Memento(Constants.MARKERS_VIEW_STORAGE_ID, storageService).getMemento(StorageScope.WORKSPACE, StorageTarget.USER);
160+
this.smallLayoutContextKey = MarkersContextKeys.MarkersViewSmallLayoutContextKey.bindTo(this.contextKeyService);
161+
this.panelState = new Memento(Markers.MARKERS_VIEW_STORAGE_ID, storageService).getMemento(StorageScope.WORKSPACE, StorageTarget.USER);
167162

168163
this.markersModel = this._register(instantiationService.createInstance(MarkersModel));
169164
this.markersViewModel = this._register(instantiationService.createInstance(MarkersViewModel, this.panelState['multiline'], this.panelState['viewMode'] ?? this.getDefaultViewMode()));
@@ -419,8 +414,8 @@ export class MarkersView extends ViewPane implements IMarkersView {
419414
this.widget = this.markersViewModel.viewMode === MarkersViewMode.Table ? this.createTable(parent) : this.createTree(parent);
420415
this.widgetDisposables.add(this.widget);
421416

422-
const markerFocusContextKey = Constants.MarkerFocusContextKey.bindTo(this.widget.contextKeyService);
423-
const relatedInformationFocusContextKey = Constants.RelatedInformationFocusContextKey.bindTo(this.widget.contextKeyService);
417+
const markerFocusContextKey = MarkersContextKeys.MarkerFocusContextKey.bindTo(this.widget.contextKeyService);
418+
const relatedInformationFocusContextKey = MarkersContextKeys.RelatedInformationFocusContextKey.bindTo(this.widget.contextKeyService);
424419
this.widgetDisposables.add(this.widget.onDidChangeFocus(focus => {
425420
markerFocusContextKey.set(focus.elements.some(e => e instanceof Marker));
426421
relatedInformationFocusContextKey.set(focus.elements.some(e => e instanceof RelatedInformation));
@@ -915,7 +910,7 @@ class MarkersTree extends WorkbenchObjectTree<MarkerElement, FilterData> impleme
915910
@IAccessibilityService accessibilityService: IAccessibilityService
916911
) {
917912
super(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService);
918-
this.visibilityContextKey = Constants.MarkersTreeVisibilityContextKey.bindTo(contextKeyService);
913+
this.visibilityContextKey = MarkersContextKeys.MarkersTreeVisibilityContextKey.bindTo(contextKeyService);
919914
}
920915

921916
collapseMarkers(): void {

src/vs/workbench/contrib/markers/browser/markersViewActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import { KeyCode } from 'vs/base/common/keyCodes';
1111
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
1212
import { IContextViewService, IContextMenuService } from 'vs/platform/contextview/browser/contextView';
1313
import Messages from 'vs/workbench/contrib/markers/browser/messages';
14-
import Constants from 'vs/workbench/contrib/markers/browser/constants';
1514
import { IThemeService, registerThemingParticipant, ICssStyleCollector, IColorTheme, ThemeIcon } from 'vs/platform/theme/common/themeService';
1615
import { attachInputBoxStyler, attachStylerCallback } from 'vs/platform/theme/common/styler';
1716
import { toDisposable, Disposable } from 'vs/base/common/lifecycle';
@@ -31,6 +30,7 @@ import { registerIcon } from 'vs/platform/theme/common/iconRegistry';
3130
import { IMarkersView } from 'vs/workbench/contrib/markers/browser/markers';
3231
import { IKeybindingService } from 'vs/platform/keybinding/common/keybinding';
3332
import { showHistoryKeybindingHint } from 'vs/platform/history/browser/historyWidgetKeybindingHint';
33+
import { MarkersContextKeys } from 'vs/workbench/contrib/markers/common/markers';
3434

3535
export interface IMarkersFiltersChangeEvent {
3636
filterText?: boolean;
@@ -260,7 +260,7 @@ export class MarkersFilterActionViewItem extends BaseActionViewItem {
260260
) {
261261
super(null, action);
262262
this.keybindingService = keybindingService;
263-
this.focusContextKey = Constants.MarkerViewFilterFocusContextKey.bindTo(contextKeyService);
263+
this.focusContextKey = MarkersContextKeys.MarkerViewFilterFocusContextKey.bindTo(contextKeyService);
264264
this.delayedFilterUpdate = new Delayer<void>(400);
265265
this._register(toDisposable(() => this.delayedFilterUpdate.cancel()));
266266
this._register(markersView.onDidFocusFilter(() => this.focus()));
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
import { RawContextKey } from 'vs/platform/contextkey/common/contextkey';
7+
8+
export const enum MarkersViewMode {
9+
Table = 'table',
10+
Tree = 'tree'
11+
}
12+
13+
export namespace Markers {
14+
export const MARKERS_CONTAINER_ID = 'workbench.panel.markers';
15+
export const MARKERS_VIEW_ID = 'workbench.panel.markers.view';
16+
export const MARKERS_VIEW_STORAGE_ID = 'workbench.panel.markers';
17+
export const MARKER_COPY_ACTION_ID = 'problems.action.copy';
18+
export const MARKER_COPY_MESSAGE_ACTION_ID = 'problems.action.copyMessage';
19+
export const RELATED_INFORMATION_COPY_MESSAGE_ACTION_ID = 'problems.action.copyRelatedInformationMessage';
20+
export const FOCUS_PROBLEMS_FROM_FILTER = 'problems.action.focusProblemsFromFilter';
21+
export const MARKERS_VIEW_FOCUS_FILTER = 'problems.action.focusFilter';
22+
export const MARKERS_VIEW_CLEAR_FILTER_TEXT = 'problems.action.clearFilterText';
23+
export const MARKERS_VIEW_SHOW_MULTILINE_MESSAGE = 'problems.action.showMultilineMessage';
24+
export const MARKERS_VIEW_SHOW_SINGLELINE_MESSAGE = 'problems.action.showSinglelineMessage';
25+
export const MARKER_OPEN_ACTION_ID = 'problems.action.open';
26+
export const MARKER_OPEN_SIDE_ACTION_ID = 'problems.action.openToSide';
27+
export const MARKER_SHOW_PANEL_ID = 'workbench.action.showErrorsWarnings';
28+
export const MARKER_SHOW_QUICK_FIX = 'problems.action.showQuickFixes';
29+
export const TOGGLE_MARKERS_VIEW_ACTION_ID = 'workbench.actions.view.toggleProblems';
30+
}
31+
32+
export namespace MarkersContextKeys {
33+
export const MarkersViewModeContextKey = new RawContextKey<MarkersViewMode>('problemsViewMode', MarkersViewMode.Tree);
34+
export const MarkersViewSmallLayoutContextKey = new RawContextKey<boolean>(`problemsView.smallLayout`, false);
35+
export const MarkersTreeVisibilityContextKey = new RawContextKey<boolean>('problemsVisibility', false);
36+
export const MarkerFocusContextKey = new RawContextKey<boolean>('problemFocus', false);
37+
export const MarkerViewFilterFocusContextKey = new RawContextKey<boolean>('problemsFilterFocus', false);
38+
export const RelatedInformationFocusContextKey = new RawContextKey<boolean>('relatedInformationFocus', false);
39+
}

src/vs/workbench/contrib/tasks/browser/abstractTaskService.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import { IDialogService } from 'vs/platform/dialogs/common/dialogs';
3636

3737
import { IModelService } from 'vs/editor/common/services/model';
3838

39-
import Constants from 'vs/workbench/contrib/markers/browser/constants';
39+
import { Markers } from 'vs/workbench/contrib/markers/common/markers';
4040
import { IEditorService } from 'vs/workbench/services/editor/common/editorService';
4141
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
4242
import { IWorkspaceContextService, WorkbenchState, IWorkspaceFolder, IWorkspace, WorkspaceFolder } from 'vs/platform/workspace/common/workspace';
@@ -430,7 +430,7 @@ export abstract class AbstractTaskService extends Disposable implements ITaskSer
430430
}
431431
});
432432

433-
CommandsRegistry.registerCommand('workbench.action.tasks.toggleProblems', () => this.commandService.executeCommand(Constants.TOGGLE_MARKERS_VIEW_ACTION_ID));
433+
CommandsRegistry.registerCommand('workbench.action.tasks.toggleProblems', () => this.commandService.executeCommand(Markers.TOGGLE_MARKERS_VIEW_ACTION_ID));
434434

435435
CommandsRegistry.registerCommand('workbench.action.tasks.openUserTasks', async () => {
436436
const resource = this.getResourceForKind(TaskSourceKind.User);

src/vs/workbench/contrib/tasks/browser/terminalTaskSystem.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import { IMarkerService, MarkerSeverity } from 'vs/platform/markers/common/marke
2222
import { IWorkspaceContextService, WorkbenchState, IWorkspaceFolder } from 'vs/platform/workspace/common/workspace';
2323
import { IModelService } from 'vs/editor/common/services/model';
2424
import { ProblemMatcher, ProblemMatcherRegistry /*, ProblemPattern, getResource */ } from 'vs/workbench/contrib/tasks/common/problemMatcher';
25-
import Constants from 'vs/workbench/contrib/markers/browser/constants';
25+
import { Markers } from 'vs/workbench/contrib/markers/common/markers';
2626

2727
import { IConfigurationResolverService } from 'vs/workbench/services/configurationResolver/common/configurationResolver';
2828
import { ITerminalProfileResolverService, TERMINAL_VIEW_ID } from 'vs/workbench/contrib/terminal/common/terminal';
@@ -813,7 +813,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem {
813813
let reveal = task.command.presentation!.reveal;
814814
let revealProblems = task.command.presentation!.revealProblems;
815815
if (revealProblems === RevealProblemKind.OnProblem) {
816-
this.viewsService.openView(Constants.MARKERS_VIEW_ID, true);
816+
this.viewsService.openView(Markers.MARKERS_VIEW_ID, true);
817817
} else if (reveal === RevealKind.Silent) {
818818
this.terminalService.setActiveInstance(terminal!);
819819
this.terminalGroupService.showPanel(false);
@@ -956,7 +956,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem {
956956
let revealProblems = task.command.presentation!.revealProblems;
957957
let revealProblemPanel = terminal && (revealProblems === RevealProblemKind.OnProblem) && (startStopProblemMatcher.numberOfMatches > 0);
958958
if (revealProblemPanel) {
959-
this.viewsService.openView(Constants.MARKERS_VIEW_ID);
959+
this.viewsService.openView(Markers.MARKERS_VIEW_ID);
960960
} else if (terminal && (reveal === RevealKind.Silent) && ((exitCode !== 0) || (startStopProblemMatcher.numberOfMatches > 0) && startStopProblemMatcher.maxMarkerSeverity &&
961961
(startStopProblemMatcher.maxMarkerSeverity >= MarkerSeverity.Error))) {
962962
try {
@@ -991,7 +991,7 @@ export class TerminalTaskSystem extends Disposable implements ITaskSystem {
991991

992992
let showProblemPanel = task.command.presentation && (task.command.presentation.revealProblems === RevealProblemKind.Always);
993993
if (showProblemPanel) {
994-
this.viewsService.openView(Constants.MARKERS_VIEW_ID);
994+
this.viewsService.openView(Markers.MARKERS_VIEW_ID);
995995
} else if (task.command.presentation && (task.command.presentation.reveal === RevealKind.Always)) {
996996
this.terminalService.setActiveInstance(terminal);
997997
this.terminalGroupService.showPanel(task.command.presentation.focus);

0 commit comments

Comments
 (0)