[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
This commit is contained in:
Sergei Vorobyov
2023-01-26 15:52:30 +01:00
committed by intellij-monorepo-bot
parent 23bf41614b
commit 96b4165d58
34 changed files with 264 additions and 215 deletions

View File

@@ -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<String, Any>()
private val filesToOpen = HashSet<Path>()
init {
val baseData = baseData
if (baseData != null) {
outputDirectory = baseData.path + "/" + baseData.name
}
}
@ApiStatus.Internal
internal fun getTemplateProperties(): Map<String, Any> {
return templateProperties

View File

@@ -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>(BuildSystemJavaNewProjectWizardData::class.java.name)
@JvmStatic val NewProjectWizardStep.buildSystemData get() = data.getUserData(KEY)!!
val KEY = Key.create<BuildSystemJavaNewProjectWizardData>(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)
}
}

View File

@@ -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)
}
}

View File

@@ -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>(IntelliJJavaNewProjectWizardData::class.java.name)
@JvmStatic val NewProjectWizardStep.javaData get() = data.getUserData(KEY)!!
val KEY = Key.create<IntelliJJavaNewProjectWizardData>(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)
}
}

View File

@@ -7,15 +7,26 @@ import com.intellij.openapi.projectRoots.Sdk
interface IntelliJNewProjectWizardData {
val sdkProperty: ObservableMutableProperty<Sdk?>
val moduleNameProperty: ObservableMutableProperty<String>
val contentRootProperty: ObservableMutableProperty<String>
val moduleFileLocationProperty: ObservableMutableProperty<String>
val addSampleCodeProperty: ObservableMutableProperty<Boolean>
var sdk: Sdk?
val moduleNameProperty: ObservableMutableProperty<String>
var moduleName: String
val contentRootProperty: ObservableMutableProperty<String>
var contentRoot: String
val moduleFileLocationProperty: ObservableMutableProperty<String>
var moduleFileLocation: String
val addSampleCodeProperty: ObservableMutableProperty<Boolean>
var addSampleCode: Boolean
val generateOnboardingTipsProperty: ObservableMutableProperty<Boolean>
val generateOnboardingTips: Boolean
}

View File

@@ -47,7 +47,7 @@ abstract class IntelliJNewProjectWizardStep<ParentStep>(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<ParentStep>(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

View File

@@ -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());

View File

@@ -5,14 +5,22 @@ import com.intellij.openapi.externalSystem.util.ui.DataView
import com.intellij.openapi.observable.properties.GraphProperty
interface MavenizedNewProjectWizardData<Data : Any> {
val parentProperty: GraphProperty<DataView<Data>>
val groupIdProperty: GraphProperty<String>
val artifactIdProperty: GraphProperty<String>
val versionProperty: GraphProperty<String>
var parent: DataView<Data>
var parentData: Data?
val groupIdProperty: GraphProperty<String>
var groupId: String
val artifactIdProperty: GraphProperty<String>
var artifactId: String
val versionProperty: GraphProperty<String>
var version: String
}

View File

@@ -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<Data : Any, ParentStep>(val parentStep: ParentStep) :
AbstractNewProjectWizardStep(parentStep), MavenizedNewProjectWizardData<Data>
abstract class MavenizedNewProjectWizardStep<Data : Any, ParentStep>(
protected val parentStep: ParentStep
) : AbstractNewProjectWizardStep(parentStep), MavenizedNewProjectWizardData<Data>
where ParentStep : NewProjectWizardStep,
ParentStep : NewProjectWizardBaseData {
@@ -98,7 +98,7 @@ abstract class MavenizedNewProjectWizardStep<Data : Any, ParentStep>(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() }
}
}

View File

@@ -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.
* <br/>Message bundle examples:
* <br/><code>sentence="New {0,choice,0#module|1#project}"</code> -> New project, New module
* <br/><code>title="New {0,choice,0#Module|1#Project}"</code> -> New Project, New Module

View File

@@ -8,8 +8,11 @@ interface GitNewProjectWizardData {
val git: Boolean
companion object {
val KEY = Key.create<GitNewProjectWizardData>(GitNewProjectWizardData::class.java.name)
val NewProjectWizardStep.gitData: GitNewProjectWizardData? get() = data.getUserData(KEY)
@JvmStatic
val NewProjectWizardStep.gitData: GitNewProjectWizardData?
get() = data.getUserData(KEY)
}
}

View File

@@ -11,11 +11,11 @@ interface LanguageNewProjectWizardData : NewProjectWizardBaseData {
var language: String
companion object {
@JvmStatic val KEY = Key.create<LanguageNewProjectWizardData>(LanguageNewProjectWizardData::class.java.name)
@JvmStatic val NewProjectWizardStep.languageData get() = data.getUserData(KEY)!!
val KEY = Key.create<LanguageNewProjectWizardData>(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)
}
}

View File

@@ -8,26 +8,27 @@ import java.nio.file.Path
interface NewProjectWizardBaseData {
val nameProperty: GraphProperty<String>
val pathProperty: GraphProperty<String>
var name: String
val pathProperty: GraphProperty<String>
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>(NewProjectWizardBaseData::class.java.name)
@JvmStatic val NewProjectWizardStep.baseData get() = data.getUserData(KEY)!!
val KEY = Key.create<NewProjectWizardBaseData>(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)
}
}

View File

@@ -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<NewProjectWizardLanguageStep, LanguageNewProjectWizard>(parent, LanguageNewProjectWizard.EP_NAME),
LanguageNewProjectWizardData,
NewProjectWizardBaseData by parent.baseData {
class NewProjectWizardLanguageStep(
parent: NewProjectWizardStep
) : AbstractNewProjectWizardMultiStepWithAddButton<NewProjectWizardLanguageStep, LanguageNewProjectWizard>(parent, LanguageNewProjectWizard.EP_NAME),
LanguageNewProjectWizardData,
NewProjectWizardBaseData by parent.baseData!! {
override val self = this

View File

@@ -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)
}
}

View File

@@ -8,28 +8,19 @@ import com.intellij.openapi.util.Key
interface GradleJavaNewProjectWizardData : GradleNewProjectWizardData {
val addSampleCodeProperty: GraphProperty<Boolean>
var addSampleCode: Boolean
val generateOnboardingTips: Boolean
val generateOnboardingTipsProperty: GraphProperty<Boolean>
var generateOnboardingTips: Boolean
companion object {
@JvmStatic val KEY = Key.create<GradleJavaNewProjectWizardData>(GradleJavaNewProjectWizardData::class.java.name)
@JvmStatic val NewProjectWizardStep.gradleData get() = data.getUserData(KEY)!!
val KEY = Key.create<GradleJavaNewProjectWizardData>(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)
}
}

View File

@@ -7,9 +7,12 @@ import com.intellij.openapi.observable.properties.GraphProperty
import com.intellij.openapi.projectRoots.Sdk
interface GradleNewProjectWizardData : MavenizedNewProjectWizardData<ProjectData> {
val sdkProperty: GraphProperty<Sdk?>
val gradleDslProperty: GraphProperty<GradleNewProjectWizardStep.GradleDsl>
var sdk: Sdk?
val gradleDslProperty: GraphProperty<GradleNewProjectWizardStep.GradleDsl>
var gradleDsl: GradleNewProjectWizardStep.GradleDsl
}

View File

@@ -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<ParentStep>(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

View File

@@ -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")

View File

@@ -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? {

View File

@@ -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<ProjectData> 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());

View File

@@ -14,11 +14,11 @@ interface BuildSystemGroovyNewProjectWizardData: BuildSystemNewProjectWizardData
var groovySdk : DistributionInfo?
companion object {
@JvmStatic val KEY = Key.create<BuildSystemGroovyNewProjectWizardData>(BuildSystemGroovyNewProjectWizardData::class.java.name)
@JvmStatic val NewProjectWizardStep.buildSystemData get() = data.getUserData(KEY)!!
val KEY = Key.create<BuildSystemGroovyNewProjectWizardData>(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)
}
}

View File

@@ -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())
}
}

View File

@@ -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())
}

View File

@@ -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>(BuildSystemKotlinNewProjectWizardData::class.java.name)
@JvmStatic val NewProjectWizardStep.buildSystemData get() = data.getUserData(KEY)!!
val KEY = Key.create<BuildSystemKotlinNewProjectWizardData>(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)
}
}

View File

@@ -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())
}
}

View File

@@ -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())
}
}

View File

@@ -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())
}
}

View File

@@ -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<JavaNewProjectWizard.Step>(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)

View File

@@ -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<Boolean>
var addSampleCode: Boolean
val generateOnboardingTipsProperty: GraphProperty<Boolean>
var generateOnboardingTips: Boolean
companion object {
val KEY = Key.create<MavenJavaNewProjectWizardData>(MavenJavaNewProjectWizardData::class.java.name)
@JvmStatic
val NewProjectWizardStep.javaMavenData: MavenJavaNewProjectWizardData?
get() = data.getUserData(KEY)
}
}

View File

@@ -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<MavenProject> {
val sdkProperty: GraphProperty<Sdk?>
var sdk: Sdk?
}

View File

@@ -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<ParentStep>(parent: ParentStep) :
MavenizedNewProjectWizardStep<MavenProject, ParentStep>(parent)
MavenizedNewProjectWizardStep<MavenProject, ParentStep>(parent),
MavenNewProjectWizardData
where ParentStep : NewProjectWizardStep,
ParentStep : NewProjectWizardBaseData {
// used externally
@Suppress("MemberVisibilityCanBePrivate")
val sdkProperty = propertyGraph.property<Sdk?>(null)
final override val sdkProperty = propertyGraph.property<Sdk?>(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<ParentStep>(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

View File

@@ -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())
}
}

View File

@@ -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>(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)
}
}