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";
125
125
import { TestRunner } from "./query-testing/test-runner" ;
126
126
import { TestManagerBase } from "./query-testing/test-manager-base" ;
127
127
import { NewQueryRunner , QueryRunner , QueryServerClient } from "./query-server" ;
128
+ import { QueriesModule } from "./queries-panel/queries-module" ;
128
129
129
130
/**
130
131
* extension.ts
@@ -732,6 +733,8 @@ async function activateWithInstalledDistribution(
732
733
) ;
733
734
ctx . subscriptions . push ( databaseUI ) ;
734
735
736
+ QueriesModule . initialize ( app ) ;
737
+
735
738
void extLogger . log ( "Initializing evaluator log viewer." ) ;
736
739
const evalLogViewer = new EvalLogViewer ( ) ;
737
740
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