Skip to content

Commit 3921ba3

Browse files
committed
Improve the wording and layout
1 parent 4106df5 commit 3921ba3

File tree

3 files changed

+65
-27
lines changed

3 files changed

+65
-27
lines changed

src/project-settings/assets/compiler/features/CompilerConfigurationView.tsx

+35-20
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright (c) Microsoft Corporation. All rights reserved.
22
// Licensed under the MIT license.
33

4-
import { VSCodeCheckbox, VSCodeDivider, VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react";
4+
import { VSCodeCheckbox, VSCodeDataGrid, VSCodeDataGridCell, VSCodeDataGridRow, VSCodeDivider, VSCodeDropdown, VSCodeOption } from "@vscode/webview-ui-toolkit/react";
55
import React, { Dispatch, useEffect } from "react";
66
import { useDispatch, useSelector } from "react-redux";
77
import { loadCompilerSettings, updateAvailableComplianceLevels, updateComplianceLevel, updateEnablePreview, updateGenerateDebugInfo, updateSourceLevel, updateStoreMethodParamNames, updateTargetLevel, updateUseRelease } from "./compilerConfigurationViewSlice";
@@ -156,27 +156,42 @@ const CompilerConfigurationView = (): JSX.Element | null => {
156156

157157
return (
158158
<div className="setting-section">
159-
<h4 className="mt-3 mb-3">JDK Compliance</h4>
160159
<div className={showReleaseFlag ? "" : "invisible"}>
161-
<VSCodeCheckbox checked={useRelease} onClick={onClickUseRelease}>Use '--release' option</VSCodeCheckbox>
160+
<VSCodeCheckbox checked={useRelease} onClick={onClickUseRelease}>Use '--release' option for cross-compilation (Java 9 and later)</VSCodeCheckbox>
162161
</div>
163-
<div className={`flex-center mt-1 mb-2 ${showReleaseFlag && useRelease ? "" : "invisible"}`}>
164-
<span className="mr-1">Compliance level:</span>
165-
<VSCodeDropdown value={complianceLevel}>
166-
{jdkLevels(complianceLevel, "compliance", onClickComplianceLevel)}
167-
</VSCodeDropdown>
168-
</div>
169-
<div className={`flex-center mt-1 mb-2 ${showReleaseFlag && useRelease ? "invisible" : ""}`}>
170-
<span className="mr-1">Source compatibility:</span>
171-
<VSCodeDropdown value={sourceLevel}>
172-
{jdkLevels(sourceLevel, "source", onClickSourceLevel)}
173-
</VSCodeDropdown>
174-
</div>
175-
<div className={`flex-center mb-2 ${showReleaseFlag && useRelease ? "invisible" : ""}`}>
176-
<span className="mr-1">Target compatibility:</span>
177-
<VSCodeDropdown value={targetLevel}>
178-
{jdkLevels(targetLevel, "target", onClickTargetLevel)}
179-
</VSCodeDropdown>
162+
<div>
163+
<VSCodeDataGrid gridTemplateColumns="40% 60%">
164+
<VSCodeDataGridRow className={showReleaseFlag && useRelease ? "" : "invisible"}>
165+
<VSCodeDataGridCell className="flex-center pl-0 pr-0" gridColumn="1">
166+
<span>Bytecode version:</span>
167+
</VSCodeDataGridCell>
168+
<VSCodeDataGridCell className="flex-center pl-0 pr-0" gridColumn="2">
169+
<VSCodeDropdown value={complianceLevel}>
170+
{jdkLevels(complianceLevel, "compliance", onClickComplianceLevel)}
171+
</VSCodeDropdown>
172+
</VSCodeDataGridCell>
173+
</VSCodeDataGridRow>
174+
<VSCodeDataGridRow className={showReleaseFlag && useRelease ? "invisible" : ""}>
175+
<VSCodeDataGridCell className="flex-center pl-0 pr-0" gridColumn="1">
176+
<span>Source compatibility:</span>
177+
</VSCodeDataGridCell>
178+
<VSCodeDataGridCell className="flex-center pl-0 pr-0" gridColumn="2">
179+
<VSCodeDropdown value={sourceLevel}>
180+
{jdkLevels(sourceLevel, "source", onClickSourceLevel)}
181+
</VSCodeDropdown>
182+
</VSCodeDataGridCell>
183+
</VSCodeDataGridRow>
184+
<VSCodeDataGridRow className={showReleaseFlag && useRelease ? "invisible" : ""}>
185+
<VSCodeDataGridCell className="flex-center pl-0 pr-0" gridColumn="1">
186+
<span>Target compatibility:</span>
187+
</VSCodeDataGridCell>
188+
<VSCodeDataGridCell className="flex-center pl-0 pr-0" gridColumn="2">
189+
<VSCodeDropdown value={targetLevel}>
190+
{jdkLevels(targetLevel, "target", onClickTargetLevel)}
191+
</VSCodeDropdown>
192+
</VSCodeDataGridCell>
193+
</VSCodeDataGridRow>
194+
</VSCodeDataGrid>
180195
</div>
181196
<div className={`mb-2 ${showSourceTargetWarning ? "" : "invisible"}`}>
182197
<span className="setting-section-warning">

src/project-settings/assets/compiler/features/compilerConfigurationViewSlice.tsx

+21-7
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,27 @@ export const compilerConfigurationViewSlice = createSlice({
3636
},
3737
loadCompilerSettings: (state, action) => {
3838
const activeProjectIndex = action.payload.activeProjectIndex;
39-
state.data.useRelease[activeProjectIndex] = action.payload.useRelease;
40-
state.data.enablePreview[activeProjectIndex] = action.payload.enablePreview;
41-
state.data.complianceLevel[activeProjectIndex] = action.payload.complianceLevel;
42-
state.data.sourceLevel[activeProjectIndex] = action.payload.sourceLevel;
43-
state.data.targetLevel[activeProjectIndex] = action.payload.targetLevel;
44-
state.data.generateDebugInfo[activeProjectIndex] = action.payload.generateDebugInfo;
45-
state.data.storeMethodParamNames[activeProjectIndex] = action.payload.storeMethodParamNames;
39+
if (action.payload.useRelease !== undefined) {
40+
state.data.useRelease[activeProjectIndex] = action.payload.useRelease;
41+
}
42+
if (action.payload.enablePreview !== undefined) {
43+
state.data.enablePreview[activeProjectIndex] = action.payload.enablePreview;
44+
}
45+
if (action.payload.complianceLevel !== undefined) {
46+
state.data.complianceLevel[activeProjectIndex] = action.payload.complianceLevel;
47+
}
48+
if (action.payload.sourceLevel !== undefined) {
49+
state.data.sourceLevel[activeProjectIndex] = action.payload.sourceLevel;
50+
}
51+
if (action.payload.targetLevel !== undefined) {
52+
state.data.targetLevel[activeProjectIndex] = action.payload.targetLevel;
53+
}
54+
if (action.payload.generateDebugInfo !== undefined) {
55+
state.data.generateDebugInfo[activeProjectIndex] = action.payload.generateDebugInfo;
56+
}
57+
if (action.payload.storeMethodParamNames !== undefined) {
58+
state.data.storeMethodParamNames[activeProjectIndex] = action.payload.storeMethodParamNames;
59+
}
4660
},
4761
updateUseRelease: (state, action) => {
4862
const activeProjectIndex = action.payload.activeProjectIndex;

src/project-settings/handlers/CompilerRequestHandler.ts

+9
Original file line numberDiff line numberDiff line change
@@ -96,8 +96,17 @@ export class CompilerRequestHandler implements vscode.Disposable {
9696
compilerSettings.set(ADD_LINE_NUMBER_ATTRIBUTE, generateDebugInfo ? "generate" : "do not generate");
9797
compilerSettings.set(ADD_SOURCE_FILE_NAME, generateDebugInfo ? "generate" : "do not generate");
9898
compilerSettings.set(STORE_METHOD_PARAMETER_INFO, storeMethodParamNames ? "generate" : "do not generate");
99+
99100
await vscode.commands.executeCommand("java.execute.workspaceCommand",
100101
"java.project.updateSettings", uri, JSON.stringify([...compilerSettings]));
102+
103+
// Update the version according to the result.
104+
this.webview.postMessage({
105+
command: "compiler.onDidGetCompilerSettings",
106+
complianceLevel: compilerSettings.get(COMPLIANCE_LEVEL),
107+
sourceLevel: compilerSettings.get(SOURCE_COMPATIBILITY),
108+
targetLevel: compilerSettings.get(TARGET_COMPATIBILITY),
109+
});
101110
});
102111

103112
public dispose() {

0 commit comments

Comments
 (0)