Skip to content

Commit 7ef75f5

Browse files
authored
New DB panel: Add UI command to select database item (#1840)
1 parent 4bfefb8 commit 7ef75f5

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

extensions/ql-vscode/package.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@
6161
"onCommand:codeQL.chooseDatabaseLgtm",
6262
"onCommand:codeQLDatabases.chooseDatabase",
6363
"onCommand:codeQLDatabases.setCurrentDatabase",
64+
"onCommand:codeQLDatabasesExperimental.openConfigFile",
65+
"onCommand:codeQLDatabasesExperimental.setSelectedItem",
6466
"onCommand:codeQL.quickQuery",
6567
"onCommand:codeQL.restartQueryServer",
6668
"onWebviewPanel:resultsView",
@@ -364,6 +366,11 @@
364366
"dark": "media/dark/edit.svg"
365367
}
366368
},
369+
{
370+
"command": "codeQLDatabasesExperimental.setSelectedItem",
371+
"title": "Select Item",
372+
"icon": "$(circle-small-filled)"
373+
},
367374
{
368375
"command": "codeQLDatabases.chooseDatabaseFolder",
369376
"title": "Choose Database from Folder",
@@ -795,6 +802,11 @@
795802
"group": "9_qlCommands",
796803
"when": "view == codeQLDatabases"
797804
},
805+
{
806+
"command": "codeQLDatabasesExperimental.setSelectedItem",
807+
"when": "view == codeQLDatabasesExperimental && viewItem == selectableDbItem",
808+
"group": "inline"
809+
},
798810
{
799811
"command": "codeQLQueryHistory.openQuery",
800812
"group": "9_qlCommands",
@@ -985,6 +997,10 @@
985997
"command": "codeQLDatabasesExperimental.openConfigFile",
986998
"when": "false"
987999
},
1000+
{
1001+
"command": "codeQLDatabasesExperimental.setSelectedItem",
1002+
"when": "false"
1003+
},
9881004
{
9891005
"command": "codeQLDatabases.setCurrentDatabase",
9901006
"when": "false"

extensions/ql-vscode/src/databases/ui/db-panel.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { commandRunner } from "../../commandRunner";
33
import { DisposableObject } from "../../pure/disposable-object";
44
import { DbManager } from "../db-manager";
55
import { DbTreeDataProvider } from "./db-tree-data-provider";
6+
import { DbTreeViewItem } from "./db-tree-view-item";
67

78
export class DbPanel extends DisposableObject {
89
private readonly dataProvider: DbTreeDataProvider;
@@ -26,11 +27,26 @@ export class DbPanel extends DisposableObject {
2627
this.openConfigFile(),
2728
),
2829
);
30+
this.push(
31+
commandRunner(
32+
"codeQLDatabasesExperimental.setSelectedItem",
33+
(treeViewItem: DbTreeViewItem) => this.setSelectedItem(treeViewItem),
34+
),
35+
);
2936
}
3037

3138
private async openConfigFile(): Promise<void> {
3239
const configPath = this.dbManager.getConfigPath();
3340
const document = await workspace.openTextDocument(configPath);
3441
await window.showTextDocument(document);
3542
}
43+
44+
private async setSelectedItem(treeViewItem: DbTreeViewItem): Promise<void> {
45+
if (treeViewItem.dbItem === undefined) {
46+
throw new Error(
47+
"Not a selectable database item. Please select a valid item.",
48+
);
49+
}
50+
await this.dbManager.setSelectedDbItem(treeViewItem.dbItem);
51+
}
3652
}

extensions/ql-vscode/src/databases/ui/db-selection-decoration-provider.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export class DbSelectionDecorationProvider implements FileDecorationProvider {
1313
): ProviderResult<FileDecoration> {
1414
if (uri?.query === "selected=true") {
1515
return {
16-
badge: "✔",
16+
badge: "●",
17+
tooltip: "Currently selected",
1718
};
1819
}
1920

0 commit comments

Comments
 (0)