diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt index d6305d4263f6..6b84aec293c6 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkDownloadDialog.kt @@ -120,7 +120,11 @@ private class JdkVersionVendorCombobox: ComboBox() { } override fun customize(item: SimpleColoredComponent, value: JdkVersionVendorItem, index: Int, isSelected: Boolean, hasFocus: Boolean) { - item.append(value.item.product.packagePresentationText, SimpleTextAttributes.REGULAR_ATTRIBUTES) + val title = value.item.product.packagePresentationText.replace("Axiom JSC", "").trim() + if (isLicenseAcceptedJDK(value)) + item.append(title, SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES) + else + item.append(title, SimpleTextAttributes.REGULAR_ATTRIBUTES) val additionalInfo = mutableListOf() val jdkVersion = value.item.jdkVersion @@ -133,7 +137,18 @@ private class JdkVersionVendorCombobox: ComboBox() { } } -private fun List.sortedForUI() = this.sortedBy { it.item.product.packagePresentationText.lowercase() } + +private fun List.sortedForUI() = this + .sortedWith( + Comparator { i1, i2 -> + val s1: String = i1.item.product.packagePresentationText + val s2: String = i2.item.product.packagePresentationText + if (s1.contains("Axiom", ignoreCase = true)) -1 + else s1.compareTo(s2) + } + ) + +private fun isLicenseAcceptedJDK(vendor: JdkVersionVendorItem): Boolean = vendor.item.isLicenseAccepted @VisibleForTesting @Internal diff --git a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt index 2a91f15ebd40..d51ac9a8afb6 100644 --- a/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt +++ b/platform/lang-impl/src/com/intellij/openapi/projectRoots/impl/jdkDownloader/JdkList.kt @@ -77,6 +77,8 @@ data class JdkItem( val jdkVendorVersion: String?, val suggestedSdkName: String, + val isLicenseAccepted: Boolean, + val os: String, /** * @see presentableArchIfNeeded @@ -434,6 +436,8 @@ object JdkListParser { jdkVendorVersion = (item["jdk_vendor_version"] as? JsonPrimitive)?.contentOrNull, suggestedSdkName = (item["suggested_sdk_name"] as? JsonPrimitive)?.contentOrNull ?: return emptyList(), + isLicenseAccepted = item["is_license_accepted"]?.let { filters.testPredicate(it) == true } ?: false, + os = (pkg["os"] as? JsonPrimitive)?.contentOrNull ?: return emptyList(), arch = (pkg["arch"] as? JsonPrimitive)?.contentOrNull ?: return emptyList(), packageType = (pkg["package_type"] as? JsonPrimitive)?.contentOrNull?.let(JdkPackageType.Companion::findType) ?: return emptyList(),