New DB panel: Add UI command to select database item (#1840)

This commit is contained in:
Shati Patel
2022-12-06 16:00:08 +00:00
committed by GitHub
parent 4bfefb8ebb
commit 7ef75f5971
3 changed files with 34 additions and 1 deletions

View File

@@ -61,6 +61,8 @@
"onCommand:codeQL.chooseDatabaseLgtm",
"onCommand:codeQLDatabases.chooseDatabase",
"onCommand:codeQLDatabases.setCurrentDatabase",
"onCommand:codeQLDatabasesExperimental.openConfigFile",
"onCommand:codeQLDatabasesExperimental.setSelectedItem",
"onCommand:codeQL.quickQuery",
"onCommand:codeQL.restartQueryServer",
"onWebviewPanel:resultsView",
@@ -364,6 +366,11 @@
"dark": "media/dark/edit.svg"
}
},
{
"command": "codeQLDatabasesExperimental.setSelectedItem",
"title": "Select Item",
"icon": "$(circle-small-filled)"
},
{
"command": "codeQLDatabases.chooseDatabaseFolder",
"title": "Choose Database from Folder",
@@ -795,6 +802,11 @@
"group": "9_qlCommands",
"when": "view == codeQLDatabases"
},
{
"command": "codeQLDatabasesExperimental.setSelectedItem",
"when": "view == codeQLDatabasesExperimental && viewItem == selectableDbItem",
"group": "inline"
},
{
"command": "codeQLQueryHistory.openQuery",
"group": "9_qlCommands",
@@ -985,6 +997,10 @@
"command": "codeQLDatabasesExperimental.openConfigFile",
"when": "false"
},
{
"command": "codeQLDatabasesExperimental.setSelectedItem",
"when": "false"
},
{
"command": "codeQLDatabases.setCurrentDatabase",
"when": "false"

View File

@@ -3,6 +3,7 @@ import { commandRunner } from "../../commandRunner";
import { DisposableObject } from "../../pure/disposable-object";
import { DbManager } from "../db-manager";
import { DbTreeDataProvider } from "./db-tree-data-provider";
import { DbTreeViewItem } from "./db-tree-view-item";
export class DbPanel extends DisposableObject {
private readonly dataProvider: DbTreeDataProvider;
@@ -26,6 +27,12 @@ export class DbPanel extends DisposableObject {
this.openConfigFile(),
),
);
this.push(
commandRunner(
"codeQLDatabasesExperimental.setSelectedItem",
(treeViewItem: DbTreeViewItem) => this.setSelectedItem(treeViewItem),
),
);
}
private async openConfigFile(): Promise<void> {
@@ -33,4 +40,13 @@ export class DbPanel extends DisposableObject {
const document = await workspace.openTextDocument(configPath);
await window.showTextDocument(document);
}
private async setSelectedItem(treeViewItem: DbTreeViewItem): Promise<void> {
if (treeViewItem.dbItem === undefined) {
throw new Error(
"Not a selectable database item. Please select a valid item.",
);
}
await this.dbManager.setSelectedDbItem(treeViewItem.dbItem);
}
}

View File

@@ -13,7 +13,8 @@ export class DbSelectionDecorationProvider implements FileDecorationProvider {
): ProviderResult<FileDecoration> {
if (uri?.query === "selected=true") {
return {
badge: "",
badge: "",
tooltip: "Currently selected",
};
}