@@ -23,7 +23,7 @@ import { localize } from 'vs/nls';
2323import { IConfigurationService } from 'vs/platform/configuration/common/configuration' ;
2424import { FileKind , IFileService , IFileStat } from 'vs/platform/files/common/files' ;
2525import { IConstructorSignature1 , IInstantiationService } from 'vs/platform/instantiation/common/instantiation' ;
26- import { HighlightingWorkbenchTree , IHighlightingRenderer , IHighlightingTreeConfiguration } from 'vs/platform/list/browser/listService' ;
26+ import { HighlightingWorkbenchTree , IHighlighter , IHighlightingTreeConfiguration } from 'vs/platform/list/browser/listService' ;
2727import { breadcrumbsPickerBackground , widgetShadow } from 'vs/platform/theme/common/colorRegistry' ;
2828import { IThemeService } from 'vs/platform/theme/common/themeService' ;
2929import { IWorkspace , IWorkspaceContextService , IWorkspaceFolder } from 'vs/platform/workspace/common/workspace' ;
@@ -79,7 +79,7 @@ export abstract class BreadcrumbsPicker {
7979 this . _treeContainer . style . boxShadow = `0px 5px 8px ${ this . _themeService . getTheme ( ) . getColor ( widgetShadow ) } ` ;
8080 this . _domNode . appendChild ( this . _treeContainer ) ;
8181
82- const treeConifg = this . _completeTreeConfiguration ( { dataSource : undefined , renderer : undefined } ) ;
82+ const treeConifg = this . _completeTreeConfiguration ( { dataSource : undefined , renderer : undefined , highlighter : undefined } ) ;
8383 this . _tree = this . _instantiationService . createInstance (
8484 HighlightingWorkbenchTree ,
8585 this . _treeContainer ,
@@ -259,9 +259,16 @@ export class FileFilter implements IFilter {
259259 }
260260}
261261
262- export class FileRenderer implements IRenderer , IHighlightingRenderer {
262+ export class FileHighlighter implements IHighlighter {
263+ getHighlightsStorageKey ( element : IFileStat | IWorkspaceFolder ) : string {
264+ return IWorkspaceFolder . isIWorkspaceFolder ( element ) ? element . uri . toString ( ) : element . resource . toString ( ) ;
265+ }
266+ getHighlights ( tree : ITree , element : IFileStat | IWorkspaceFolder , pattern : string ) : FuzzyScore {
267+ return fuzzyScore ( pattern , element . name , undefined , true ) ;
268+ }
269+ }
263270
264- private readonly _scores = new Map < string , FuzzyScore > ( ) ;
271+ export class FileRenderer implements IRenderer {
265272
266273 constructor (
267274 @IInstantiationService private readonly _instantiationService : IInstantiationService ,
@@ -295,30 +302,14 @@ export class FileRenderer implements IRenderer, IHighlightingRenderer {
295302 fileKind,
296303 hidePath : true ,
297304 fileDecorations : fileDecorations ,
298- matches : createMatches ( ( this . _scores . get ( resource . toString ( ) ) || [ , [ ] ] ) [ 1 ] ) ,
305+ matches : createMatches ( ( tree as HighlightingWorkbenchTree ) . getHighlights ( element ) ) ,
299306 extraClasses : [ 'picker-item' ]
300307 } ) ;
301308 }
302309
303310 disposeTemplate ( tree : ITree , templateId : string , templateData : FileLabel ) : void {
304311 templateData . dispose ( ) ;
305312 }
306-
307- updateHighlights ( tree : ITree , pattern : string ) : any {
308- let nav = tree . getNavigator ( undefined , false ) ;
309- let topScore : FuzzyScore ;
310- let topElement : any ;
311- while ( nav . next ( ) ) {
312- let element = nav . current ( ) as IFileStat | IWorkspaceFolder ;
313- let score = fuzzyScore ( pattern , element . name , undefined , true ) ;
314- this . _scores . set ( IWorkspaceFolder . isIWorkspaceFolder ( element ) ? element . uri . toString ( ) : element . resource . toString ( ) , score ) ;
315- if ( ! topScore || score && topScore [ 0 ] < score [ 0 ] ) {
316- topScore = score ;
317- topElement = element ;
318- }
319- }
320- return topElement ;
321- }
322313}
323314
324315export class FileSorter implements ISorter {
@@ -379,6 +370,7 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
379370 config . dataSource = this . _instantiationService . createInstance ( FileDataSource ) ;
380371 config . renderer = this . _instantiationService . createInstance ( FileRenderer ) ;
381372 config . sorter = new FileSorter ( ) ;
373+ config . highlighter = new FileHighlighter ( ) ;
382374 config . filter = filter ;
383375 return config ;
384376 }
@@ -393,11 +385,10 @@ export class BreadcrumbsFilePicker extends BreadcrumbsPicker {
393385
394386//#region - Symbols
395387
396- class HighlightingOutlineRenderer extends OutlineRenderer implements IHighlightingRenderer {
397-
398- updateHighlights ( tree : ITree , pattern : string ) : any {
399- let model = OutlineModel . get ( tree . getInput ( ) ) ;
400- return model . updateMatches ( pattern ) ;
388+ class OutlineHighlighter implements IHighlighter {
389+ getHighlights ( tree : ITree , element : OutlineElement , pattern : string ) : FuzzyScore {
390+ OutlineModel . get ( element ) . updateMatches ( pattern ) ;
391+ return element . score ;
401392 }
402393}
403394
@@ -416,8 +407,9 @@ export class BreadcrumbsOutlinePicker extends BreadcrumbsPicker {
416407
417408 protected _completeTreeConfiguration ( config : IHighlightingTreeConfiguration ) : IHighlightingTreeConfiguration {
418409 config . dataSource = this . _instantiationService . createInstance ( OutlineDataSource ) ;
419- config . renderer = this . _instantiationService . createInstance ( HighlightingOutlineRenderer ) ;
410+ config . renderer = this . _instantiationService . createInstance ( OutlineRenderer ) ;
420411 config . sorter = new OutlineItemComparator ( ) ;
412+ config . highlighter = new OutlineHighlighter ( ) ;
421413 return config ;
422414 }
423415
0 commit comments