Add button for reveal method in editor

This commit is contained in:
Koen Vlaswinkel
2023-10-02 13:15:26 +02:00
parent 558b9329c5
commit 8b8bacb718
5 changed files with 42 additions and 2 deletions

View File

@@ -597,9 +597,15 @@ export type FromModelEditorMessage =
| HideModeledMethodsMessage
| SetModeledMethodMessage;
interface RevealInEditorMessage {
t: "revealInModelEditor";
method: Method;
}
export type FromMethodModelingMessage =
| CommonFromViewMessages
| SetModeledMethodMessage;
| SetModeledMethodMessage
| RevealInEditorMessage;
interface SetMethodMessage {
t: "setMethod";

View File

@@ -10,6 +10,7 @@ import { redactableError } from "../../common/errors";
import { Method } from "../method";
import { ModelingStore } from "../modeling-store";
import { AbstractWebviewViewProvider } from "../../common/vscode/abstract-webview-view-provider";
import { assertNever } from "../../common/helpers-pure";
export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
ToMethodModelingMessage,
@@ -87,6 +88,10 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
);
break;
}
case "revealInModelEditor":
break;
default:
assertNever(msg);
}
}

View File

@@ -7,6 +7,7 @@ import { MethodName } from "../model-editor/MethodName";
import { ModeledMethod } from "../../model-editor/modeled-method";
import { MethodModelingInputs } from "./MethodModelingInputs";
import { VSCodeTag } from "@vscode/webview-ui-toolkit/react";
import { ReviewInEditorButton } from "./ReviewInEditorButton";
const Container = styled.div`
padding: 0.3rem;
@@ -64,6 +65,7 @@ export const MethodModeling = ({
modeledMethod={modeledMethod}
onChange={onChange}
/>
<ReviewInEditorButton method={method} />
</Container>
);
};

View File

@@ -0,0 +1,25 @@
import * as React from "react";
import { useCallback } from "react";
import { styled } from "styled-components";
import { vscode } from "../vscode-api";
import TextButton from "../common/TextButton";
import { Method } from "../../model-editor/method";
const Button = styled(TextButton)`
margin-top: 0.5rem;
`;
type Props = {
method: Method;
};
export const ReviewInEditorButton = ({ method }: Props) => {
const handleClick = useCallback(() => {
vscode.postMessage({
t: "revealInModelEditor",
method,
});
}, [method]);
return <Button onClick={handleClick}>Review in editor</Button>;
};

View File

@@ -1,5 +1,6 @@
import {
FromCompareViewMessage,
FromMethodModelingMessage,
FromModelEditorMessage,
FromResultsViewMsg,
FromVariantAnalysisMessage,
@@ -15,7 +16,8 @@ export interface VsCodeApi {
| FromResultsViewMsg
| FromCompareViewMessage
| FromVariantAnalysisMessage
| FromModelEditorMessage,
| FromModelEditorMessage
| FromMethodModelingMessage,
): void;
/**