diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt index 9f1155c78aa..50a14a26bec 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt @@ -64,10 +64,10 @@ class TargetsModel( fun add(module: Module) { uiEditorUsagesStats.modulesCreated++ + addToTheTree(module, modifyValue = true, parent = tree.selectedNode ?: root) with(readingContext) { module.apply { initDefaultValuesForSettings() } } - addToTheTree(module, modifyValue = true, parent = tree.selectedNode ?: root) } fun update() { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/SettingsOwner.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/SettingsOwner.kt index aeccd6968ff..75723a10d5c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/SettingsOwner.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/SettingsOwner.kt @@ -1,8 +1,8 @@ package org.jetbrains.kotlin.tools.projectWizard -import org.jetbrains.kotlin.tools.projectWizard.core.EntitiesOwnerDescriptor import org.jetbrains.kotlin.tools.projectWizard.core.Parser import org.jetbrains.kotlin.tools.projectWizard.core.entity.* +import org.jetbrains.kotlin.tools.projectWizard.core.enumParser import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import kotlin.properties.ReadOnlyProperty @@ -77,3 +77,13 @@ interface SettingsOwner { } } + +inline fun SettingsOwner.enumSettingImpl( + title: String, + neededAtPhase: GenerationPhase, + crossinline init: DropDownSettingType.Builder.() -> Unit = {} +) where E : Enum, E : DisplayableSettingItem = dropDownSetting(title, neededAtPhase, enumParser()) { + values = enumValues().asList() + defaultValue = values.firstOrNull() + init() +} \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt index 4f9d2a124c9..2a97719329e 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Plugin.kt @@ -2,6 +2,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner import org.jetbrains.kotlin.tools.projectWizard.core.entity.* +import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version @@ -154,14 +155,13 @@ abstract class Plugin(override val context: Context) : EntityBase(), ): ReadOnlyProperty> = super.pathSetting(title, neededAtPhase, init) as ReadOnlyProperty> + @Suppress("UNCHECKED_CAST") inline fun enumSetting( title: String, neededAtPhase: GenerationPhase, crossinline init: DropDownSettingType.Builder.() -> Unit = {} - ) where E : Enum, E : DisplayableSettingItem = dropDownSetting(title, neededAtPhase, enumParser()) { - values = enumValues().asList() - init() - } + ): ReadOnlyProperty>> where E : Enum, E : DisplayableSettingItem = + enumSettingImpl(title, neededAtPhase, init) as ReadOnlyProperty>> } val PluginReference.withParentPlugins diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt index b4fe3e3ade1..8e059d6a581 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt @@ -42,7 +42,7 @@ open class ReadingContext( val > PluginSettingReference.pluginSetting: Setting get() = context.settingContext.getPluginSetting(this) - fun Setting>.getSavedValueForSetting(): V? { + private fun Setting>.getSavedValueForSetting(): V? { if (!isSavable || this !is PluginSetting<*, *>) return null val serializer = type.serializer.safeAs>() ?: return null val savedValue = service().getSettingValue(path) ?: return null diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt index 5a2f8e6696d..d505bd29a05 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.cached import org.jetbrains.kotlin.tools.projectWizard.core.entity.* +import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.KotlinBuildSystemPluginIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType @@ -148,15 +149,13 @@ abstract class ModuleConfiguratorSettings : SettingsOwner { init ) as ReadOnlyProperty> + @Suppress("UNCHECKED_CAST") inline fun enumSetting( title: String, neededAtPhase: GenerationPhase, crossinline init: DropDownSettingType.Builder.() -> Unit = {} - ) where E : Enum, E : DisplayableSettingItem = dropDownSetting(title, neededAtPhase, enumParser()) { - values = enumValues().asList() - init() - } - + ): ReadOnlyProperty>> where E : Enum, E : DisplayableSettingItem = + enumSettingImpl(title, neededAtPhase, init) as ReadOnlyProperty>> } interface ModuleConfiguratorWithSettings : ModuleConfigurator { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt index 89c0367a7ad..8541bacfed9 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt @@ -5,6 +5,7 @@ import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.* +import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.DependencyIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR @@ -221,14 +222,13 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor { init ) as ReadOnlyProperty> + @Suppress("UNCHECKED_CAST") inline fun enumSetting( title: String, neededAtPhase: GenerationPhase, crossinline init: DropDownSettingType.Builder.() -> Unit = {} - ) where E : Enum, E : DisplayableSettingItem = dropDownSetting(title, neededAtPhase, enumParser()) { - values = enumValues().asList() - init() - } + ): ReadOnlyProperty>> where E : Enum, E : DisplayableSettingItem = + enumSettingImpl(title, neededAtPhase, init) as ReadOnlyProperty>> companion object { fun parser(sourcesetIdentificator: Identificator): Parser