From 96b4165d5810b49647fdb095a39631d129670adb Mon Sep 17 00:00:00 2001 From: Sergei Vorobyov Date: Thu, 26 Jan 2023 15:52:30 +0100 Subject: [PATCH] [cleanup] removed unused and confusing NPW data extension properties Some plugin writers occasionally chooses wrong property. For example build-system from Java language instead of Scala. GitOrigin-RevId: a92e2b974a1c782271a5b8e6e9dde15617592e0a --- .../generators/AssetsNewProjectWizardStep.kt | 8 ++ .../BuildSystemJavaNewProjectWizardData.kt | 9 ++- .../IntelliJJavaNewProjectWizard.kt | 16 ++-- .../IntelliJJavaNewProjectWizardData.kt | 12 ++- .../IntelliJNewProjectWizardData.kt | 19 ++++- .../IntelliJNewProjectWizardStep.kt | 4 +- .../projectWizard/NewProjectWizardTest.java | 15 ++-- .../wizard/MavenizedNewProjectWizardData.kt | 14 +++- .../wizard/MavenizedNewProjectWizardStep.kt | 8 +- .../ide/util/projectWizard/WizardContext.java | 2 +- .../ide/wizard/GitNewProjectWizardData.kt | 5 +- .../wizard/LanguageNewProjectWizardData.kt | 8 +- .../ide/wizard/NewProjectWizardBaseData.kt | 23 +++--- .../wizard/NewProjectWizardLanguageStep.kt | 9 ++- .../wizard/GradleJavaNewProjectWizard.kt | 21 +++-- .../wizard/GradleJavaNewProjectWizardData.kt | 27 +++---- .../wizard/GradleNewProjectWizardData.kt | 5 +- .../wizard/GradleNewProjectWizardStep.kt | 14 ++-- .../groovy/GradleGroovyNewProjectWizard.kt | 3 - .../importing/GradleCreateProjectTestCase.kt | 40 +++++----- .../importing/GradleProjectWizardTest.java | 76 +++++++++---------- .../BuildSystemGroovyNewProjectWizardData.kt | 8 +- .../wizard/IntelliJGroovyNewProjectWizard.kt | 6 +- .../gradle/GradleKotlinNewProjectWizard.kt | 11 +-- .../BuildSystemKotlinNewProjectWizardData.kt | 9 ++- .../IntelliJKotlinNewProjectWizard.kt | 4 +- .../maven/MavenKotlinNewProjectWizard.kt | 4 +- .../wizard/MavenGroovyNewProjectWizard.kt | 4 +- .../wizards/MavenJavaNewProjectWizard.kt | 15 ++-- .../wizards/MavenJavaNewProjectWizardData.kt | 26 +++++++ .../wizards/MavenNewProjectWizardData.kt | 14 ++++ .../wizards/MavenNewProjectWizardStep.kt | 18 +++-- .../MavenArchetypeNewProjectWizard.kt | 12 ++- .../newProject/PythonNewProjectWizard.kt | 10 +-- 34 files changed, 264 insertions(+), 215 deletions(-) create mode 100644 plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizardData.kt create mode 100644 plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardData.kt diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/AssetsNewProjectWizardStep.kt b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/AssetsNewProjectWizardStep.kt index e8f1864a6622..dc4502f04852 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/AssetsNewProjectWizardStep.kt +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/AssetsNewProjectWizardStep.kt @@ -8,6 +8,7 @@ import com.intellij.ide.starters.local.GeneratorAsset import com.intellij.ide.starters.local.GeneratorTemplateFile import com.intellij.ide.starters.local.generator.AssetsProcessor import com.intellij.ide.wizard.* +import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData import com.intellij.openapi.application.invokeAndWaitIfNeeded import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.util.io.* @@ -29,6 +30,13 @@ abstract class AssetsNewProjectWizardStep(parent: NewProjectWizardStep) : Abstra private val templateProperties = HashMap() private val filesToOpen = HashSet() + init { + val baseData = baseData + if (baseData != null) { + outputDirectory = baseData.path + "/" + baseData.name + } + } + @ApiStatus.Internal internal fun getTemplateProperties(): Map { return templateProperties diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/BuildSystemJavaNewProjectWizardData.kt b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/BuildSystemJavaNewProjectWizardData.kt index 07afde0816a0..96f1154dc710 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/BuildSystemJavaNewProjectWizardData.kt +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/BuildSystemJavaNewProjectWizardData.kt @@ -6,12 +6,13 @@ import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.openapi.util.Key interface BuildSystemJavaNewProjectWizardData: BuildSystemNewProjectWizardData { + companion object { - @JvmStatic val KEY = Key.create(BuildSystemJavaNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.buildSystemData get() = data.getUserData(KEY)!! + val KEY = Key.create(BuildSystemJavaNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.buildSystemProperty get() = buildSystemData.buildSystemProperty - @JvmStatic var NewProjectWizardStep.buildSystem get() = buildSystemData.buildSystem; set(it) { buildSystemData.buildSystem = it } + @JvmStatic + val NewProjectWizardStep.javaBuildSystemData: BuildSystemJavaNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizard.kt b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizard.kt index 3205d26b4949..71848ebe6702 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizard.kt +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizard.kt @@ -3,9 +3,6 @@ package com.intellij.ide.projectWizard.generators import com.intellij.ide.highlighter.ModuleFileType import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.INTELLIJ -import com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizardData.Companion.addSampleCode -import com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizardData.Companion.contentRoot -import com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizardData.Companion.javaData import com.intellij.ide.starters.local.StandardAssetsProvider import com.intellij.ide.util.projectWizard.JavaModuleBuilder import com.intellij.ide.wizard.chain @@ -60,18 +57,21 @@ class IntelliJJavaNewProjectWizard : BuildSystemJavaNewProjectWizard { } } - private class AssetsStep(parent: Step) : AssetsJavaNewProjectWizardStep(parent) { + private class AssetsStep( + private val parent: Step + ) : AssetsJavaNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = contentRoot + outputDirectory = parent.contentRoot addAssets(StandardAssetsProvider().getIntelliJIgnoreAssets()) - if (addSampleCode) { - withJavaSampleCodeAsset("src", "", javaData.generateOnboardingTips) + if (parent.addSampleCode) { + withJavaSampleCodeAsset("src", "", parent.generateOnboardingTips) } } override fun setupProject(project: Project) { super.setupProject(project) - if (javaData.generateOnboardingTips) { + if (parent.generateOnboardingTips) { prepareTipsInEditor(project) } } diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizardData.kt b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizardData.kt index 88c0be8aee4c..568fb7ae0448 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizardData.kt +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJJavaNewProjectWizardData.kt @@ -5,15 +5,13 @@ import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.openapi.util.Key interface IntelliJJavaNewProjectWizardData: IntelliJNewProjectWizardData { + companion object { - @JvmStatic val KEY = Key.create(IntelliJJavaNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.javaData get() = data.getUserData(KEY)!! + val KEY = Key.create(IntelliJJavaNewProjectWizardData::class.java.name) - @JvmStatic var NewProjectWizardStep.sdk get() = javaData.sdk; set(it) { javaData.sdk = it } - @JvmStatic var NewProjectWizardStep.moduleName get() = javaData.moduleName; set(it) { javaData.moduleName = it } - @JvmStatic var NewProjectWizardStep.contentRoot get() = javaData.contentRoot; set(it) { javaData.contentRoot = it } - @JvmStatic var NewProjectWizardStep.moduleFileLocation get() = javaData.moduleFileLocation; set(it) { javaData.moduleFileLocation = it } - @JvmStatic var NewProjectWizardStep.addSampleCode get() = javaData.addSampleCode; set(it) { javaData.addSampleCode = it } + @JvmStatic + val NewProjectWizardStep.javaData: IntelliJJavaNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardData.kt b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardData.kt index 67ed16f0e5e5..ed96f4d65cd7 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardData.kt +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardData.kt @@ -7,15 +7,26 @@ import com.intellij.openapi.projectRoots.Sdk interface IntelliJNewProjectWizardData { val sdkProperty: ObservableMutableProperty - val moduleNameProperty: ObservableMutableProperty - val contentRootProperty: ObservableMutableProperty - val moduleFileLocationProperty: ObservableMutableProperty - val addSampleCodeProperty: ObservableMutableProperty var sdk: Sdk? + + val moduleNameProperty: ObservableMutableProperty + var moduleName: String + + val contentRootProperty: ObservableMutableProperty + var contentRoot: String + + val moduleFileLocationProperty: ObservableMutableProperty + var moduleFileLocation: String + + val addSampleCodeProperty: ObservableMutableProperty + var addSampleCode: Boolean + + val generateOnboardingTipsProperty: ObservableMutableProperty + val generateOnboardingTips: Boolean } \ No newline at end of file diff --git a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardStep.kt b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardStep.kt index 2d5fcfc39a52..dac5e81fe55d 100644 --- a/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardStep.kt +++ b/java/idea-ui/src/com/intellij/ide/projectWizard/generators/IntelliJNewProjectWizardStep.kt @@ -47,7 +47,7 @@ abstract class IntelliJNewProjectWizardStep(val parent: ParentStep) final override val moduleFileLocationProperty = propertyGraph.lazyProperty(::suggestModuleFilePath) final override val addSampleCodeProperty = propertyGraph.property(true) .bindBooleanStorage(ADD_SAMPLE_CODE_PROPERTY_NAME) - private val generateOnboardingTipsProperty = propertyGraph.property(proposeToGenerateOnboardingTipsByDefault()) + final override val generateOnboardingTipsProperty = propertyGraph.property(proposeToGenerateOnboardingTipsByDefault()) .bindBooleanStorage(GENERATE_ONBOARDING_TIPS_NAME) final override var sdk by sdkProperty @@ -55,7 +55,7 @@ abstract class IntelliJNewProjectWizardStep(val parent: ParentStep) final override var contentRoot by contentRootProperty final override var moduleFileLocation by moduleFileLocationProperty final override var addSampleCode by addSampleCodeProperty - final override val generateOnboardingTips by generateOnboardingTipsProperty + final override var generateOnboardingTips by generateOnboardingTipsProperty private var userDefinedContentRoot: Boolean = false private var userDefinedModuleFileLocation: Boolean = false diff --git a/java/idea-ui/testSrc/com/intellij/ide/projectWizard/NewProjectWizardTest.java b/java/idea-ui/testSrc/com/intellij/ide/projectWizard/NewProjectWizardTest.java index ff2e1dfba6c4..ed02bb6a34c0 100644 --- a/java/idea-ui/testSrc/com/intellij/ide/projectWizard/NewProjectWizardTest.java +++ b/java/idea-ui/testSrc/com/intellij/ide/projectWizard/NewProjectWizardTest.java @@ -1,8 +1,6 @@ // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.projectWizard; -import com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizardData; -import com.intellij.ide.wizard.LanguageNewProjectWizardData; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; @@ -18,6 +16,9 @@ import com.intellij.testFramework.IdeaTestUtil; import com.intellij.ui.UIBundle; import com.intellij.util.SystemProperties; +import static com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizardData.getJavaData; +import static com.intellij.ide.wizard.LanguageNewProjectWizardData.getLanguageData; + /** * @author Dmitry Avdeev */ @@ -60,15 +61,15 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase { // Project with default JDK Project project = createProjectFromTemplate(step -> { - IntelliJJavaNewProjectWizardData.setSdk(step, defaultSdk); + getJavaData(step).setSdk(defaultSdk); }); assertEquals(ProjectRootManager.getInstance(project).getProjectSdk().getName(), defaultSdk.getName()); // Module with custom JDK createModuleFromTemplate(project, step -> { - LanguageNewProjectWizardData.setLanguage(step, "Java"); - IntelliJJavaNewProjectWizardData.setSdk(step, otherSdk); - IntelliJJavaNewProjectWizardData.setModuleName(step, moduleName); + getLanguageData(step).setLanguage("Java"); + getJavaData(step).setSdk(otherSdk); + getJavaData(step).setModuleName(moduleName); }); final var manager = ModuleManager.getInstance(project); @@ -132,7 +133,7 @@ public class NewProjectWizardTest extends NewProjectWizardTestCase { public void testSampleCode() throws Exception { Project project = createProjectFromTemplate(step -> { - IntelliJJavaNewProjectWizardData.setAddSampleCode(step, true); + getJavaData(step).setAddSampleCode(true); }); final var mainSearch = FilenameIndex.getVirtualFilesByName("Main.java", GlobalSearchScope.projectScope(project)); assertFalse(mainSearch.isEmpty()); diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardData.kt b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardData.kt index d9b2ece3e6da..a96cca474065 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardData.kt +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardData.kt @@ -5,14 +5,22 @@ import com.intellij.openapi.externalSystem.util.ui.DataView import com.intellij.openapi.observable.properties.GraphProperty interface MavenizedNewProjectWizardData { + val parentProperty: GraphProperty> - val groupIdProperty: GraphProperty - val artifactIdProperty: GraphProperty - val versionProperty: GraphProperty var parent: DataView + var parentData: Data? + + val groupIdProperty: GraphProperty + var groupId: String + + val artifactIdProperty: GraphProperty + var artifactId: String + + val versionProperty: GraphProperty + var version: String } \ No newline at end of file diff --git a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardStep.kt b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardStep.kt index 381232f3a24d..40103a738821 100644 --- a/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardStep.kt +++ b/platform/external-system-impl/src/com/intellij/openapi/externalSystem/service/project/wizard/MavenizedNewProjectWizardStep.kt @@ -7,7 +7,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logP import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logVersionChanged import com.intellij.ide.wizard.AbstractNewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardBaseData -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.nameProperty import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.GROUP_ID_PROPERTY_NAME import com.intellij.openapi.externalSystem.util.ExternalSystemBundle @@ -27,8 +26,9 @@ import java.util.Comparator.comparing import java.util.function.Function import javax.swing.JList -abstract class MavenizedNewProjectWizardStep(val parentStep: ParentStep) : - AbstractNewProjectWizardStep(parentStep), MavenizedNewProjectWizardData +abstract class MavenizedNewProjectWizardStep( + protected val parentStep: ParentStep +) : AbstractNewProjectWizardStep(parentStep), MavenizedNewProjectWizardData where ParentStep : NewProjectWizardStep, ParentStep : NewProjectWizardBaseData { @@ -98,7 +98,7 @@ abstract class MavenizedNewProjectWizardStep(val parentS .trimmedTextValidation(CHECK_NON_EMPTY, CHECK_ARTIFACT_ID) .validation { validateArtifactId() } .validationRequestor(WHEN_PROPERTY_CHANGED(artifactIdProperty)) - .validationRequestor(WHEN_PROPERTY_CHANGED(nameProperty)) + .validationRequestor(WHEN_PROPERTY_CHANGED(parentStep.nameProperty)) .whenTextChangedFromUi { logArtifactIdChanged() } } } diff --git a/platform/lang-core/src/com/intellij/ide/util/projectWizard/WizardContext.java b/platform/lang-core/src/com/intellij/ide/util/projectWizard/WizardContext.java index 3032019416aa..cc3a6f56cb2f 100644 --- a/platform/lang-core/src/com/intellij/ide/util/projectWizard/WizardContext.java +++ b/platform/lang-core/src/com/intellij/ide/util/projectWizard/WizardContext.java @@ -156,7 +156,7 @@ public class WizardContext extends UserDataHolderBase { } /** - * Useses to select presentable name for message bundle texts. + * Uses to select presentable name for message bundle texts. *
Message bundle examples: *
sentence="New {0,choice,0#module|1#project}" -> New project, New module *
title="New {0,choice,0#Module|1#Project}" -> New Project, New Module diff --git a/platform/platform-impl/src/com/intellij/ide/wizard/GitNewProjectWizardData.kt b/platform/platform-impl/src/com/intellij/ide/wizard/GitNewProjectWizardData.kt index eccde81c767d..b0a4e6f32338 100644 --- a/platform/platform-impl/src/com/intellij/ide/wizard/GitNewProjectWizardData.kt +++ b/platform/platform-impl/src/com/intellij/ide/wizard/GitNewProjectWizardData.kt @@ -8,8 +8,11 @@ interface GitNewProjectWizardData { val git: Boolean companion object { + val KEY = Key.create(GitNewProjectWizardData::class.java.name) - val NewProjectWizardStep.gitData: GitNewProjectWizardData? get() = data.getUserData(KEY) + @JvmStatic + val NewProjectWizardStep.gitData: GitNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/wizard/LanguageNewProjectWizardData.kt b/platform/platform-impl/src/com/intellij/ide/wizard/LanguageNewProjectWizardData.kt index 0e6ed79fbb15..8142d537d441 100644 --- a/platform/platform-impl/src/com/intellij/ide/wizard/LanguageNewProjectWizardData.kt +++ b/platform/platform-impl/src/com/intellij/ide/wizard/LanguageNewProjectWizardData.kt @@ -11,11 +11,11 @@ interface LanguageNewProjectWizardData : NewProjectWizardBaseData { var language: String companion object { - @JvmStatic val KEY = Key.create(LanguageNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.languageData get() = data.getUserData(KEY)!! + val KEY = Key.create(LanguageNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.languageProperty get() = languageData.languageProperty - @JvmStatic var NewProjectWizardStep.language get() = languageData.language; set(it) { languageData.language = it } + @JvmStatic + val NewProjectWizardStep.languageData: LanguageNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardBaseData.kt b/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardBaseData.kt index 920732d1fe20..0142e7e0d668 100644 --- a/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardBaseData.kt +++ b/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardBaseData.kt @@ -8,26 +8,27 @@ import java.nio.file.Path interface NewProjectWizardBaseData { val nameProperty: GraphProperty - val pathProperty: GraphProperty var name: String + + val pathProperty: GraphProperty + var path: String // canonical - /** - * @deprecated projectPath throws exception when it isn't validated - */ - @Deprecated("Unsafe", ReplaceWith("Path.of(path, name)", "java.nio.file.Path")) + @Deprecated( + message = "Unsafe: projectPath throws exception when it isn't validated", + replaceWith = ReplaceWith("Path.of(path, name)", "java.nio.file.Path"), + level = DeprecationLevel.ERROR + ) val projectPath: Path get() = Path.of(path, name) companion object { - @JvmStatic val KEY = Key.create(NewProjectWizardBaseData::class.java.name) - @JvmStatic val NewProjectWizardStep.baseData get() = data.getUserData(KEY)!! + val KEY = Key.create(NewProjectWizardBaseData::class.java.name) - @JvmStatic val NewProjectWizardStep.nameProperty get() = baseData.nameProperty - @JvmStatic val NewProjectWizardStep.pathProperty get() = baseData.pathProperty - @JvmStatic var NewProjectWizardStep.name get() = baseData.name; set(it) { baseData.name = it } - @JvmStatic var NewProjectWizardStep.path get() = baseData.path; set(it) { baseData.path = it } + @JvmStatic + val NewProjectWizardStep.baseData: NewProjectWizardBaseData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardLanguageStep.kt b/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardLanguageStep.kt index 972363dfe93f..38c209845d93 100644 --- a/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardLanguageStep.kt +++ b/platform/platform-impl/src/com/intellij/ide/wizard/NewProjectWizardLanguageStep.kt @@ -11,10 +11,11 @@ import com.intellij.ui.dsl.builder.Row import com.intellij.ui.dsl.builder.SegmentedButton import com.intellij.util.PlatformUtils -class NewProjectWizardLanguageStep(parent: NewProjectWizardStep) : - AbstractNewProjectWizardMultiStepWithAddButton(parent, LanguageNewProjectWizard.EP_NAME), - LanguageNewProjectWizardData, - NewProjectWizardBaseData by parent.baseData { +class NewProjectWizardLanguageStep( + parent: NewProjectWizardStep +) : AbstractNewProjectWizardMultiStepWithAddButton(parent, LanguageNewProjectWizard.EP_NAME), + LanguageNewProjectWizardData, + NewProjectWizardBaseData by parent.baseData!! { override val self = this diff --git a/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizard.kt b/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizard.kt index 3da2d5736f19..2e80201ecdbd 100644 --- a/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizard.kt +++ b/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizard.kt @@ -7,8 +7,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.GRAD import com.intellij.ide.projectWizard.generators.* import com.intellij.ide.projectWizard.generators.AssetsJavaNewProjectWizardStep.Companion.proposeToGenerateOnboardingTipsByDefault import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME import com.intellij.ide.wizard.chain @@ -16,9 +14,6 @@ import com.intellij.openapi.observable.util.bindBooleanStorage import com.intellij.openapi.project.Project import com.intellij.ui.UIBundle import com.intellij.ui.dsl.builder.* -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.addSampleCode -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.gradleData -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.groupId internal class GradleJavaNewProjectWizard : BuildSystemJavaNewProjectWizard { @@ -35,11 +30,11 @@ internal class GradleJavaNewProjectWizard : BuildSystemJavaNewProjectWizard { override val addSampleCodeProperty = propertyGraph.property(true) .bindBooleanStorage(ADD_SAMPLE_CODE_PROPERTY_NAME) - private val generateOnboardingTipsProperty = propertyGraph.property(proposeToGenerateOnboardingTipsByDefault()) + override val generateOnboardingTipsProperty = propertyGraph.property(proposeToGenerateOnboardingTipsByDefault()) .bindBooleanStorage(NewProjectWizardStep.GENERATE_ONBOARDING_TIPS_NAME) override var addSampleCode by addSampleCodeProperty - override val generateOnboardingTips by generateOnboardingTipsProperty + override var generateOnboardingTips by generateOnboardingTipsProperty private fun setupSampleCodeUI(builder: Panel) { builder.row { @@ -85,18 +80,20 @@ internal class GradleJavaNewProjectWizard : BuildSystemJavaNewProjectWizard { } } - private class AssetsStep(parent: NewProjectWizardStep) : AssetsJavaNewProjectWizardStep(parent) { + private class AssetsStep( + private val parent: Step + ) : AssetsJavaNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getGradleIgnoreAssets()) - if (addSampleCode) { - withJavaSampleCodeAsset("src/main/java", groupId, gradleData.generateOnboardingTips) + if (parent.addSampleCode) { + withJavaSampleCodeAsset("src/main/java", parent.groupId, parent.generateOnboardingTips) } } override fun setupProject(project: Project) { super.setupProject(project) - if (gradleData.generateOnboardingTips) { + if (parent.generateOnboardingTips) { prepareTipsInEditor(project) } } diff --git a/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizardData.kt b/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizardData.kt index cd732de50164..5702647143cf 100644 --- a/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizardData.kt +++ b/plugins/gradle/java/src/service/project/wizard/GradleJavaNewProjectWizardData.kt @@ -8,28 +8,19 @@ import com.intellij.openapi.util.Key interface GradleJavaNewProjectWizardData : GradleNewProjectWizardData { val addSampleCodeProperty: GraphProperty + var addSampleCode: Boolean - val generateOnboardingTips: Boolean + + val generateOnboardingTipsProperty: GraphProperty + + var generateOnboardingTips: Boolean companion object { - @JvmStatic val KEY = Key.create(GradleJavaNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.gradleData get() = data.getUserData(KEY)!! + val KEY = Key.create(GradleJavaNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.sdkProperty get() = gradleData.sdkProperty - @JvmStatic val NewProjectWizardStep.gradleDslProperty get() = gradleData.gradleDslProperty - @JvmStatic val NewProjectWizardStep.parentProperty get() = gradleData.parentProperty - @JvmStatic val NewProjectWizardStep.groupIdProperty get() = gradleData.groupIdProperty - @JvmStatic val NewProjectWizardStep.artifactIdProperty get() = gradleData.artifactIdProperty - @JvmStatic val NewProjectWizardStep.versionProperty get() = gradleData.versionProperty - @JvmStatic val NewProjectWizardStep.addSampleCodeProperty get() = gradleData.addSampleCodeProperty - @JvmStatic var NewProjectWizardStep.sdk get() = gradleData.sdk; set(it) { gradleData.sdk = it } - @JvmStatic var NewProjectWizardStep.gradleDsl get() = gradleData.gradleDsl; set(it) { gradleData.gradleDsl = it } - @JvmStatic var NewProjectWizardStep.parent get() = gradleData.parent; set(it) { gradleData.parent = it } - @JvmStatic var NewProjectWizardStep.parentData get() = gradleData.parentData; set(it) { gradleData.parentData = it } - @JvmStatic var NewProjectWizardStep.groupId get() = gradleData.groupId; set(it) { gradleData.groupId = it } - @JvmStatic var NewProjectWizardStep.artifactId get() = gradleData.artifactId; set(it) { gradleData.artifactId = it } - @JvmStatic var NewProjectWizardStep.version get() = gradleData.version; set(it) { gradleData.version = it } - @JvmStatic var NewProjectWizardStep.addSampleCode get() = gradleData.addSampleCode; set(it) { gradleData.addSampleCode = it } + @JvmStatic + val NewProjectWizardStep.javaGradleData: GradleJavaNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardData.kt b/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardData.kt index d23abd735761..62b672328438 100644 --- a/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardData.kt +++ b/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardData.kt @@ -7,9 +7,12 @@ import com.intellij.openapi.observable.properties.GraphProperty import com.intellij.openapi.projectRoots.Sdk interface GradleNewProjectWizardData : MavenizedNewProjectWizardData { + val sdkProperty: GraphProperty - val gradleDslProperty: GraphProperty var sdk: Sdk? + + val gradleDslProperty: GraphProperty + var gradleDsl: GradleNewProjectWizardStep.GradleDsl } \ No newline at end of file diff --git a/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardStep.kt b/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardStep.kt index 092e7901ef05..38aec3c36ffa 100644 --- a/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardStep.kt +++ b/plugins/gradle/java/src/service/project/wizard/GradleNewProjectWizardStep.kt @@ -6,19 +6,21 @@ import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logD import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logSdkChanged import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logSdkFinished import com.intellij.ide.wizard.NewProjectWizardBaseData -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.openapi.externalSystem.model.project.ProjectData import com.intellij.openapi.externalSystem.model.project.ProjectId import com.intellij.openapi.externalSystem.service.project.ProjectDataManager import com.intellij.openapi.externalSystem.service.project.wizard.MavenizedNewProjectWizardStep -import com.intellij.openapi.externalSystem.service.ui.completion.* +import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionComboBox +import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionComboBoxConverter import com.intellij.openapi.externalSystem.util.ExternalSystemBundle import com.intellij.openapi.externalSystem.util.ui.DataView import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory import com.intellij.openapi.module.StdModuleTypes -import com.intellij.openapi.observable.util.* +import com.intellij.openapi.observable.util.bindEnumStorage +import com.intellij.openapi.observable.util.not +import com.intellij.openapi.observable.util.toUiPathProperty +import com.intellij.openapi.observable.util.transform import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.JavaSdkType import com.intellij.openapi.projectRoots.Sdk @@ -338,8 +340,8 @@ abstract class GradleNewProjectWizardStep(parent: ParentStep) : ) { val builder = InternalGradleModuleBuilder() builder.moduleJdk = sdk - builder.name = name - builder.contentEntryPath = "$path/$name" + builder.name = parentStep.name + builder.contentEntryPath = parentStep.path + "/" + parentStep.name builder.isCreatingNewProject = context.isCreatingNewProject diff --git a/plugins/gradle/java/src/service/project/wizard/groovy/GradleGroovyNewProjectWizard.kt b/plugins/gradle/java/src/service/project/wizard/groovy/GradleGroovyNewProjectWizard.kt index c3dd64b68455..67aa49e9eec9 100644 --- a/plugins/gradle/java/src/service/project/wizard/groovy/GradleGroovyNewProjectWizard.kt +++ b/plugins/gradle/java/src/service/project/wizard/groovy/GradleGroovyNewProjectWizard.kt @@ -6,8 +6,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.GRAD import com.intellij.ide.projectWizard.generators.AssetsJavaNewProjectWizardStep.Companion.createJavaSourcePath import com.intellij.ide.projectWizard.generators.AssetsNewProjectWizardStep import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME import com.intellij.ide.wizard.chain @@ -89,7 +87,6 @@ class GradleGroovyNewProjectWizard : BuildSystemGroovyNewProjectWizard { private class AssetsStep(private val parent: Step) : AssetsNewProjectWizardStep(parent) { override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getGradleIgnoreAssets()) if (parent.addSampleCode) { val sourcePath = createJavaSourcePath("src/main/groovy", parent.groupId, "Main.groovy") diff --git a/plugins/gradle/java/testSources/importing/GradleCreateProjectTestCase.kt b/plugins/gradle/java/testSources/importing/GradleCreateProjectTestCase.kt index 606ae08fbe08..a6d223804aa9 100644 --- a/plugins/gradle/java/testSources/importing/GradleCreateProjectTestCase.kt +++ b/plugins/gradle/java/testSources/importing/GradleCreateProjectTestCase.kt @@ -4,11 +4,9 @@ package org.jetbrains.plugins.gradle.importing import com.intellij.ide.impl.NewProjectUtil import com.intellij.ide.projectWizard.NewProjectWizard import com.intellij.ide.projectWizard.ProjectTypeStep -import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.buildSystem +import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.javaBuildSystemData import com.intellij.ide.util.newProjectWizard.AbstractProjectWizard -import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.language -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path +import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.baseData import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.Step import com.intellij.openapi.application.ApplicationManager @@ -35,12 +33,7 @@ import com.intellij.testFramework.fixtures.TempDirTestFixture import com.intellij.testFramework.useProject import com.intellij.ui.UIBundle import org.gradle.util.GradleVersion -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.addSampleCode -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.artifactId -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.gradleDsl -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.groupId -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.parentData -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.version +import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.Companion.javaGradleData import org.jetbrains.plugins.gradle.service.project.wizard.GradleNewProjectWizardStep.GradleDsl import org.jetbrains.plugins.gradle.settings.GradleSettings import org.jetbrains.plugins.gradle.testFramework.fixtures.GradleTestFixtureFactory @@ -150,19 +143,26 @@ abstract class GradleCreateProjectTestCase : UsefulTestCase() { } private fun configureWizardStepSettings(step: NewProjectWizardStep, moduleInfo: ModuleInfo, parentData: ProjectData?) { - step.name = moduleInfo.root.name - step.path = moduleInfo.root.parent.path - step.language = "Java" - step.buildSystem = "Gradle" - step.gradleDsl = when (moduleInfo.useKotlinDsl) { + val baseData = step.baseData!! + val buildSystemData = step.javaBuildSystemData!! + val gradleData = step.javaGradleData!! + baseData.name = moduleInfo.root.name + baseData.path = moduleInfo.root.parent.path + buildSystemData.language = "Java" + buildSystemData.buildSystem = "Gradle" + gradleData.gradleDsl = when (moduleInfo.useKotlinDsl) { true -> GradleDsl.KOTLIN else -> GradleDsl.GROOVY } - step.parentData = parentData - moduleInfo.groupId?.let { step.groupId = it } - step.artifactId = moduleInfo.artifactId - moduleInfo.version?.let { step.version = it } - step.addSampleCode = false + gradleData.parentData = parentData + if (moduleInfo.groupId != null) { + gradleData.groupId = moduleInfo.groupId + } + gradleData.artifactId = moduleInfo.artifactId + if (moduleInfo.version != null) { + gradleData.version = moduleInfo.version + } + gradleData.addSampleCode = false } private fun createProject(directory: String, configure: (NewProjectWizardStep) -> Unit): Project? { diff --git a/plugins/gradle/java/testSources/importing/GradleProjectWizardTest.java b/plugins/gradle/java/testSources/importing/GradleProjectWizardTest.java index 5d82235f2e39..ad3aaddb6693 100644 --- a/plugins/gradle/java/testSources/importing/GradleProjectWizardTest.java +++ b/plugins/gradle/java/testSources/importing/GradleProjectWizardTest.java @@ -2,9 +2,6 @@ package org.jetbrains.plugins.gradle.importing; import com.intellij.ide.projectWizard.NewProjectWizardTestCase; -import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData; -import com.intellij.ide.wizard.LanguageNewProjectWizardData; -import com.intellij.ide.wizard.NewProjectWizardBaseData; import com.intellij.ide.wizard.Step; import com.intellij.openapi.application.PathManager; import com.intellij.openapi.application.WriteAction; @@ -40,7 +37,6 @@ import com.intellij.util.io.PathKt; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData; import org.jetbrains.plugins.gradle.util.GradleImportingTestUtil; import java.io.File; @@ -48,6 +44,10 @@ import java.io.IOException; import java.util.*; import java.util.function.Consumer; +import static com.intellij.ide.wizard.NewProjectWizardBaseData.getBaseData; +import static com.intellij.ide.wizard.LanguageNewProjectWizardData.getLanguageData; +import static com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.getJavaBuildSystemData; +import static org.jetbrains.plugins.gradle.service.project.wizard.GradleJavaNewProjectWizardData.getJavaGradleData; import static com.intellij.platform.externalSystem.testFramework.ExternalSystemTestCase.collectRootsInside; import static org.jetbrains.plugins.gradle.util.GradleConstants.SYSTEM_ID; @@ -58,7 +58,7 @@ public class GradleProjectWizardTest extends NewProjectWizardTestCase { public void testGradleNPWPropertiesSuggestion() throws Exception { Project project = createProjectFromTemplate(UIBundle.message("label.project.wizard.empty.project.generator.name"), step -> { - NewProjectWizardBaseData.setName(step, "project"); + getBaseData(step).setName("project"); }); assertModules(project, "project"); @@ -67,22 +67,22 @@ public class GradleProjectWizardTest extends NewProjectWizardTestCase { var externalProjectPath2 = projectPath + "/untitled1"; GradleImportingTestUtil.waitForProjectReload(() -> { return createModuleFromTemplate(project, step -> { - LanguageNewProjectWizardData.setLanguage(step, "Java"); - BuildSystemJavaNewProjectWizardData.setBuildSystem(step, "Gradle"); - assertNull(GradleJavaNewProjectWizardData.getParentData(step)); - assertEquals("untitled", NewProjectWizardBaseData.getName(step)); - assertEquals(projectPath, NewProjectWizardBaseData.getPath(step)); - GradleJavaNewProjectWizardData.setAddSampleCode(step, false); + getLanguageData(step).setLanguage("Java"); + getJavaBuildSystemData(step).setBuildSystem("Gradle"); + assertNull(getJavaGradleData(step).getParentData()); + assertEquals("untitled", getBaseData(step).getName()); + assertEquals(projectPath, getBaseData(step).getPath()); + getJavaGradleData(step).setAddSampleCode(false); }); }); GradleImportingTestUtil.waitForProjectReload(() -> { return createModuleFromTemplate(project, step -> { - LanguageNewProjectWizardData.setLanguage(step, "Java"); - BuildSystemJavaNewProjectWizardData.setBuildSystem(step, "Gradle"); - assertNull(GradleJavaNewProjectWizardData.getParentData(step)); - assertEquals("untitled1", NewProjectWizardBaseData.getName(step)); - assertEquals(projectPath, NewProjectWizardBaseData.getPath(step)); - GradleJavaNewProjectWizardData.setAddSampleCode(step, false); + getLanguageData(step).setLanguage("Java"); + getJavaBuildSystemData(step).setBuildSystem("Gradle"); + assertNull(getJavaGradleData(step).getParentData()); + assertEquals("untitled1", getBaseData(step).getName()); + assertEquals(projectPath, getBaseData(step).getPath()); + getJavaGradleData(step).setAddSampleCode(false); }); }); assertModules( @@ -95,22 +95,22 @@ public class GradleProjectWizardTest extends NewProjectWizardTestCase { DataNode projectNode2 = ExternalSystemApiUtil.findProjectNode(project, SYSTEM_ID, externalProjectPath2); GradleImportingTestUtil.waitForProjectReload(() -> { return createModuleFromTemplate(project, step -> { - LanguageNewProjectWizardData.setLanguage(step, "Java"); - BuildSystemJavaNewProjectWizardData.setBuildSystem(step, "Gradle"); - GradleJavaNewProjectWizardData.setParentData(step, projectNode1.getData()); - assertEquals("untitled2", NewProjectWizardBaseData.getName(step)); - assertEquals(externalProjectPath1, NewProjectWizardBaseData.getPath(step)); - GradleJavaNewProjectWizardData.setAddSampleCode(step, false); + getLanguageData(step).setLanguage("Java"); + getJavaBuildSystemData(step).setBuildSystem("Gradle"); + getJavaGradleData(step).setParentData(projectNode1.getData()); + assertEquals("untitled2", getBaseData(step).getName()); + assertEquals(externalProjectPath1, getBaseData(step).getPath()); + getJavaGradleData(step).setAddSampleCode(false); }); }); GradleImportingTestUtil.waitForProjectReload(() -> { return createModuleFromTemplate(project, step -> { - LanguageNewProjectWizardData.setLanguage(step, "Java"); - BuildSystemJavaNewProjectWizardData.setBuildSystem(step, "Gradle"); - GradleJavaNewProjectWizardData.setParentData(step, projectNode2.getData()); - assertEquals("untitled2", NewProjectWizardBaseData.getName(step)); - assertEquals(externalProjectPath2, NewProjectWizardBaseData.getPath(step)); - GradleJavaNewProjectWizardData.setAddSampleCode(step, false); + getLanguageData(step).setLanguage("Java"); + getJavaBuildSystemData(step).setBuildSystem("Gradle"); + getJavaGradleData(step).setParentData(projectNode2.getData()); + assertEquals("untitled2", getBaseData(step).getName()); + assertEquals(externalProjectPath2, getBaseData(step).getPath()); + getJavaGradleData(step).setAddSampleCode(false); }); }); assertModules( @@ -126,10 +126,10 @@ public class GradleProjectWizardTest extends NewProjectWizardTestCase { final String projectName = "testProject"; Project project = GradleImportingTestUtil.waitForProjectReload(() -> { return createProjectFromTemplate(step -> { - NewProjectWizardBaseData.setName(step, projectName); - LanguageNewProjectWizardData.setLanguage(step, "Java"); - BuildSystemJavaNewProjectWizardData.setBuildSystem(step, "Gradle"); - GradleJavaNewProjectWizardData.setAddSampleCode(step, false); + getBaseData(step).setName(projectName); + getLanguageData(step).setLanguage("Java"); + getJavaBuildSystemData(step).setBuildSystem("Gradle"); + getJavaGradleData(step).setAddSampleCode(false); }); }); @@ -175,11 +175,11 @@ public class GradleProjectWizardTest extends NewProjectWizardTestCase { Module childModule = GradleImportingTestUtil.waitForProjectReload(() -> { return createModuleFromTemplate(project, step -> { - LanguageNewProjectWizardData.setLanguage(step, "Java"); - BuildSystemJavaNewProjectWizardData.setBuildSystem(step, "Gradle"); - assertEquals(projectName, GradleJavaNewProjectWizardData.getParentData(step).getExternalName()); - GradleJavaNewProjectWizardData.setArtifactId(step, "childModule"); - GradleJavaNewProjectWizardData.setAddSampleCode(step, false); + getLanguageData(step).setLanguage("Java"); + getJavaBuildSystemData(step).setBuildSystem("Gradle"); + assertEquals(projectName, getJavaGradleData(step).getParentData().getExternalName()); + getJavaGradleData(step).setArtifactId("childModule"); + getJavaGradleData(step).setAddSampleCode(false); }); }); UIUtil.invokeAndWaitIfNeeded((Runnable)() -> PlatformTestUtil.dispatchAllInvocationEventsInIdeEventQueue()); diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/BuildSystemGroovyNewProjectWizardData.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/BuildSystemGroovyNewProjectWizardData.kt index acbb5cca9bf8..d65baf17ca06 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/BuildSystemGroovyNewProjectWizardData.kt +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/BuildSystemGroovyNewProjectWizardData.kt @@ -14,11 +14,11 @@ interface BuildSystemGroovyNewProjectWizardData: BuildSystemNewProjectWizardData var groovySdk : DistributionInfo? companion object { - @JvmStatic val KEY = Key.create(BuildSystemGroovyNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.buildSystemData get() = data.getUserData(KEY)!! + val KEY = Key.create(BuildSystemGroovyNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.buildSystemProperty get() = buildSystemData.buildSystemProperty - @JvmStatic var NewProjectWizardStep.buildSystem get() = buildSystemData.buildSystem; set(it) { buildSystemData.buildSystem = it } + @JvmStatic + val NewProjectWizardStep.groovyBuildSystemData: BuildSystemGroovyNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/IntelliJGroovyNewProjectWizard.kt b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/IntelliJGroovyNewProjectWizard.kt index ac373b867751..1c3277f23d50 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/IntelliJGroovyNewProjectWizard.kt +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/config/wizard/IntelliJGroovyNewProjectWizard.kt @@ -10,8 +10,6 @@ import com.intellij.ide.projectWizard.generators.IntelliJNewProjectWizardStep import com.intellij.ide.starters.local.StandardAssetsProvider import com.intellij.ide.util.EditorHelper import com.intellij.ide.util.projectWizard.ModuleBuilder -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.chain import com.intellij.openapi.application.ApplicationManager @@ -28,9 +26,7 @@ import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VfsUtil import com.intellij.psi.PsiManager -import com.intellij.ui.dsl.builder.BottomGap import com.intellij.ui.dsl.builder.Panel -import org.jetbrains.plugins.groovy.GroovyBundle import org.jetbrains.plugins.groovy.config.GroovyAwareModuleBuilder import org.jetbrains.plugins.groovy.config.GroovyLibraryDescription import java.awt.KeyboardFocusManager @@ -126,8 +122,8 @@ class IntelliJGroovyNewProjectWizard : BuildSystemGroovyNewProjectWizard { } private class AssetsStep(parent: NewProjectWizardStep) : AssetsNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getIntelliJIgnoreAssets()) } } diff --git a/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt b/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt index d002a11c63d0..0e5ae88db9fb 100644 --- a/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt +++ b/plugins/kotlin/project-wizard/gradle/src/org/jetbrains/kotlin/tools/projectWizard/gradle/GradleKotlinNewProjectWizard.kt @@ -5,9 +5,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logA import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.GRADLE import com.intellij.ide.projectWizard.generators.AssetsNewProjectWizardStep import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path -import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME import com.intellij.ide.wizard.chain import com.intellij.openapi.observable.util.bindBooleanStorage @@ -66,8 +63,8 @@ internal class GradleKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizard override fun setupProject(project: Project) { KotlinNewProjectWizard.generateProject( project = project, - projectPath = "$path/$name", - projectName = name, + projectPath = parentStep.path + "/" + parentStep.name, + projectName = parentStep.name, sdk = sdk, buildSystemType = when (gradleDsl) { GradleDsl.KOTLIN -> GradleKotlinDsl @@ -81,9 +78,9 @@ internal class GradleKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizard } } - private class AssetsStep(parent: NewProjectWizardStep) : AssetsNewProjectWizardStep(parent) { + private class AssetsStep(parent: Step) : AssetsNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getGradlewAssets()) addAssets(StandardAssetsProvider().getGradleIgnoreAssets()) } diff --git a/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/BuildSystemKotlinNewProjectWizardData.kt b/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/BuildSystemKotlinNewProjectWizardData.kt index 0555a03cb6d5..b92fe6a154ef 100644 --- a/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/BuildSystemKotlinNewProjectWizardData.kt +++ b/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/BuildSystemKotlinNewProjectWizardData.kt @@ -6,12 +6,13 @@ import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.openapi.util.Key interface BuildSystemKotlinNewProjectWizardData: BuildSystemNewProjectWizardData { + companion object { - @JvmStatic val KEY = Key.create(BuildSystemKotlinNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.buildSystemData get() = data.getUserData(KEY)!! + val KEY = Key.create(BuildSystemKotlinNewProjectWizardData::class.java.name) - @JvmStatic val NewProjectWizardStep.buildSystemProperty get() = buildSystemData.buildSystemProperty - @JvmStatic var NewProjectWizardStep.buildSystem get() = buildSystemData.buildSystem; set(it) { buildSystemData.buildSystem = it } + @JvmStatic + val NewProjectWizardStep.kotlinBuildSystemData: BuildSystemKotlinNewProjectWizardData? + get() = data.getUserData(KEY) } } \ No newline at end of file diff --git a/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/IntelliJKotlinNewProjectWizard.kt b/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/IntelliJKotlinNewProjectWizard.kt index 572272f616d6..02a2b51f1f73 100644 --- a/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/IntelliJKotlinNewProjectWizard.kt +++ b/plugins/kotlin/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/IntelliJKotlinNewProjectWizard.kt @@ -5,8 +5,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.INTE import com.intellij.ide.projectWizard.generators.AssetsNewProjectWizardStep import com.intellij.ide.projectWizard.generators.IntelliJNewProjectWizardStep import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.chain import com.intellij.openapi.project.Project @@ -46,8 +44,8 @@ internal class IntelliJKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizar } private class AssetsStep(parent: NewProjectWizardStep) : AssetsNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getIntelliJIgnoreAssets()) } } diff --git a/plugins/kotlin/project-wizard/maven/src/org/jetbrains/kotlin/tools/projectWizard/maven/MavenKotlinNewProjectWizard.kt b/plugins/kotlin/project-wizard/maven/src/org/jetbrains/kotlin/tools/projectWizard/maven/MavenKotlinNewProjectWizard.kt index c46f34041e32..97e9dc838db2 100644 --- a/plugins/kotlin/project-wizard/maven/src/org/jetbrains/kotlin/tools/projectWizard/maven/MavenKotlinNewProjectWizard.kt +++ b/plugins/kotlin/project-wizard/maven/src/org/jetbrains/kotlin/tools/projectWizard/maven/MavenKotlinNewProjectWizard.kt @@ -5,8 +5,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logA import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.MAVEN import com.intellij.ide.projectWizard.generators.AssetsNewProjectWizardStep import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME import com.intellij.ide.wizard.chain @@ -83,8 +81,8 @@ internal class MavenKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizard { } private class AssetsStep(parent: NewProjectWizardStep) : AssetsNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getMavenIgnoreAssets()) } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/groovy/wizard/MavenGroovyNewProjectWizard.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/groovy/wizard/MavenGroovyNewProjectWizard.kt index 5ff6c32aad3f..6841af53053a 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/groovy/wizard/MavenGroovyNewProjectWizard.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/plugins/groovy/wizard/MavenGroovyNewProjectWizard.kt @@ -6,8 +6,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardCollector.BuildSystem.logA import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.MAVEN import com.intellij.ide.projectWizard.generators.AssetsNewProjectWizardStep import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME import com.intellij.ide.wizard.chain @@ -138,8 +136,8 @@ class MavenGroovyNewProjectWizard : BuildSystemGroovyNewProjectWizard { } private class AssetsStep(parent: NewProjectWizardStep) : AssetsNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getMavenIgnoreAssets()) } } diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizard.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizard.kt index 8731e40a814e..3f3268903046 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizard.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizard.kt @@ -7,8 +7,6 @@ import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.MAVE import com.intellij.ide.projectWizard.generators.* import com.intellij.ide.projectWizard.generators.AssetsJavaNewProjectWizardStep.Companion.proposeToGenerateOnboardingTipsByDefault import com.intellij.ide.starters.local.StandardAssetsProvider -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path import com.intellij.ide.wizard.NewProjectWizardStep import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME import com.intellij.ide.wizard.chain @@ -28,15 +26,16 @@ class MavenJavaNewProjectWizard : BuildSystemJavaNewProjectWizard { class Step(parent: JavaNewProjectWizard.Step) : MavenNewProjectWizardStep(parent), - BuildSystemJavaNewProjectWizardData by parent { + BuildSystemJavaNewProjectWizardData by parent, + MavenJavaNewProjectWizardData { - private val addSampleCodeProperty = propertyGraph.property(true) + override val addSampleCodeProperty = propertyGraph.property(true) .bindBooleanStorage(ADD_SAMPLE_CODE_PROPERTY_NAME) - private val generateOnboardingTipsProperty = propertyGraph.property(proposeToGenerateOnboardingTipsByDefault()) + override val generateOnboardingTipsProperty = propertyGraph.property(proposeToGenerateOnboardingTipsByDefault()) .bindBooleanStorage(NewProjectWizardStep.GENERATE_ONBOARDING_TIPS_NAME) - var addSampleCode by addSampleCodeProperty - val generateOnboardingTips by generateOnboardingTipsProperty + override var addSampleCode by addSampleCodeProperty + override var generateOnboardingTips by generateOnboardingTipsProperty private fun setupSampleCodeUI(builder: Panel) { builder.row { @@ -87,8 +86,8 @@ class MavenJavaNewProjectWizard : BuildSystemJavaNewProjectWizard { } private class AssetsStep(private val parent: Step) : AssetsJavaNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getMavenIgnoreAssets()) if (parent.addSampleCode) { withJavaSampleCodeAsset("src/main/java", parent.groupId, parent.generateOnboardingTips) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizardData.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizardData.kt new file mode 100644 index 000000000000..eeea1270362b --- /dev/null +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenJavaNewProjectWizardData.kt @@ -0,0 +1,26 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.idea.maven.wizards + +import com.intellij.ide.wizard.NewProjectWizardStep +import com.intellij.openapi.observable.properties.GraphProperty +import com.intellij.openapi.util.Key + +interface MavenJavaNewProjectWizardData : MavenNewProjectWizardData { + + val addSampleCodeProperty: GraphProperty + + var addSampleCode: Boolean + + val generateOnboardingTipsProperty: GraphProperty + + var generateOnboardingTips: Boolean + + companion object { + + val KEY = Key.create(MavenJavaNewProjectWizardData::class.java.name) + + @JvmStatic + val NewProjectWizardStep.javaMavenData: MavenJavaNewProjectWizardData? + get() = data.getUserData(KEY) + } +} \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardData.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardData.kt new file mode 100644 index 000000000000..9ad1b4f017dd --- /dev/null +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardData.kt @@ -0,0 +1,14 @@ +// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license. +package org.jetbrains.idea.maven.wizards + +import com.intellij.openapi.externalSystem.service.project.wizard.MavenizedNewProjectWizardData +import com.intellij.openapi.observable.properties.GraphProperty +import com.intellij.openapi.projectRoots.Sdk +import org.jetbrains.idea.maven.project.MavenProject + +interface MavenNewProjectWizardData : MavenizedNewProjectWizardData { + + val sdkProperty: GraphProperty + + var sdk: Sdk? +} \ No newline at end of file diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardStep.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardStep.kt index b85d51753cb0..d55a1ff6e558 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardStep.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenNewProjectWizardStep.kt @@ -17,22 +17,21 @@ import com.intellij.openapi.projectRoots.impl.DependentSdkType import com.intellij.openapi.roots.ui.configuration.sdkComboBox import com.intellij.openapi.ui.ValidationInfo import com.intellij.ui.dsl.builder.* -import com.intellij.ui.layout.* +import com.intellij.ui.layout.ValidationInfoBuilder import icons.OpenapiIcons import org.jetbrains.idea.maven.project.MavenProject import org.jetbrains.idea.maven.project.MavenProjectsManager import javax.swing.Icon abstract class MavenNewProjectWizardStep(parent: ParentStep) : - MavenizedNewProjectWizardStep(parent) + MavenizedNewProjectWizardStep(parent), + MavenNewProjectWizardData where ParentStep : NewProjectWizardStep, ParentStep : NewProjectWizardBaseData { - // used externally - @Suppress("MemberVisibilityCanBePrivate") - val sdkProperty = propertyGraph.property(null) + final override val sdkProperty = propertyGraph.property(null) - val sdk by sdkProperty + final override var sdk by sdkProperty protected fun setupJavaSdkUI(builder: Panel) { builder.row(JavaUiBundle.message("label.project.wizard.new.project.jdk")) { @@ -63,8 +62,11 @@ abstract class MavenNewProjectWizardStep(parent: ParentStep) : private fun ValidationInfoBuilder.validateCoordinates(): ValidationInfo? { val mavenIds = parentsData.map { it.mavenId.groupId to it.mavenId.artifactId }.toSet() if (groupId to artifactId in mavenIds) { - val message = ExternalSystemBundle.message("external.system.mavenized.structure.wizard.entity.coordinates.already.exists.error", - if (context.isCreatingNewProject) 1 else 0, "$groupId:$artifactId") + val message = ExternalSystemBundle.message( + "external.system.mavenized.structure.wizard.entity.coordinates.already.exists.error", + context.isCreatingNewProjectInt, + "$groupId:$artifactId" + ) return error(message) } return null diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/archetype/MavenArchetypeNewProjectWizard.kt b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/archetype/MavenArchetypeNewProjectWizard.kt index 480127590485..19dc794a225d 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/archetype/MavenArchetypeNewProjectWizard.kt +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/archetype/MavenArchetypeNewProjectWizard.kt @@ -8,13 +8,11 @@ import com.intellij.icons.AllIcons import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.MAVEN import com.intellij.ide.projectWizard.NewProjectWizardConstants.Language.JAVA import com.intellij.ide.projectWizard.generators.AssetsNewProjectWizardStep -import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.buildSystem +import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData.Companion.javaBuildSystemData import com.intellij.ide.starters.local.StandardAssetsProvider import com.intellij.ide.util.projectWizard.WizardContext import com.intellij.ide.wizard.* -import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.language -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.name -import com.intellij.ide.wizard.NewProjectWizardBaseData.Companion.path +import com.intellij.ide.wizard.LanguageNewProjectWizardData.Companion.languageData import com.intellij.ide.wizard.util.NewProjectLinkNewProjectWizardStep import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionRenderer.Companion.append import com.intellij.openapi.externalSystem.service.ui.completion.TextCompletionComboBox @@ -72,8 +70,8 @@ class MavenArchetypeNewProjectWizard : GeneratorNewProjectWizard { } override fun onStepSelected(step: NewProjectWizardStep) { - step.language = JAVA - step.buildSystem = MAVEN + step.languageData!!.language = JAVA + step.javaBuildSystemData!!.buildSystem = MAVEN } } @@ -426,8 +424,8 @@ class MavenArchetypeNewProjectWizard : GeneratorNewProjectWizard { } private class AssetsStep(parent: NewProjectWizardStep) : AssetsNewProjectWizardStep(parent) { + override fun setupAssets(project: Project) { - outputDirectory = "$path/$name" addAssets(StandardAssetsProvider().getMavenIgnoreAssets()) } } diff --git a/python/src/com/jetbrains/python/newProject/PythonNewProjectWizard.kt b/python/src/com/jetbrains/python/newProject/PythonNewProjectWizard.kt index a673a9672d67..c8e64def39b5 100644 --- a/python/src/com/jetbrains/python/newProject/PythonNewProjectWizard.kt +++ b/python/src/com/jetbrains/python/newProject/PythonNewProjectWizard.kt @@ -48,6 +48,7 @@ class PythonNewProjectWizard : LanguageNewProjectWizard { * Data for sharing among the steps of the new Python project wizard. */ interface NewProjectWizardPythonData : NewProjectWizardBaseData { + /** * A property for tracking changes in [pythonSdk]. */ @@ -68,13 +69,12 @@ interface NewProjectWizardPythonData : NewProjectWizardBaseData { val module: Module? companion object { + val KEY = Key.create(NewProjectWizardPythonData::class.java.name) - private val NewProjectWizardStep.pythonData get() = data.getUserData(KEY)!! - - val NewProjectWizardStep.pythonSdkProperty get() = pythonData.pythonSdkProperty - val NewProjectWizardStep.pythonSdk get() = pythonData.pythonSdk - val NewProjectWizardStep.module get() = pythonData.module + @JvmStatic + val NewProjectWizardStep.pythonData: NewProjectWizardPythonData? + get() = data.getUserData(KEY) } }