Update modeling panel when clicking 'view' on model editor (#2874)

This commit is contained in:
Charis Kyriakou
2023-09-27 16:59:39 +01:00
committed by GitHub
parent f1533dde2d
commit 031b5076db
2 changed files with 34 additions and 0 deletions

View File

@@ -58,6 +58,7 @@ export class MethodModelingViewProvider
this.webviewView = webviewView; this.webviewView = webviewView;
this.setInitialState(webviewView);
this.registerToModelingStoreEvents(); this.registerToModelingStoreEvents();
} }
@@ -72,6 +73,18 @@ export class MethodModelingViewProvider
} }
} }
private setInitialState(webviewView: vscode.WebviewView): void {
const selectedMethod = this.modelingStore.getSelectedMethodDetails();
if (selectedMethod) {
void webviewView.webview.postMessage({
t: "setSelectedMethod",
method: selectedMethod.method,
modeledMethod: selectedMethod.modeledMethod,
isModified: selectedMethod.isModified,
});
}
}
private async onMessage(msg: FromMethodModelingMessage): Promise<void> { private async onMessage(msg: FromMethodModelingMessage): Promise<void> {
switch (msg.t) { switch (msg.t) {
case "setModeledMethod": { case "setModeledMethod": {

View File

@@ -264,6 +264,27 @@ export class ModelingStore extends DisposableObject {
}); });
} }
public getSelectedMethodDetails() {
const dbState = this.getStateForActiveDb();
if (!dbState) {
throw new Error("No active state found in modeling store");
}
const selectedMethod = dbState.selectedMethod;
if (!selectedMethod) {
return undefined;
}
return {
method: selectedMethod,
usage: dbState.selectedUsage,
modeledMethod: dbState.modeledMethods[selectedMethod.signature],
isModified: dbState.modifiedMethodSignatures.has(
selectedMethod.signature,
),
};
}
private getState(databaseItem: DatabaseItem): DbModelingState { private getState(databaseItem: DatabaseItem): DbModelingState {
if (!this.state.has(databaseItem.databaseUri.toString())) { if (!this.state.has(databaseItem.databaseUri.toString())) {
throw Error( throw Error(