Skip to content

Commit 2bae961

Browse files
authored
show project/unmanaged folder section on demand (#517)
* show project/unmanaged folder section on demand * address comments
1 parent 0a0bba1 commit 2bae961

File tree

3 files changed

+36
-27
lines changed

3 files changed

+36
-27
lines changed

src/java-runtime/assets/jdk.configure.project.tsx

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,8 @@ export const ProjectRuntimePanel = (props: {
2020
const unmanagedProject = projectRuntimes.find(p => p.projectType === ProjectType.UnmanagedFolder);
2121
const defaultJDK = unmanagedProject ? unmanagedProject.runtimePath : undefined;
2222

23-
const sourceLevelRuntimePanels = _.isEmpty(sourceLevelEntries) ? (<p className="text-warning">No Maven/Gradle project recognized.</p>)
24-
: sourceLevelEntries.map(entry => (<ManagedProjectRuntimePanel entry={entry} jdks={jdkEntries} key={entry.sourceLevel} />));
25-
const invisibleProjectsRuntimePanel = unmanagedProject ? (defaultJDK && <InvisibleProjectsRuntimePanel jdks={jdkEntries} defaultJDK={unmanagedProject.runtimePath} />)
26-
: (<p className="text-warning">No folder recognized.</p>);
23+
const sourceLevelRuntimePanels = !_.isEmpty(sourceLevelEntries) && <ManagedProjectRuntimePanel entries={sourceLevelEntries} jdks={jdkEntries} />;
24+
const invisibleProjectsRuntimePanel = unmanagedProject && defaultJDK && <InvisibleProjectsRuntimePanel jdks={jdkEntries} defaultJDK={unmanagedProject.runtimePath} />;
2725

2826
const projectEntries = projectRuntimes
2927
.filter(p => p.projectType !== ProjectType.Default)
@@ -83,15 +81,9 @@ export const ProjectRuntimePanel = (props: {
8381

8482
<div className="col-6">
8583
{/* Managed Projects */}
86-
<h3 className="font-weight-light">Maven/Gradle Projects</h3>
87-
<p>For projects managed by build tools, Java version is specified in build scripts. Here you can change the mapping between Java version and JDK used.</p>
8884
{sourceLevelRuntimePanels}
8985

9086
{/* invisible projects */}
91-
<h3 className="font-weight-light">Unmanaged Folders</h3>
92-
<p>
93-
For folders containing .java files, but not managed by build tools like Maven/Gradle, a default JDK is used.
94-
</p>
9587
{invisibleProjectsRuntimePanel}
9688
</div>
9789
</div>

src/java-runtime/assets/project.invisible.tsx

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,24 @@ export class InvisibleProjectsRuntimePanel extends React.Component<InvisibleProj
1414
render = () => {
1515
const { jdks, defaultJDK } = this.props;
1616
return (
17-
<div className="row">
18-
<div className="col">
19-
<div className="row sourcelevel">
20-
<div className="col">
21-
<div className="input-group mb-3">
22-
<div className="input-group-prepend">
23-
<label className="input-group-text" htmlFor="invisible">Default JDK:</label>
17+
<div>
18+
<h3 className="font-weight-light">Unmanaged Folders</h3>
19+
<p>For folders containing .java files, but <strong>NOT</strong> managed by build tools like Maven/Gradle, a default JDK is used.</p>
20+
<div className="row">
21+
<div className="col">
22+
<div className="row sourcelevel">
23+
<div className="col">
24+
<div className="input-group mb-3">
25+
<div className="input-group-prepend">
26+
<label className="input-group-text" htmlFor="invisible">Default JDK:</label>
27+
</div>
28+
<select className="form-control" id="invisible" defaultValue={defaultJDK} onChange={this.onSelectionChange}>
29+
{defaultJDK === undefined && <option key="placeholder" hidden disabled selected>-- Select --</option>}
30+
{jdks.map(jdk => (
31+
<option key={jdk.name} value={jdk.fspath} >{jdk.name}</option>
32+
))}
33+
</select>
2434
</div>
25-
<select className="form-control" id="invisible" defaultValue={defaultJDK} onChange={this.onSelectionChange}>
26-
{ defaultJDK === undefined && <option key="placeholder" hidden disabled selected>-- Select --</option> }
27-
{jdks.map(jdk => (
28-
<option key={jdk.name} value={jdk.fspath} >{jdk.name}</option>
29-
))}
30-
</select>
3135
</div>
3236
</div>
3337
</div>

src/java-runtime/assets/project.managed.tsx

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,33 @@ import { sourceLevelDisplayName, sourceLevelMajorVersion } from "../utils/misc";
77
import { updateRuntimePath } from "./vscode.api";
88

99
interface ManagedProjectRuntimePanelProps {
10-
entry: {
10+
entries: {
1111
sourceLevel: string;
1212
runtimePath: string;
13-
};
13+
}[];
1414
jdks: JavaRuntimeEntry[];
1515
}
1616

1717
export class ManagedProjectRuntimePanel extends React.Component<ManagedProjectRuntimePanelProps, {}> {
1818

1919
render = () => {
20-
const { sourceLevel, runtimePath } = this.props.entry;
20+
return (
21+
<div>
22+
<h3 className="font-weight-light">Maven/Gradle Projects</h3>
23+
<p>For projects managed by build tools, Java version is specified in build scripts. Here you can change the mapping between Java version and JDK used.</p>
24+
{this.props.entries.map(this.getRuntimeSelectorComponent)}
25+
</div>
26+
);
27+
}
28+
29+
getRuntimeSelectorComponent = (entry: {
30+
sourceLevel: string;
31+
runtimePath: string;
32+
}) => {
33+
const { sourceLevel, runtimePath } = entry;
2134

2235
return (
23-
<div className="row">
36+
<div className="row" key={sourceLevel}>
2437
<div className="col">
2538
<div className="row sourcelevel">
2639
<div className="col">

0 commit comments

Comments
 (0)