Skip to content

Commit 1ab198f

Browse files
authored
Move modeling events to new ModelingEvents class (#3005)
1 parent 48df8de commit 1ab198f

File tree

11 files changed

+360
-208
lines changed

11 files changed

+360
-208
lines changed

extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-panel.ts

+3
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@ import { ModelingStore } from "../modeling-store";
77
import { ModelEditorViewTracker } from "../model-editor-view-tracker";
88
import { ModelConfigListener } from "../../config";
99
import { DatabaseItem } from "../../databases/local-databases";
10+
import { ModelingEvents } from "../modeling-events";
1011

1112
export class MethodModelingPanel extends DisposableObject {
1213
private readonly provider: MethodModelingViewProvider;
1314

1415
constructor(
1516
app: App,
1617
modelingStore: ModelingStore,
18+
modelingEvents: ModelingEvents,
1719
editorViewTracker: ModelEditorViewTracker,
1820
) {
1921
super();
@@ -26,6 +28,7 @@ export class MethodModelingPanel extends DisposableObject {
2628
this.provider = new MethodModelingViewProvider(
2729
app,
2830
modelingStore,
31+
modelingEvents,
2932
editorViewTracker,
3033
modelConfig,
3134
);

extensions/ql-vscode/src/model-editor/method-modeling/method-modeling-view-provider.ts

+10-8
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { assertNever } from "../../common/helpers-pure";
1414
import { ModelEditorViewTracker } from "../model-editor-view-tracker";
1515
import { ModelConfigListener } from "../../config";
1616
import { DatabaseItem } from "../../databases/local-databases";
17+
import { ModelingEvents } from "../modeling-events";
1718

1819
export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
1920
ToMethodModelingMessage,
@@ -27,6 +28,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
2728
constructor(
2829
app: App,
2930
private readonly modelingStore: ModelingStore,
31+
private readonly modelingEvents: ModelingEvents,
3032
private readonly editorViewTracker: ModelEditorViewTracker,
3133
private readonly modelConfig: ModelConfigListener,
3234
) {
@@ -35,7 +37,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
3537

3638
protected override async onWebViewLoaded(): Promise<void> {
3739
await Promise.all([this.setViewState(), this.setInitialState()]);
38-
this.registerToModelingStoreEvents();
40+
this.registerToModelingEvents();
3941
this.registerToModelConfigEvents();
4042
}
4143

@@ -150,9 +152,9 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
150152
await view?.revealMethod(method);
151153
}
152154

153-
private registerToModelingStoreEvents(): void {
155+
private registerToModelingEvents(): void {
154156
this.push(
155-
this.modelingStore.onModeledMethodsChanged(async (e) => {
157+
this.modelingEvents.onModeledMethodsChanged(async (e) => {
156158
if (this.webviewView && e.isActiveDb && this.method) {
157159
const modeledMethods = e.modeledMethods[this.method.signature];
158160
if (modeledMethods) {
@@ -167,7 +169,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
167169
);
168170

169171
this.push(
170-
this.modelingStore.onModifiedMethodsChanged(async (e) => {
172+
this.modelingEvents.onModifiedMethodsChanged(async (e) => {
171173
if (this.webviewView && e.isActiveDb && this.method) {
172174
const isModified = e.modifiedMethods.has(this.method.signature);
173175
await this.postMessage({
@@ -179,7 +181,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
179181
);
180182

181183
this.push(
182-
this.modelingStore.onSelectedMethodChanged(async (e) => {
184+
this.modelingEvents.onSelectedMethodChanged(async (e) => {
183185
if (this.webviewView) {
184186
this.method = e.method;
185187
this.databaseItem = e.databaseItem;
@@ -196,7 +198,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
196198
);
197199

198200
this.push(
199-
this.modelingStore.onDbOpened(async () => {
201+
this.modelingEvents.onDbOpened(async () => {
200202
await this.postMessage({
201203
t: "setInModelingMode",
202204
inModelingMode: true,
@@ -205,7 +207,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
205207
);
206208

207209
this.push(
208-
this.modelingStore.onDbClosed(async (dbUri) => {
210+
this.modelingEvents.onDbClosed(async (dbUri) => {
209211
if (!this.modelingStore.anyDbsBeingModeled()) {
210212
await this.postMessage({
211213
t: "setInModelingMode",
@@ -220,7 +222,7 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
220222
);
221223

222224
this.push(
223-
this.modelingStore.onInProgressMethodsChanged(async (e) => {
225+
this.modelingEvents.onInProgressMethodsChanged(async (e) => {
224226
if (this.method && this.databaseItem) {
225227
const dbUri = this.databaseItem.databaseUri.toString();
226228
if (e.dbUri === dbUri) {

extensions/ql-vscode/src/model-editor/methods-usage/methods-usage-panel.ts

+9-7
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@ import { CodeQLCliServer } from "../../codeql-cli/cli";
1010
import { ModelingStore } from "../modeling-store";
1111
import { ModeledMethod } from "../modeled-method";
1212
import { Mode } from "../shared/mode";
13+
import { ModelingEvents } from "../modeling-events";
1314

1415
export class MethodsUsagePanel extends DisposableObject {
1516
private readonly dataProvider: MethodsUsageDataProvider;
1617
private readonly treeView: TreeView<MethodsUsageTreeViewItem>;
1718

1819
public constructor(
1920
private readonly modelingStore: ModelingStore,
21+
private readonly modelingEvents: ModelingEvents,
2022
cliServer: CodeQLCliServer,
2123
) {
2224
super();
@@ -28,7 +30,7 @@ export class MethodsUsagePanel extends DisposableObject {
2830
});
2931
this.push(this.treeView);
3032

31-
this.registerToModelingStoreEvents();
33+
this.registerToModelingEvents();
3234
}
3335

3436
public async setState(
@@ -69,39 +71,39 @@ export class MethodsUsagePanel extends DisposableObject {
6971
}
7072
}
7173

72-
private registerToModelingStoreEvents(): void {
74+
private registerToModelingEvents(): void {
7375
this.push(
74-
this.modelingStore.onActiveDbChanged(async () => {
76+
this.modelingEvents.onActiveDbChanged(async () => {
7577
await this.handleStateChangeEvent();
7678
}),
7779
);
7880

7981
this.push(
80-
this.modelingStore.onMethodsChanged(async (event) => {
82+
this.modelingEvents.onMethodsChanged(async (event) => {
8183
if (event.isActiveDb) {
8284
await this.handleStateChangeEvent();
8385
}
8486
}),
8587
);
8688

8789
this.push(
88-
this.modelingStore.onHideModeledMethodsChanged(async (event) => {
90+
this.modelingEvents.onHideModeledMethodsChanged(async (event) => {
8991
if (event.isActiveDb) {
9092
await this.handleStateChangeEvent();
9193
}
9294
}),
9395
);
9496

9597
this.push(
96-
this.modelingStore.onModeChanged(async (event) => {
98+
this.modelingEvents.onModeChanged(async (event) => {
9799
if (event.isActiveDb) {
98100
await this.handleStateChangeEvent();
99101
}
100102
}),
101103
);
102104

103105
this.push(
104-
this.modelingStore.onModifiedMethodsChanged(async (event) => {
106+
this.modelingEvents.onModifiedMethodsChanged(async (event) => {
105107
if (event.isActiveDb) {
106108
await this.handleStateChangeEvent();
107109
}

extensions/ql-vscode/src/model-editor/model-editor-module.ts

+16-7
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,14 @@ import { ModelingStore } from "./modeling-store";
2121
import { showResolvableLocation } from "../databases/local-databases/locations";
2222
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
2323
import { ModelConfigListener } from "../config";
24+
import { ModelingEvents } from "./modeling-events";
2425

2526
const SUPPORTED_LANGUAGES: string[] = ["java", "csharp"];
2627

2728
export class ModelEditorModule extends DisposableObject {
2829
private readonly queryStorageDir: string;
2930
private readonly modelingStore: ModelingStore;
31+
private readonly modelingEvents: ModelingEvents;
3032
private readonly editorViewTracker: ModelEditorViewTracker<ModelEditorView>;
3133
private readonly methodsUsagePanel: MethodsUsagePanel;
3234
private readonly methodModelingPanel: MethodModelingPanel;
@@ -40,16 +42,22 @@ export class ModelEditorModule extends DisposableObject {
4042
) {
4143
super();
4244
this.queryStorageDir = join(baseQueryStorageDir, "model-editor-results");
43-
this.modelingStore = new ModelingStore(app);
45+
this.modelingEvents = new ModelingEvents(app);
46+
this.modelingStore = new ModelingStore(this.modelingEvents);
4447
this.editorViewTracker = new ModelEditorViewTracker();
4548
this.methodsUsagePanel = this.push(
46-
new MethodsUsagePanel(this.modelingStore, cliServer),
49+
new MethodsUsagePanel(this.modelingStore, this.modelingEvents, cliServer),
4750
);
4851
this.methodModelingPanel = this.push(
49-
new MethodModelingPanel(app, this.modelingStore, this.editorViewTracker),
52+
new MethodModelingPanel(
53+
app,
54+
this.modelingStore,
55+
this.modelingEvents,
56+
this.editorViewTracker,
57+
),
5058
);
5159

52-
this.registerToModelingStoreEvents();
60+
this.registerToModelingEvents();
5361
}
5462

5563
public static async initialize(
@@ -90,9 +98,9 @@ export class ModelEditorModule extends DisposableObject {
9098
await ensureDir(this.queryStorageDir);
9199
}
92100

93-
private registerToModelingStoreEvents(): void {
101+
private registerToModelingEvents(): void {
94102
this.push(
95-
this.modelingStore.onSelectedMethodChanged(async (event) => {
103+
this.modelingEvents.onSelectedMethodChanged(async (event) => {
96104
await this.showMethod(event.databaseItem, event.method, event.usage);
97105
}),
98106
);
@@ -215,6 +223,7 @@ export class ModelEditorModule extends DisposableObject {
215223
const view = new ModelEditorView(
216224
this.app,
217225
this.modelingStore,
226+
this.modelingEvents,
218227
this.editorViewTracker,
219228
modelConfig,
220229
this.databaseManager,
@@ -226,7 +235,7 @@ export class ModelEditorModule extends DisposableObject {
226235
modelFile,
227236
);
228237

229-
this.modelingStore.onDbClosed(async (dbUri) => {
238+
this.modelingEvents.onDbClosed(async (dbUri) => {
230239
if (dbUri === db.databaseUri.toString()) {
231240
await cleanupQueryDir();
232241
}

extensions/ql-vscode/src/model-editor/model-editor-view.ts

+9-6
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import { AutoModeler } from "./auto-modeler";
4343
import { telemetryListener } from "../common/vscode/telemetry";
4444
import { ModelingStore } from "./modeling-store";
4545
import { ModelEditorViewTracker } from "./model-editor-view-tracker";
46+
import { ModelingEvents } from "./modeling-events";
4647

4748
export class ModelEditorView extends AbstractWebview<
4849
ToModelEditorMessage,
@@ -53,6 +54,7 @@ export class ModelEditorView extends AbstractWebview<
5354
public constructor(
5455
protected readonly app: App,
5556
private readonly modelingStore: ModelingStore,
57+
private readonly modelingEvents: ModelingEvents,
5658
private readonly viewTracker: ModelEditorViewTracker<ModelEditorView>,
5759
private readonly modelConfig: ModelConfigListener,
5860
private readonly databaseManager: DatabaseManager,
@@ -67,7 +69,7 @@ export class ModelEditorView extends AbstractWebview<
6769
super(app);
6870

6971
this.modelingStore.initializeStateForDb(databaseItem, initialMode);
70-
this.registerToModelingStoreEvents();
72+
this.registerToModelingEvents();
7173
this.registerToModelConfigEvents();
7274

7375
this.viewTracker.registerView(this);
@@ -567,6 +569,7 @@ export class ModelEditorView extends AbstractWebview<
567569
const view = new ModelEditorView(
568570
this.app,
569571
this.modelingStore,
572+
this.modelingEvents,
570573
this.viewTracker,
571574
this.modelConfig,
572575
this.databaseManager,
@@ -655,9 +658,9 @@ export class ModelEditorView extends AbstractWebview<
655658
return addedDatabase;
656659
}
657660

658-
private registerToModelingStoreEvents() {
661+
private registerToModelingEvents() {
659662
this.push(
660-
this.modelingStore.onMethodsChanged(async (event) => {
663+
this.modelingEvents.onMethodsChanged(async (event) => {
661664
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
662665
await this.postMessage({
663666
t: "setMethods",
@@ -668,7 +671,7 @@ export class ModelEditorView extends AbstractWebview<
668671
);
669672

670673
this.push(
671-
this.modelingStore.onModeledMethodsChanged(async (event) => {
674+
this.modelingEvents.onModeledMethodsChanged(async (event) => {
672675
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
673676
await this.postMessage({
674677
t: "setModeledMethods",
@@ -679,7 +682,7 @@ export class ModelEditorView extends AbstractWebview<
679682
);
680683

681684
this.push(
682-
this.modelingStore.onModifiedMethodsChanged(async (event) => {
685+
this.modelingEvents.onModifiedMethodsChanged(async (event) => {
683686
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
684687
await this.postMessage({
685688
t: "setModifiedMethods",
@@ -690,7 +693,7 @@ export class ModelEditorView extends AbstractWebview<
690693
);
691694

692695
this.push(
693-
this.modelingStore.onInProgressMethodsChanged(async (event) => {
696+
this.modelingEvents.onInProgressMethodsChanged(async (event) => {
694697
if (event.dbUri === this.databaseItem.databaseUri.toString()) {
695698
await this.postMessage({
696699
t: "setInProgressMethods",

0 commit comments

Comments
 (0)