@@ -52,6 +52,7 @@ import {
5252 createSingleSelectionCommand ,
5353} from "../common/vscode/selection-commands" ;
5454import { QueryLanguage } from "../common/query-language" ;
55+ import { LanguageContextStore } from "../language-context-store" ;
5556
5657enum SortOrder {
5758 NameAsc = "NameAsc" ,
@@ -60,8 +61,6 @@ enum SortOrder {
6061 DateAddedDesc = "DateAddedDesc" ,
6162}
6263
63- type LanguageFilter = QueryLanguage | "All" ;
64-
6564/**
6665 * Tree data provider for the databases view.
6766 */
@@ -70,14 +69,16 @@ class DatabaseTreeDataProvider
7069 implements TreeDataProvider < DatabaseItem >
7170{
7271 private _sortOrder = SortOrder . NameAsc ;
73- private _languageFilter = "All" as LanguageFilter ;
7472
7573 private readonly _onDidChangeTreeData = this . push (
7674 new EventEmitter < DatabaseItem | undefined > ( ) ,
7775 ) ;
7876 private currentDatabaseItem : DatabaseItem | undefined ;
7977
80- constructor ( private databaseManager : DatabaseManager ) {
78+ constructor (
79+ private databaseManager : DatabaseManager ,
80+ private languageContext : LanguageContextStore ,
81+ ) {
8182 super ( ) ;
8283
8384 this . currentDatabaseItem = databaseManager . currentDatabaseItem ;
@@ -92,6 +93,11 @@ class DatabaseTreeDataProvider
9293 this . handleDidChangeCurrentDatabaseItem . bind ( this ) ,
9394 ) ,
9495 ) ;
96+ this . push (
97+ this . languageContext . onLanguageContextChanged ( async ( ) => {
98+ this . _onDidChangeTreeData . fire ( undefined ) ;
99+ } ) ,
100+ ) ;
95101 }
96102
97103 public get onDidChangeTreeData ( ) : Event < DatabaseItem | undefined > {
@@ -137,11 +143,7 @@ class DatabaseTreeDataProvider
137143 if ( element === undefined ) {
138144 // Filter items by language
139145 const displayItems = this . databaseManager . databaseItems . filter ( ( item ) => {
140- if ( this . languageFilter === "All" ) {
141- return true ;
142- } else {
143- return item . language === this . languageFilter ;
144- }
146+ return this . languageContext . shouldInclude ( item . language ) ;
145147 } ) ;
146148
147149 // Sort items
@@ -178,15 +180,6 @@ class DatabaseTreeDataProvider
178180 this . _sortOrder = newSortOrder ;
179181 this . _onDidChangeTreeData . fire ( undefined ) ;
180182 }
181-
182- public get languageFilter ( ) {
183- return this . _languageFilter ;
184- }
185-
186- public set languageFilter ( newLanguageFilter : LanguageFilter ) {
187- this . _languageFilter = newLanguageFilter ;
188- this . _onDidChangeTreeData . fire ( undefined ) ;
189- }
190183}
191184
192185/** Gets the first element in the given list, if any, or undefined if the list is empty or undefined. */
@@ -223,14 +216,15 @@ export class DatabaseUI extends DisposableObject {
223216 public constructor (
224217 private app : App ,
225218 private databaseManager : DatabaseManager ,
219+ private languageContext : LanguageContextStore ,
226220 private readonly queryServer : QueryRunner | undefined ,
227221 private readonly storagePath : string ,
228222 readonly extensionPath : string ,
229223 ) {
230224 super ( ) ;
231225
232226 this . treeDataProvider = this . push (
233- new DatabaseTreeDataProvider ( databaseManager ) ,
227+ new DatabaseTreeDataProvider ( databaseManager , languageContext ) ,
234228 ) ;
235229 this . push (
236230 window . createTreeView ( "codeQLDatabases" , {
@@ -269,7 +263,7 @@ export class DatabaseUI extends DisposableObject {
269263 "codeQLDatabases.sortByName" : this . handleSortByName . bind ( this ) ,
270264 "codeQLDatabases.sortByDateAdded" : this . handleSortByDateAdded . bind ( this ) ,
271265 "codeQLDatabases.displayAllLanguages" :
272- this . handleChangeLanguageFilter . bind ( this , "All" ) ,
266+ this . handleClearLanguageFilter . bind ( this ) ,
273267 "codeQLDatabases.displayCpp" : this . handleChangeLanguageFilter . bind (
274268 this ,
275269 QueryLanguage . Cpp ,
@@ -592,8 +586,12 @@ export class DatabaseUI extends DisposableObject {
592586 }
593587 }
594588
595- private async handleChangeLanguageFilter ( languageFilter : LanguageFilter ) {
596- this . treeDataProvider . languageFilter = languageFilter ;
589+ private async handleClearLanguageFilter ( ) {
590+ this . languageContext . clearLanguageContext ( ) ;
591+ }
592+
593+ private async handleChangeLanguageFilter ( languageFilter : QueryLanguage ) {
594+ this . languageContext . setLanguageContext ( languageFilter ) ;
597595 }
598596
599597 private async handleUpgradeCurrentDatabase ( ) : Promise < void > {
0 commit comments