mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[new project wizard][IDEA-378105] added an explicit assertation for the JDK intent
GitOrigin-RevId: 521e8d48297264856ba11ea3d68bc7de82f5181f
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1852622451
commit
0b6148a3e7
@@ -19,6 +19,7 @@ import com.intellij.openapi.application.asContextElement
|
||||
import com.intellij.openapi.components.Service
|
||||
import com.intellij.openapi.components.service
|
||||
import com.intellij.openapi.observable.properties.GraphProperty
|
||||
import com.intellij.openapi.observable.properties.ObservableMutableProperty
|
||||
import com.intellij.openapi.observable.properties.ObservableProperty
|
||||
import com.intellij.openapi.observable.util.bind
|
||||
import com.intellij.openapi.observable.util.transform
|
||||
@@ -88,7 +89,7 @@ fun NewProjectWizardStep.projectWizardJdkComboBox(
|
||||
row,
|
||||
requireNotNull(baseData) {
|
||||
"Expected ${NewProjectWizardBaseStep::class.java.simpleName} in the new project wizard step tree."
|
||||
}.pathProperty,
|
||||
}.pathProperty.toEelDescriptorProperty(),
|
||||
intentProperty,
|
||||
context.disposable,
|
||||
context.projectJdk,
|
||||
@@ -107,15 +108,26 @@ fun NewProjectWizardStep.projectWizardJdkComboBox(
|
||||
*/
|
||||
fun projectWizardJdkComboBox(
|
||||
row: Row,
|
||||
locationProperty: GraphProperty<String>,
|
||||
intentProperty: GraphProperty<ProjectWizardJdkIntent>,
|
||||
eelDescriptorProperty: ObservableProperty<EelDescriptor>,
|
||||
intentProperty: ObservableMutableProperty<ProjectWizardJdkIntent>,
|
||||
disposable: Disposable,
|
||||
projectJdk: Sdk? = null,
|
||||
sdkFilter: (Sdk) -> Boolean = { true },
|
||||
jdkPredicate: ProjectWizardJdkPredicate? = ProjectWizardJdkPredicate.IsJdkSupported(),
|
||||
): Cell<ProjectWizardJdkComboBox> {
|
||||
val eelDescriptorProperty = locationProperty.transform { Path.of(it).getEelDescriptor() }
|
||||
return row.cell(ProjectWizardJdkComboBox(projectJdk, disposable, sdkFilter))
|
||||
val comboBox = ProjectWizardJdkComboBox(projectJdk, disposable, sdkFilter)
|
||||
|
||||
val intentValue = intentProperty.get()
|
||||
require(intentValue == NoJdk) {
|
||||
"""
|
||||
The default value of intentProperty is controlled by ${ProjectWizardJdkComboBox::class.java.simpleName}.
|
||||
All external default values of intentProperty will be ignored.
|
||||
External default value = '$intentValue', expected value = '$NoJdk'.
|
||||
""".trimIndent()
|
||||
}
|
||||
intentProperty.set(comboBox.item)
|
||||
|
||||
return row.cell(comboBox)
|
||||
.columns(COLUMNS_LARGE)
|
||||
.apply {
|
||||
val commentCell = comment(component.comment, 50)
|
||||
@@ -633,3 +645,7 @@ internal fun ProjectWizardJdkComboBox.bindEelDescriptor(eelDescriptorProperty: O
|
||||
refreshJdks(eelDescriptor)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun ObservableProperty<String>.toEelDescriptorProperty(): ObservableProperty<EelDescriptor> {
|
||||
return transform { Path.of(it).getEelDescriptor() }
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import com.intellij.ide.JavaUiBundle
|
||||
import com.intellij.ide.projectWizard.ProjectWizardJdkIntent
|
||||
import com.intellij.ide.projectWizard.generators.JdkDownloadService
|
||||
import com.intellij.ide.projectWizard.projectWizardJdkComboBox
|
||||
import com.intellij.ide.projectWizard.toEelDescriptorProperty
|
||||
import com.intellij.ide.starters.JavaStartersBundle
|
||||
import com.intellij.ide.starters.local.StarterModuleBuilder
|
||||
import com.intellij.ide.starters.shared.ValidationFunctions.*
|
||||
@@ -145,7 +146,7 @@ abstract class CommonStarterInitialStep(
|
||||
row(JavaUiBundle.message("label.project.wizard.new.project.jdk")) {
|
||||
projectWizardJdkComboBox(
|
||||
this,
|
||||
locationProperty,
|
||||
locationProperty.toEelDescriptorProperty(),
|
||||
jdkIntentProperty,
|
||||
wizardContext.disposable,
|
||||
wizardContext.projectJdk,
|
||||
|
||||
Reference in New Issue
Block a user