Skip to content

Commit 8b8bacb

Browse files
committed
Add button for reveal method in editor
1 parent 558b932 commit 8b8bacb

File tree

5 files changed

+42
-2
lines changed

5 files changed

+42
-2
lines changed

extensions/ql-vscode/src/common/interface-types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,9 +597,15 @@ export type FromModelEditorMessage =
597597
| HideModeledMethodsMessage
598598
| SetModeledMethodMessage;
599599

600+
interface RevealInEditorMessage {
601+
t: "revealInModelEditor";
602+
method: Method;
603+
}
604+
600605
export type FromMethodModelingMessage =
601606
| CommonFromViewMessages
602-
| SetModeledMethodMessage;
607+
| SetModeledMethodMessage
608+
| RevealInEditorMessage;
603609

604610
interface SetMethodMessage {
605611
t: "setMethod";

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { redactableError } from "../../common/errors";
1010
import { Method } from "../method";
1111
import { ModelingStore } from "../modeling-store";
1212
import { AbstractWebviewViewProvider } from "../../common/vscode/abstract-webview-view-provider";
13+
import { assertNever } from "../../common/helpers-pure";
1314

1415
export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
1516
ToMethodModelingMessage,
@@ -87,6 +88,10 @@ export class MethodModelingViewProvider extends AbstractWebviewViewProvider<
8788
);
8889
break;
8990
}
91+
case "revealInModelEditor":
92+
break;
93+
default:
94+
assertNever(msg);
9095
}
9196
}
9297

extensions/ql-vscode/src/view/method-modeling/MethodModeling.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { MethodName } from "../model-editor/MethodName";
77
import { ModeledMethod } from "../../model-editor/modeled-method";
88
import { MethodModelingInputs } from "./MethodModelingInputs";
99
import { VSCodeTag } from "@vscode/webview-ui-toolkit/react";
10+
import { ReviewInEditorButton } from "./ReviewInEditorButton";
1011

1112
const Container = styled.div`
1213
padding: 0.3rem;
@@ -64,6 +65,7 @@ export const MethodModeling = ({
6465
modeledMethod={modeledMethod}
6566
onChange={onChange}
6667
/>
68+
<ReviewInEditorButton method={method} />
6769
</Container>
6870
);
6971
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import * as React from "react";
2+
import { useCallback } from "react";
3+
import { styled } from "styled-components";
4+
import { vscode } from "../vscode-api";
5+
import TextButton from "../common/TextButton";
6+
import { Method } from "../../model-editor/method";
7+
8+
const Button = styled(TextButton)`
9+
margin-top: 0.5rem;
10+
`;
11+
12+
type Props = {
13+
method: Method;
14+
};
15+
16+
export const ReviewInEditorButton = ({ method }: Props) => {
17+
const handleClick = useCallback(() => {
18+
vscode.postMessage({
19+
t: "revealInModelEditor",
20+
method,
21+
});
22+
}, [method]);
23+
24+
return <Button onClick={handleClick}>Review in editor</Button>;
25+
};

extensions/ql-vscode/src/view/vscode-api.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import {
22
FromCompareViewMessage,
3+
FromMethodModelingMessage,
34
FromModelEditorMessage,
45
FromResultsViewMsg,
56
FromVariantAnalysisMessage,
@@ -15,7 +16,8 @@ export interface VsCodeApi {
1516
| FromResultsViewMsg
1617
| FromCompareViewMessage
1718
| FromVariantAnalysisMessage
18-
| FromModelEditorMessage,
19+
| FromModelEditorMessage
20+
| FromMethodModelingMessage,
1921
): void;
2022

2123
/**

0 commit comments

Comments
 (0)