Merge pull request #383 from yushijinhun/fix-382

Fix #382
This commit is contained in:
huanghongxun 2018-07-13 18:39:02 +08:00 committed by GitHub
commit a0ff843d0c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -45,7 +45,6 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -53,6 +52,7 @@ public final class VersionSettingsController {
private VersionSetting lastVersionSetting = null; private VersionSetting lastVersionSetting = null;
private Profile profile; private Profile profile;
private String versionId; private String versionId;
private boolean javaItemsLoaded;
@FXML private VBox rootPane; @FXML private VBox rootPane;
@FXML private ScrollPane scroll; @FXML private ScrollPane scroll;
@ -90,6 +90,7 @@ public final class VersionSettingsController {
(variables.<List<JavaVersion>>get("list")).stream() (variables.<List<JavaVersion>>get("list")).stream()
.map(javaVersion -> javaItem.createChildren(javaVersion.getVersion(), javaVersion.getBinary().getAbsolutePath(), javaVersion)) .map(javaVersion -> javaItem.createChildren(javaVersion.getVersion(), javaVersion.getBinary().getAbsolutePath(), javaVersion))
.collect(Collectors.toList())); .collect(Collectors.toList()));
javaItemsLoaded = true;
initializeSelectedJava(); initializeSelectedJava();
}); });
@ -212,23 +213,34 @@ public final class VersionSettingsController {
private void initializeSelectedJava() { private void initializeSelectedJava() {
if (lastVersionSetting == null if (lastVersionSetting == null
|| !JavaVersion.getJREsImmediately().isPresent() /* JREs are still being loaded */) { || !javaItemsLoaded /* JREs are still being loaded */) {
return; return;
} }
boolean flag = false; List<Toggle> toggles = javaItem.getGroup().getToggles();
Toggle defaultToggle = null; if ("Custom".equals(lastVersionSetting.getJava())) {
for (Toggle toggle : javaItem.getGroup().getToggles()) { toggles.stream()
if (toggle.getUserData() == Lang.invoke(lastVersionSetting::getJavaVersion)) { .filter(javaItem::isCustomToggle)
toggle.setSelected(true); .findFirst()
flag = true; .get().setSelected(true);
} else if (toggle.getUserData() == JavaVersion.fromCurrentEnvironment()) { } else {
defaultToggle = toggle; JavaVersion selectedJava;
try {
selectedJava = lastVersionSetting.getJavaVersion();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
return;
} }
} toggles.stream()
.filter(it -> it.getUserData() == selectedJava)
if (!flag) { .findFirst()
Optional.ofNullable(defaultToggle).ifPresent(t -> t.setSelected(true)); .orElseGet( // fallback to select current java
() -> toggles.stream()
.filter(it -> it.getUserData() == JavaVersion.fromCurrentEnvironment())
.findFirst()
.get())
.setSelected(true);
;
} }
} }