From 487e1ddddc72c2a381982e841ab34cffd1b6864c Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 31 Mar 2020 20:26:33 +0300 Subject: [PATCH] Wizard: do not update path & artifactId value for invalid project name --- .../wizard/ui/firstStep/FirstWizardStepComponent.kt | 7 +++++-- .../jetbrains/kotlin/tools/projectWizard/core/Context.kt | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt index 4a9224f0ade..4b906471140 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt @@ -78,8 +78,11 @@ class ProjectSettingsComponent(ideWizard: IdeWizard) : DynamicComponent(ideWizar super.onValueUpdated(reference) when (reference?.path) { StructurePlugin::name.path -> { - tryUpdateLocationByProjectName() - tryArtifactIdByProjectName() + val isNameValid = read { StructurePlugin::name.reference.validate().isOk } + if (isNameValid) { + tryUpdateLocationByProjectName() + tryArtifactIdByProjectName() + } } StructurePlugin::artifactId.path -> { artifactIdWasUpdatedByHand = true diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt index 541b5b66ddd..0083b7b7678 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Context.kt @@ -192,6 +192,9 @@ class Context private constructor( val > SettingReference.setting: Setting get() = with(this) { getSetting() } + fun > SettingReference.validate() = + setting.validator.validate(this@Reader, settingValue) + inline operator fun invoke(reader: Reader.() -> T): T = reader() }