Skip to content

Commit e85f2a3

Browse files
committed
💄
1 parent f2ccbad commit e85f2a3

1 file changed

Lines changed: 40 additions & 12 deletions

File tree

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

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ import { IStorageService, StorageScope } from 'vs/platform/storage/common/storag
2525
import { localize } from 'vs/nls';
2626
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
2727
import { Iterator } from 'vs/base/common/iterator';
28-
import { ITreeElement, ITreeNode, ITreeContextMenuEvent } from 'vs/base/browser/ui/tree/tree';
28+
import { ITreeElement, ITreeNode, ITreeContextMenuEvent, ITreeRenderer } from 'vs/base/browser/ui/tree/tree';
2929
import { Relay, Event, Emitter } from 'vs/base/common/event';
30-
import { WorkbenchObjectTree, TreeResourceNavigator2 } from 'vs/platform/list/browser/listService';
30+
import { WorkbenchObjectTree, TreeResourceNavigator2, IListService } from 'vs/platform/list/browser/listService';
3131
import { FilterOptions } from 'vs/workbench/contrib/markers/browser/markersFilterOptions';
3232
import { IExpression } from 'vs/base/common/glob';
3333
import { deepClone } from 'vs/base/common/objects';
@@ -44,6 +44,9 @@ import { ResourceLabels } from 'vs/workbench/browser/labels';
4444
import { IMarker } from 'vs/platform/markers/common/markers';
4545
import { withUndefinedAsNull } from 'vs/base/common/types';
4646
import { MementoObject } from 'vs/workbench/common/memento';
47+
import { IListVirtualDelegate } from 'vs/base/browser/ui/list/list';
48+
import { IObjectTreeOptions } from 'vs/base/browser/ui/tree/objectTree';
49+
import { IAccessibilityService } from 'vs/platform/accessibility/common/accessibility';
4750

4851
function createModelIterator(model: MarkersModel): Iterator<ITreeElement<TreeElement>> {
4952
const resourcesIt = Iterator.fromArray(model.resourceMarkers);
@@ -71,8 +74,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
7174
private readonly rangeHighlightDecorations: RangeHighlightDecorations;
7275
private readonly filter: Filter;
7376

74-
private tree!: WorkbenchObjectTree<TreeElement, FilterData>;
75-
private treeContainer!: HTMLElement;
77+
private tree!: MarkersTree;
7678
private messageBoxContainer!: HTMLElement;
7779
private ariaLabelElement!: HTMLElement;
7880

@@ -153,7 +155,6 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
153155
}
154156

155157
public layout(dimension: dom.Dimension): void {
156-
this.treeContainer.style.height = `${dimension.height}px`;
157158
this.tree.layout(dimension.height, dimension.width);
158159
if (this.filterInputActionViewItem) {
159160
this.filterInputActionViewItem.toggleLayout(dimension.width < 1200);
@@ -252,7 +253,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
252253
}
253254

254255
const { total, filtered } = this.getFilterStats();
255-
dom.toggleClass(this.treeContainer, 'hidden', total === 0 || filtered === 0);
256+
this.tree.toggleVisibility(total === 0 || filtered === 0);
256257
this.renderMessage();
257258
this._onDidFilter.fire();
258259
}
@@ -269,7 +270,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
269270
this._onDidFilter.fire();
270271

271272
const { total, filtered } = this.getFilterStats();
272-
dom.toggleClass(this.treeContainer, 'hidden', total === 0 || filtered === 0);
273+
this.tree.toggleVisibility(total === 0 || filtered === 0);
273274
this.renderMessage();
274275
}
275276

@@ -300,8 +301,6 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
300301
}
301302

302303
private createTree(parent: HTMLElement): void {
303-
this.treeContainer = dom.append(parent, dom.$('.tree-container.show-file-icons'));
304-
305304
const onDidChangeRenderNodeCount = new Relay<ITreeNode<any, any>>();
306305

307306
const treeLabels = this._register(this.instantiationService.createInstance(ResourceLabels, this));
@@ -320,9 +319,9 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
320319
}
321320
};
322321

323-
this.tree = this._register(this.instantiationService.createInstance(WorkbenchObjectTree,
322+
this.tree = this._register(this.instantiationService.createInstance(MarkersTree,
324323
'MarkersPanel',
325-
this.treeContainer,
324+
dom.append(parent, dom.$('.tree-container.show-file-icons')),
326325
virtualDelegate,
327326
renderers,
328327
{
@@ -476,7 +475,7 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
476475
private render(): void {
477476
this.cachedFilterStats = undefined;
478477
this.tree.setChildren(null, createModelIterator(this.markersWorkbenchService.markersModel));
479-
dom.toggleClass(this.treeContainer, 'hidden', this.isEmpty());
478+
this.tree.toggleVisibility(this.isEmpty());
480479
this.renderMessage();
481480
}
482481

@@ -727,3 +726,32 @@ export class MarkersPanel extends Panel implements IMarkerFilterController {
727726
}
728727

729728
}
729+
730+
class MarkersTree extends WorkbenchObjectTree<TreeElement, FilterData> {
731+
732+
constructor(
733+
user: string,
734+
readonly container: HTMLElement,
735+
delegate: IListVirtualDelegate<TreeElement>,
736+
renderers: ITreeRenderer<TreeElement, FilterData, any>[],
737+
options: IObjectTreeOptions<TreeElement, FilterData>,
738+
@IContextKeyService contextKeyService: IContextKeyService,
739+
@IListService listService: IListService,
740+
@IThemeService themeService: IThemeService,
741+
@IConfigurationService configurationService: IConfigurationService,
742+
@IKeybindingService keybindingService: IKeybindingService,
743+
@IAccessibilityService accessibilityService: IAccessibilityService
744+
) {
745+
super(user, container, delegate, renderers, options, contextKeyService, listService, themeService, configurationService, keybindingService, accessibilityService);
746+
}
747+
748+
layout(height: number, width: number): void {
749+
this.container.style.height = `${height}px`;
750+
super.layout(height, width);
751+
}
752+
753+
toggleVisibility(hide: boolean): void {
754+
dom.toggleClass(this.container, 'hidden', hide);
755+
}
756+
757+
}

0 commit comments

Comments
 (0)