From 7766e86341b76da0b666689f8bb7e97e826debae Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Mon, 9 Apr 2018 14:07:20 +0300 Subject: [PATCH] IDEA-188581 Project Structure: SDK: two JDKs in Add new SDK list --- .../openapi/roots/ui/configuration/JdkComboBox.java | 5 +++-- .../ui/configuration/ProjectJdksConfigurable.java | 4 +++- .../projectRoot/JdkListConfigurable.java | 6 +++--- .../openapi/projectRoots/SimpleJavaSdkType.java | 12 ++++++++++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java index 2bde5bd70927..b0becb1f37d5 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/JdkComboBox.java @@ -22,7 +22,6 @@ import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkType; import com.intellij.openapi.projectRoots.SdkTypeId; -import com.intellij.openapi.projectRoots.SimpleJavaSdkType; import com.intellij.openapi.roots.ui.OrderEntryAppearanceService; import com.intellij.openapi.roots.ui.configuration.projectRoot.JdkListConfigurable; import com.intellij.openapi.roots.ui.configuration.projectRoot.ProjectSdksModel; @@ -46,6 +45,8 @@ import java.awt.*; import java.util.Arrays; import java.util.Collection; +import static com.intellij.openapi.projectRoots.SimpleJavaSdkType.notSimpleJavaSdkType; + /** * @author Eugene Zhuravlev * @since May 18, 2005 @@ -126,7 +127,7 @@ public class JdkComboBox extends ComboBoxWithWidePopup getCreationFilter(@Nullable Condition creationFilter) { - return sdkTypeId -> !(sdkTypeId instanceof SimpleJavaSdkType) && (creationFilter == null || creationFilter.value(sdkTypeId)); + return notSimpleJavaSdkType(creationFilter); } @Override diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java index 2c053aae200e..b3745d4da98a 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectJdksConfigurable.java @@ -42,6 +42,8 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.awt.*; import java.util.*; +import static com.intellij.openapi.projectRoots.SimpleJavaSdkType.notSimpleJavaSdkType; + public class ProjectJdksConfigurable extends MasterDetailsComponent { private final ProjectSdksModel myProjectJdksModel; private final Project myProject; @@ -154,7 +156,7 @@ public class ProjectJdksConfigurable extends MasterDetailsComponent { myProjectJdksModel.createAddActions(group, myTree, projectJdk -> { addNode(new MyNode(new JdkConfigurable(((ProjectJdkImpl)projectJdk), myProjectJdksModel, TREE_UPDATER, myHistory, myProject), false), myRoot); selectNodeInTree(findNodeByObject(myRoot, projectJdk)); - }); + }, notSimpleJavaSdkType()); actions.add(new MyActionGroupWrapper(group)); actions.add(new MyDeleteAction(Conditions.alwaysTrue())); return actions; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java index 7ffeadfd9ac0..e9d65aa8a10b 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/JdkListConfigurable.java @@ -12,7 +12,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.Sdk; import com.intellij.openapi.projectRoots.SdkModel; -import com.intellij.openapi.projectRoots.SimpleJavaSdkType; import com.intellij.openapi.projectRoots.impl.ProjectJdkImpl; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable; @@ -28,6 +27,8 @@ import org.jetbrains.annotations.Nullable; import javax.swing.tree.TreePath; import java.util.*; +import static com.intellij.openapi.projectRoots.SimpleJavaSdkType.notSimpleJavaSdkType; + public class JdkListConfigurable extends BaseStructureConfigurable { @NotNull private final ProjectSdksModel myJdksTreeModel; @@ -164,8 +165,7 @@ public class JdkListConfigurable extends BaseStructureConfigurable { @Override public AnAction[] getChildren(@Nullable final AnActionEvent e) { DefaultActionGroup group = new DefaultActionGroup(ProjectBundle.message("add.new.jdk.text"), true); - myJdksTreeModel.createAddActions(group, myTree, projectJdk -> addJdkNode(projectJdk, true), - sdkTypeId -> !(sdkTypeId instanceof SimpleJavaSdkType)); + myJdksTreeModel.createAddActions(group, myTree, projectJdk -> addJdkNode(projectJdk, true), notSimpleJavaSdkType()); return group.getChildren(null); } }; diff --git a/platform/lang-api/src/com/intellij/openapi/projectRoots/SimpleJavaSdkType.java b/platform/lang-api/src/com/intellij/openapi/projectRoots/SimpleJavaSdkType.java index 1da6ea62ff78..6aa5463e8a48 100644 --- a/platform/lang-api/src/com/intellij/openapi/projectRoots/SimpleJavaSdkType.java +++ b/platform/lang-api/src/com/intellij/openapi/projectRoots/SimpleJavaSdkType.java @@ -5,10 +5,12 @@ package com.intellij.openapi.projectRoots; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.impl.SdkVersionUtil; +import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.io.FileUtil; import com.intellij.util.lang.JavaVersion; import org.jdom.Element; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jps.model.java.JdkVersionDetector; import java.io.File; @@ -95,4 +97,14 @@ public class SimpleJavaSdkType extends SdkType implements JavaSdkType { JdkVersionDetector.JdkVersionInfo jdkInfo = SdkVersionUtil.getJdkVersionInfo(sdkHome); return jdkInfo != null ? JdkVersionDetector.formatVersionString(jdkInfo.version) : null; } + + @NotNull + public static Condition notSimpleJavaSdkType() { + return sdkTypeId -> !(sdkTypeId instanceof SimpleJavaSdkType); + } + + @NotNull + public static Condition notSimpleJavaSdkType(@Nullable Condition condition) { + return sdkTypeId -> notSimpleJavaSdkType().value(sdkTypeId) && (condition == null || condition.value(sdkTypeId)); + } } \ No newline at end of file