Skip to content

Commit cee8dae

Browse files
committed
undo explorer work
1 parent ee6db8c commit cee8dae

2 files changed

Lines changed: 12 additions & 62 deletions

File tree

src/vs/workbench/contrib/files/browser/views/explorerView.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@ import { IContextMenuService } from 'vs/platform/contextview/browser/contextView
2424
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
2525
import { ResourceContextKey } from 'vs/workbench/common/resources';
2626
import { IDecorationsService } from 'vs/workbench/services/decorations/browser/decorations';
27-
import { WorkbenchCompressibleAsyncDataTree, TreeResourceNavigator2 } from 'vs/platform/list/browser/listService';
27+
import { WorkbenchAsyncDataTree, TreeResourceNavigator2 } from 'vs/platform/list/browser/listService';
2828
import { DelayedDragHandler } from 'vs/base/browser/dnd';
2929
import { IEditorService, SIDE_GROUP, ACTIVE_GROUP } from 'vs/workbench/services/editor/common/editorService';
3030
import { IViewletPanelOptions, ViewletPanel } from 'vs/workbench/browser/parts/views/panelViewlet';
3131
import { ILabelService } from 'vs/platform/label/common/label';
32-
import { ExplorerListVirtualDelegate, ExplorerAccessibilityProvider, ExplorerDataSource, FilesRenderer, FilesFilter, FileSorter, FileDragAndDrop, ExplorerTreeCompressionDelegate } from 'vs/workbench/contrib/files/browser/views/explorerViewer';
32+
import { ExplorerDelegate, ExplorerAccessibilityProvider, ExplorerDataSource, FilesRenderer, FilesFilter, FileSorter, FileDragAndDrop } from 'vs/workbench/contrib/files/browser/views/explorerViewer';
3333
import { IThemeService } from 'vs/platform/theme/common/themeService';
3434
import { IWorkbenchThemeService } from 'vs/workbench/services/themes/common/workbenchThemeService';
3535
import { ITreeContextMenuEvent } from 'vs/base/browser/ui/tree/tree';
@@ -55,7 +55,7 @@ export class ExplorerView extends ViewletPanel {
5555
static readonly ID: string = 'workbench.explorer.fileView';
5656
static readonly TREE_VIEW_STATE_STORAGE_KEY: string = 'workbench.explorer.treeViewState';
5757

58-
private tree!: WorkbenchCompressibleAsyncDataTree<ExplorerItem | ExplorerItem[], ExplorerItem, FuzzyScore>;
58+
private tree!: WorkbenchAsyncDataTree<ExplorerItem | ExplorerItem[], ExplorerItem, FuzzyScore>;
5959
private filter!: FilesFilter;
6060

6161
private resourceContext: ResourceContextKey;
@@ -282,7 +282,7 @@ export class ExplorerView extends ViewletPanel {
282282

283283
this._register(createFileIconThemableTreeContainerScope(container, this.themeService));
284284

285-
this.tree = this.instantiationService.createInstance(WorkbenchCompressibleAsyncDataTree, 'FileExplorer', container, new ExplorerListVirtualDelegate(), new ExplorerTreeCompressionDelegate(), [filesRenderer],
285+
this.tree = this.instantiationService.createInstance(WorkbenchAsyncDataTree, 'FileExplorer', container, new ExplorerDelegate(), [filesRenderer],
286286
this.instantiationService.createInstance(ExplorerDataSource), {
287287
accessibilityProvider: new ExplorerAccessibilityProvider(),
288288
ariaLabel: nls.localize('treeAriaLabel', "Files Explorer"),
@@ -309,7 +309,7 @@ export class ExplorerView extends ViewletPanel {
309309
sorter: this.instantiationService.createInstance(FileSorter),
310310
dnd: this.instantiationService.createInstance(FileDragAndDrop),
311311
autoExpandSingleChildren: true,
312-
additionalScrollHeight: ExplorerListVirtualDelegate.ITEM_HEIGHT
312+
additionalScrollHeight: ExplorerDelegate.ITEM_HEIGHT
313313
});
314314
this._register(this.tree);
315315

src/vs/workbench/contrib/files/browser/views/explorerViewer.ts

Lines changed: 7 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import { IWorkspaceContextService, WorkbenchState } from 'vs/platform/workspace/
1515
import { IDisposable, Disposable, dispose, toDisposable } from 'vs/base/common/lifecycle';
1616
import { KeyCode } from 'vs/base/common/keyCodes';
1717
import { IFileLabelOptions, IResourceLabel, ResourceLabels } from 'vs/workbench/browser/labels';
18-
import { ITreeNode, ITreeFilter, TreeVisibility, TreeFilterResult, IAsyncDataSource, ITreeSorter, ITreeDragAndDrop, ITreeDragOverReaction, TreeDragOverBubble } from 'vs/base/browser/ui/tree/tree';
18+
import { ITreeRenderer, ITreeNode, ITreeFilter, TreeVisibility, TreeFilterResult, IAsyncDataSource, ITreeSorter, ITreeDragAndDrop, ITreeDragOverReaction, TreeDragOverBubble } from 'vs/base/browser/ui/tree/tree';
1919
import { IContextViewService } from 'vs/platform/contextview/browser/contextView';
2020
import { IThemeService } from 'vs/platform/theme/common/themeService';
2121
import { IConfigurationService, ConfigurationTarget } from 'vs/platform/configuration/common/configuration';
@@ -47,30 +47,20 @@ import { IWorkspaceFolderCreationData } from 'vs/platform/workspaces/common/work
4747
import { findValidPasteFileTarget } from 'vs/workbench/contrib/files/browser/fileActions';
4848
import { FuzzyScore, createMatches } from 'vs/base/common/filters';
4949
import { Emitter } from 'vs/base/common/event';
50-
import { ICompressibleTreeRenderer } from 'vs/base/browser/ui/tree/objectTree';
51-
import { ICompressedTreeNode } from 'vs/base/browser/ui/tree/compressedObjectTreeModel';
52-
import { ITreeCompressionDelegate } from 'vs/base/browser/ui/tree/asyncDataTree';
5350

54-
export class ExplorerListVirtualDelegate implements IListVirtualDelegate<ExplorerItem> {
51+
export class ExplorerDelegate implements IListVirtualDelegate<ExplorerItem> {
5552

5653
static readonly ITEM_HEIGHT = 22;
5754

58-
getHeight(): number {
59-
return ExplorerListVirtualDelegate.ITEM_HEIGHT;
55+
getHeight(element: ExplorerItem): number {
56+
return ExplorerDelegate.ITEM_HEIGHT;
6057
}
6158

62-
getTemplateId(): string {
59+
getTemplateId(element: ExplorerItem): string {
6360
return FilesRenderer.ID;
6461
}
6562
}
6663

67-
export class ExplorerTreeCompressionDelegate implements ITreeCompressionDelegate<ExplorerItem> {
68-
69-
isIncompressible(element: ExplorerItem): boolean {
70-
return !element.isDirectory;
71-
}
72-
}
73-
7464
export const explorerRootErrorEmitter = new Emitter<URI>();
7565
export class ExplorerDataSource implements IAsyncDataSource<ExplorerItem | ExplorerItem[], ExplorerItem> {
7666

@@ -126,7 +116,7 @@ export interface IFileTemplateData {
126116
container: HTMLElement;
127117
}
128118

129-
export class FilesRenderer implements ICompressibleTreeRenderer<ExplorerItem, FuzzyScore, IFileTemplateData>, IDisposable {
119+
export class FilesRenderer implements ITreeRenderer<ExplorerItem, FuzzyScore, IFileTemplateData>, IDisposable {
130120
static readonly ID = 'file';
131121

132122
private config: IFilesConfiguration;
@@ -271,47 +261,7 @@ export class FilesRenderer implements ICompressibleTreeRenderer<ExplorerItem, Fu
271261
});
272262
}
273263

274-
renderCompressedElements(node: ITreeNode<ICompressedTreeNode<ExplorerItem>, [number, number, number]>, index: number, templateData: IFileTemplateData, height: number | undefined): void {
275-
templateData.elementDisposable.dispose();
276-
const stat = node.element.elements[node.element.elements.length - 1];
277-
const editableData = this.explorerService.getEditableData(stat);
278-
279-
// File Label
280-
if (!editableData) {
281-
templateData.label.element.style.display = 'flex';
282-
const extraClasses = ['explorer-item'];
283-
if (this.explorerService.isCut(stat)) {
284-
extraClasses.push('cut');
285-
}
286-
templateData.label.setFile(stat.resource, {
287-
hidePath: true,
288-
fileKind: stat.isRoot ? FileKind.ROOT_FOLDER : stat.isDirectory ? FileKind.FOLDER : FileKind.FILE,
289-
extraClasses,
290-
fileDecorations: this.config.explorer.decorations,
291-
matches: createMatches(node.filterData)
292-
});
293-
294-
templateData.elementDisposable = templateData.label.onDidRender(() => {
295-
try {
296-
this.updateWidth(stat);
297-
} catch (e) {
298-
// noop since the element might no longer be in the tree, no update of width necessery
299-
}
300-
});
301-
}
302-
303-
// Input Box
304-
else {
305-
templateData.label.element.style.display = 'none';
306-
templateData.elementDisposable = this.renderInputBox(templateData.container, stat, editableData);
307-
}
308-
}
309-
310-
disposeElement?(_element: ITreeNode<ExplorerItem, FuzzyScore>, _index: number, templateData: IFileTemplateData): void {
311-
templateData.elementDisposable.dispose();
312-
}
313-
314-
disposeCompressedElements?(_node: ITreeNode<ICompressedTreeNode<ExplorerItem>, FuzzyScore>, _index: number, templateData: IFileTemplateData): void {
264+
disposeElement?(element: ITreeNode<ExplorerItem, FuzzyScore>, index: number, templateData: IFileTemplateData): void {
315265
templateData.elementDisposable.dispose();
316266
}
317267

0 commit comments

Comments
 (0)