File tree Expand file tree Collapse file tree 5 files changed +122
-0
lines changed
Expand file tree Collapse file tree 5 files changed +122
-0
lines changed Original file line number Diff line number Diff line change @@ -125,6 +125,7 @@ import { TestManager } from "./query-testing/test-manager";
125125import { TestRunner } from "./query-testing/test-runner" ;
126126import { TestManagerBase } from "./query-testing/test-manager-base" ;
127127import { NewQueryRunner , QueryRunner , QueryServerClient } from "./query-server" ;
128+ import { QueriesModule } from "./queries-panel/queries-module" ;
128129
129130/**
130131 * extension.ts
@@ -732,6 +733,8 @@ async function activateWithInstalledDistribution(
732733 ) ;
733734 ctx . subscriptions . push ( databaseUI ) ;
734735
736+ QueriesModule . initialize ( app ) ;
737+
735738 void extLogger . log ( "Initializing evaluator log viewer." ) ;
736739 const evalLogViewer = new EvalLogViewer ( ) ;
737740 ctx . subscriptions . push ( evalLogViewer ) ;
Original file line number Diff line number Diff line change 1+ import { extLogger } from "../common" ;
2+ import { App , AppMode } from "../common/app" ;
3+ import { isCanary , showQueriesPanel } from "../config" ;
4+ import { DisposableObject } from "../pure/disposable-object" ;
5+ import { QueriesPanel } from "./queries-panel" ;
6+
7+ export class QueriesModule extends DisposableObject {
8+ private queriesPanel : QueriesPanel | undefined ;
9+
10+ private constructor ( readonly app : App ) {
11+ super ( ) ;
12+ }
13+
14+ private initialize ( app : App ) : void {
15+ if ( app . mode === AppMode . Production || ! isCanary ( ) || ! showQueriesPanel ( ) ) {
16+ // Currently, we only want to expose the new panel when we are in development and canary mode
17+ // and the developer has enabled the "Show queries panel" flag.
18+ return ;
19+ }
20+ void extLogger . log ( "Initializing queries panel." ) ;
21+
22+ this . queriesPanel = new QueriesPanel ( ) ;
23+ this . push ( this . queriesPanel ) ;
24+ }
25+
26+ public static initialize ( app : App ) : QueriesModule {
27+ const queriesModule = new QueriesModule ( app ) ;
28+ app . subscriptions . push ( queriesModule ) ;
29+
30+ queriesModule . initialize ( app ) ;
31+ return queriesModule ;
32+ }
33+ }
Original file line number Diff line number Diff line change 1+ import * as vscode from "vscode" ;
2+ import { DisposableObject } from "../pure/disposable-object" ;
3+ import { QueryTreeDataProvider } from "./query-tree-data-provider" ;
4+ import { QueryTreeViewItem } from "./query-tree-view-item" ;
5+
6+ export class QueriesPanel extends DisposableObject {
7+ private readonly dataProvider : QueryTreeDataProvider ;
8+ private readonly treeView : vscode . TreeView < QueryTreeViewItem > ;
9+
10+ public constructor ( ) {
11+ super ( ) ;
12+
13+ this . dataProvider = new QueryTreeDataProvider ( ) ;
14+
15+ this . treeView = vscode . window . createTreeView ( "codeQLQueries" , {
16+ treeDataProvider : this . dataProvider ,
17+ } ) ;
18+
19+ this . push ( this . treeView ) ;
20+ }
21+ }
Original file line number Diff line number Diff line change 1+ import * as vscode from "vscode" ;
2+ import { QueryTreeViewItem } from "./query-tree-view-item" ;
3+ import { DisposableObject } from "../pure/disposable-object" ;
4+
5+ export class QueryTreeDataProvider
6+ extends DisposableObject
7+ implements vscode . TreeDataProvider < QueryTreeViewItem >
8+ {
9+ private queryTreeItems : QueryTreeViewItem [ ] ;
10+
11+ public constructor ( ) {
12+ super ( ) ;
13+
14+ this . queryTreeItems = this . createTree ( ) ;
15+ }
16+
17+ private createTree ( ) : QueryTreeViewItem [ ] {
18+ // Temporary mock data, just to populate the tree view.
19+ return [
20+ {
21+ label : "name1" ,
22+ tooltip : "path1" ,
23+ children : [ ] ,
24+ } ,
25+ ] ;
26+ }
27+
28+ /**
29+ * Returns the UI presentation of the element that gets displayed in the view.
30+ * @param item The item to represent.
31+ * @returns The UI presentation of the item.
32+ */
33+ public getTreeItem (
34+ item : QueryTreeViewItem ,
35+ ) : vscode . TreeItem | Thenable < vscode . TreeItem > {
36+ return item ;
37+ }
38+
39+ /**
40+ * Called when expanding an item (including the root item).
41+ * @param item The item to expand.
42+ * @returns The children of the item.
43+ */
44+ public getChildren (
45+ item ?: QueryTreeViewItem ,
46+ ) : vscode . ProviderResult < QueryTreeViewItem [ ] > {
47+ if ( ! item ) {
48+ // We're at the root.
49+ return Promise . resolve ( this . queryTreeItems ) ;
50+ } else {
51+ return Promise . resolve ( item . children ) ;
52+ }
53+ }
54+ }
Original file line number Diff line number Diff line change 1+ import * as vscode from "vscode" ;
2+
3+ export class QueryTreeViewItem extends vscode . TreeItem {
4+ constructor (
5+ public readonly label : string ,
6+ public readonly tooltip : string | undefined ,
7+ public readonly children : QueryTreeViewItem [ ] ,
8+ ) {
9+ super ( label ) ;
10+ }
11+ }
You can’t perform that action at this time.
0 commit comments