mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
SdkListModelBuilder - filter SimpleJavaSdkType if there are alternatives
GitOrigin-RevId: a998825706273e7428c9c3d8a9da29da2b9bc74f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
6fa51cca81
commit
18c9b23282
+20
-7
@@ -5,11 +5,9 @@ import com.google.common.collect.ImmutableList;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.openapi.Disposable;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.projectRoots.Sdk;
|
||||
import com.intellij.openapi.projectRoots.SdkType;
|
||||
import com.intellij.openapi.projectRoots.SdkTypeId;
|
||||
import com.intellij.openapi.projectRoots.*;
|
||||
import com.intellij.openapi.projectRoots.impl.DependentSdkType;
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkListItem.*;
|
||||
import com.intellij.openapi.roots.ui.configuration.SdkDetector.DetectedSdkListener;
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel;
|
||||
@@ -27,10 +25,9 @@ import java.util.Arrays;
|
||||
import java.util.EventListener;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public class SdkListModelBuilder {
|
||||
private static final Logger LOG = Logger.getInstance(SdkListModelBuilder.class);
|
||||
|
||||
@Nullable private final Project myProject;
|
||||
@NotNull private final ProjectSdksModel mySdkModel;
|
||||
@NotNull private final Condition<? super Sdk> mySdkFilter;
|
||||
@@ -60,10 +57,12 @@ public class SdkListModelBuilder {
|
||||
mySdkTypeFilter = type -> type != null
|
||||
&& (sdkTypeFilter == null || sdkTypeFilter.value(type));
|
||||
|
||||
Condition<SdkTypeId> simpleJavaTypeFix = notSimpleJavaSdkTypeIfAlternativeExists();
|
||||
mySdkTypeCreationFilter = type -> type != null
|
||||
&& (!(type instanceof SdkType) || ((SdkType)type).allowCreationByUser())
|
||||
&& mySdkTypeFilter.value(type)
|
||||
&& (sdkTypeCreationFilter == null || sdkTypeCreationFilter.value(type));
|
||||
&& (sdkTypeCreationFilter == null || sdkTypeCreationFilter.value(type))
|
||||
&& simpleJavaTypeFix.value(type);
|
||||
|
||||
mySdkFilter = sdk -> sdk != null
|
||||
&& mySdkTypeFilter.value(sdk.getSdkType())
|
||||
@@ -299,4 +298,18 @@ public class SdkListModelBuilder {
|
||||
});
|
||||
return clone;
|
||||
}
|
||||
|
||||
private static Condition<SdkTypeId> notSimpleJavaSdkTypeIfAlternativeExists() {
|
||||
boolean hasNotSimple = Stream.of(SdkType.getAllTypes())
|
||||
.filter(SimpleJavaSdkType.notSimpleJavaSdkType()::value)
|
||||
.anyMatch(it -> it instanceof JavaSdkType && !(it instanceof DependentSdkType));
|
||||
|
||||
if (hasNotSimple) {
|
||||
//we found another JavaSdkType (e.g. JavaSdkImpl), there is no need for SimpleJavaSdkType
|
||||
return SimpleJavaSdkType.notSimpleJavaSdkType();
|
||||
} else {
|
||||
//there is only one JavaSdkType, so it is no need to filter anything
|
||||
return id -> true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user