From 9075a83ebe4f442f0e0e4626d19f729db14f5e46 Mon Sep 17 00:00:00 2001 From: Anton Yalyshev Date: Tue, 29 Oct 2019 21:03:19 +0300 Subject: [PATCH] Prevents creating of new Gradle-based Kotlin project in a path of previous one --- ...eAbstractMultiplatformModuleBuilder.kt.193 | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt.193 b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt.193 index b59cb995f7a..70f55ec8db2 100644 --- a/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt.193 +++ b/idea/idea-gradle/src/org/jetbrains/kotlin/idea/configuration/KotlinGradleAbstractMultiplatformModuleBuilder.kt.193 @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.idea.configuration +import com.intellij.ide.util.projectWizard.ModuleWizardStep +import com.intellij.ide.util.projectWizard.WizardContext import com.intellij.openapi.externalSystem.ExternalSystemModulePropertyManager import com.intellij.openapi.externalSystem.model.ProjectSystemId import com.intellij.openapi.externalSystem.model.project.ModuleData @@ -21,8 +23,10 @@ import org.jetbrains.plugins.gradle.frameworkSupport.BuildScriptDataBuilder import org.jetbrains.plugins.gradle.service.project.wizard.GradleModuleBuilder import org.jetbrains.plugins.gradle.settings.DistributionType import com.intellij.openapi.externalSystem.model.project.ProjectData +import com.intellij.openapi.roots.ui.configuration.ModulesProvider import org.jetbrains.kotlin.idea.statistics.FUSEventGroups import org.jetbrains.kotlin.idea.statistics.KotlinFUSLogger +import org.jetbrains.plugins.gradle.service.project.wizard.GradleStructureWizardStep import javax.swing.Icon abstract class KotlinGradleAbstractMultiplatformModuleBuilder( @@ -33,6 +37,29 @@ abstract class KotlinGradleAbstractMultiplatformModuleBuilder( override fun getNodeIcon(): Icon = KotlinIcons.MPP + /* + This overriding is a temporary workaround of a problem with how we use GradleModuleBuilder(). + IDEA implies that we will create new GradleModuleBuilder every time we call Kotlin New Project Wizard. + But we create it once for every kind of GradleModuleBuilder-based New Project Wizard and the just reuse it. + How the problem looks for a user: KT-34229 + Ticket that should properly fix it: KT-34591 + */ + override fun cleanup() { + super.cleanup() + this.name = null + this.contentEntryPath = null + this.moduleFilePath = null + this.projectId = null + } + + override fun createWizardSteps(wizardContext: WizardContext, modulesProvider: ModulesProvider): Array { + super.createWizardSteps(wizardContext, modulesProvider) // initializes GradleModuleBuilder.myWizardContext + return arrayOf( + // Let us have to edit project name only + GradleStructureWizardStep(this, wizardContext) + ) + } + private fun setupMppModule(module: Module, parentDir: VirtualFile): VirtualFile? { val moduleDir = parentDir.createChildDirectory(this, mppDirName) val buildGradle = moduleDir.createChildData(null, "build.gradle")