summaryrefslogtreecommitdiff
path: root/project-wizard
diff options
context:
space:
mode:
authorIlya Kirillov <ilya.kirillov@jetbrains.com>2020-10-13 01:57:46 +0300
committerkotlin-ide-monorepo-bot <kotlin-ide-monorepo-bot-no-reply@jetbrains.com>2020-10-19 11:29:01 +0000
commit8f8a63f4e0465a2c14ac91710b0122acd18f07c5 (patch)
treebcd3aa68c4b13a166c2e0dcb2df54876dd739c73 /project-wizard
parenta9e07b37fd9642ee6ab50f659fa6895a90ccda41 (diff)
downloadintellij-kotlin-8f8a63f4e0465a2c14ac91710b0122acd18f07c5.tar.gz
Wizard: use different Kotlin version for compose templates
Original commit: b7017c233ec515c386d5acd30db6cb7a4e14ddaa GitOrigin-RevId: d81c514f2cb04b2f5d55a8dc3935a73005569f41
Diffstat (limited to 'project-wizard')
-rw-r--r--project-wizard/cli/test/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt3
-rw-r--r--project-wizard/core/resources/messages/KotlinNewProjectWizardBundle.properties2
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt2
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt5
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt6
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt3
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/JsClientTemplate.kt3
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt3
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt3
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleNodeJsTemplate.kt3
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt3
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeAndroidTemplate.kt7
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeJvmDesktopTemplate.kt5
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeMppModuleTemplate.kt5
-rw-r--r--project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/mpp/MobileMppTemplate.kt3
-rw-r--r--project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt6
-rw-r--r--project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt5
-rw-r--r--project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt7
18 files changed, 50 insertions, 24 deletions
diff --git a/project-wizard/cli/test/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt b/project-wizard/cli/test/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt
index 46e19671e0bf..8a210dd48961 100644
--- a/project-wizard/cli/test/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt
+++ b/project-wizard/cli/test/org/jetbrains/kotlin/tools/projectWizard/cli/KotlinVersionProviderTestWizardService.kt
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.service.EapVersionDownloade
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionKind
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.BintrayRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
@@ -18,7 +19,7 @@ class KotlinVersionProviderTestWizardService() : KotlinVersionProviderService(),
get() = System.getProperty("cacheRedirectorEnabled")?.toBoolean() == true
- override fun getKotlinVersion(): WizardKotlinVersion =
+ override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion =
kotlinVersionWithDefaultValues(TEST_KOTLIN_VERSION)
override fun getKotlinVersionRepository(versionKind: KotlinVersionKind): Repository = if (useCacheRedirector) {
diff --git a/project-wizard/core/resources/messages/KotlinNewProjectWizardBundle.properties b/project-wizard/core/resources/messages/KotlinNewProjectWizardBundle.properties
index f9c1aff0b124..b751f2c22920 100644
--- a/project-wizard/core/resources/messages/KotlinNewProjectWizardBundle.properties
+++ b/project-wizard/core/resources/messages/KotlinNewProjectWizardBundle.properties
@@ -39,7 +39,7 @@ project.kind.android=Android
project.kind.kotlin.js=Kotlin/JS
project.kind.multiplatform=Multiplatform
project.kind.singleplatform=JVM
-project.kind.compose=JetBrains Compose
+project.kind.compose=JetBrains Compose (Experimental)
project=Project
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt
index 3e9880179c4e..3b845ff14be1 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/Versions.kt
@@ -16,6 +16,8 @@ object Versions {
val JUNIT5 = version("5.6.0")
val JETBRAINS_COMPOSE = version("0.1.0-build63")
+ val KOTLIN_VERSION_FOR_COMPOSE = version("1.4.0")
+
object ANDROID {
val ANDROID_MATERIAL = version("1.2.1")
val ANDROIDX_APPCOMPAT = version("1.2.0")
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt
index 4a37e9815773..4920083932ed 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/core/service/KotlinVersionProviderService.kt
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
import org.jetbrains.kotlin.tools.projectWizard.core.asNullable
import org.jetbrains.kotlin.tools.projectWizard.core.compute
import org.jetbrains.kotlin.tools.projectWizard.core.safe
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
@@ -23,7 +24,7 @@ import java.util.stream.Collectors
data class WizardKotlinVersion(val version: Version, val kind: KotlinVersionKind, val repository: Repository)
abstract class KotlinVersionProviderService : WizardService {
- abstract fun getKotlinVersion(): WizardKotlinVersion
+ abstract fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion
protected fun kotlinVersionWithDefaultValues(version: Version) = WizardKotlinVersion(
version,
@@ -52,7 +53,7 @@ abstract class KotlinVersionProviderService : WizardService {
class KotlinVersionProviderServiceImpl : KotlinVersionProviderService(), IdeaIndependentWizardService {
- override fun getKotlinVersion(): WizardKotlinVersion =
+ override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion =
kotlinVersionWithDefaultValues(Versions.KOTLIN)
}
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt
index ed9e01e81a43..11ff03ed036a 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt
@@ -62,7 +62,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
title = KotlinNewProjectWizardBundle.message("plugin.kotlin.downloading.kotlin.versions")
withAction {
- val version = service<KotlinVersionProviderService>().getKotlinVersion()
+ val version = service<KotlinVersionProviderService>().getKotlinVersion(projectKind.settingValue)
KotlinPlugin.version.update { version.asSuccess() }
}
}
@@ -194,12 +194,12 @@ class KotlinPlugin(context: Context) : Plugin(context) {
}
-enum class ProjectKind(override val text: String) : DisplayableSettingItem {
+enum class ProjectKind(override val text: String, val message: String? = null) : DisplayableSettingItem {
Singleplatform(KotlinNewProjectWizardBundle.message("project.kind.singleplatform")),
Multiplatform(KotlinNewProjectWizardBundle.message("project.kind.multiplatform")),
Android(KotlinNewProjectWizardBundle.message("project.kind.android")),
Js(KotlinNewProjectWizardBundle.message("project.kind.kotlin.js")),
- COMPOSE(KotlinNewProjectWizardBundle.message("project.kind.compose"))
+ COMPOSE(KotlinNewProjectWizardBundle.message("project.kind.compose"), message = "uses Kotlin ${Versions.KOTLIN_VERSION_FOR_COMPOSE}")
}
fun List<Module>.withAllSubModules(includeSourcesets: Boolean = false): List<Module> = buildList {
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt
index 5fb3440b05f4..c6f8f3e588ff 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt
@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetTy
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
class ConsoleJvmApplicationTemplate : Template() {
@@ -24,7 +25,7 @@ class ConsoleJvmApplicationTemplate : Template() {
override val description: String = KotlinNewProjectWizardBundle.message("module.template.console.jvm.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.jvm
override fun Writer.getIrsToAddToBuildFile(
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/JsClientTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/JsClientTemplate.kt
index a347be9aaa96..c8eea3546005 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/JsClientTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/JsClientTemplate.kt
@@ -15,12 +15,13 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatf
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate
abstract class JsClientTemplate : Template() {
- override fun isSupportedByModuleType(module: Module): Boolean =
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.js
override fun isApplicableTo(
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt
index 30dfbfcc4039..9a302a4c5086 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
@@ -33,7 +34,7 @@ class KtorServerTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.jvm
@NonNls
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt
index 68dbfc9ca731..1a79b7b30e8c 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt
@@ -17,13 +17,14 @@ import org.jetbrains.kotlin.tools.projectWizard.core.*
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.NativeTargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
class NativeConsoleApplicationTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.native.console.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.native
override val id: String = "nativeConsoleApp"
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleNodeJsTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleNodeJsTemplate.kt
index 12acda153c48..e06cfc7bd98a 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleNodeJsTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleNodeJsTemplate.kt
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.NodeJsSingle
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository.Companion.JCENTER
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType
@@ -28,7 +29,7 @@ class SimpleNodeJsTemplate : Template() {
override val description: String = KotlinNewProjectWizardBundle.message("module.template.simple.nodejs.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.js
@NonNls
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt
index 48582653fb25..d359e09f6d7d 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt
@@ -16,6 +16,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.RunConfigurationsPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
@@ -72,7 +73,7 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor, DisplayableSet
abstract val title: String
abstract val description: String
- abstract fun isSupportedByModuleType(module: Module): Boolean
+ abstract fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean
override val text: String get() = title
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeAndroidTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeAndroidTemplate.kt
index 88dc5409602f..4cd37ffb1e9b 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeAndroidTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeAndroidTemplate.kt
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.inContextOfM
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage
@@ -39,8 +40,8 @@ class ComposeAndroidTemplate : Template() {
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
- module.configurator.moduleType == ModuleType.android
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
+ module.configurator.moduleType == ModuleType.android && projectKind == ProjectKind.COMPOSE
override fun isApplicableTo(reader: Reader, module: Module): Boolean =
module.kind == ModuleKind.singleplatformAndroid
@@ -78,7 +79,7 @@ class ComposeAndroidTemplate : Template() {
when {
descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.activityMainXml
|| descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.colorsXml
- || descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.stylesXml -> null
+ || descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.stylesXml -> null
descriptor?.templateId == "android/MainActivity.kt.vm" -> {
template.copy(descriptor = mainActivityKt(module.originalModule.javaPackage(pomIR())))
}
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeJvmDesktopTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeJvmDesktopTemplate.kt
index 7a8a7bf83012..fca244ff40e4 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeJvmDesktopTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeJvmDesktopTemplate.kt
@@ -19,6 +19,7 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.inContextOfM
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
@@ -32,8 +33,8 @@ class ComposeJvmDesktopTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
- module.configurator.moduleType == ModuleType.jvm
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
+ module.configurator.moduleType == ModuleType.jvm && projectKind == ProjectKind.COMPOSE
override fun isApplicableTo(reader: Reader, module: Module): Boolean =
module.kind == ModuleKind.singleplatformJvm
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeMppModuleTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeMppModuleTemplate.kt
index df641a103c5f..66e936c49f51 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeMppModuleTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/compose/ComposeMppModuleTemplate.kt
@@ -21,6 +21,7 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
import org.jetbrains.kotlin.tools.projectWizard.mpp.applyMppStructure
import org.jetbrains.kotlin.tools.projectWizard.mpp.mppSources
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
@@ -38,8 +39,8 @@ class ComposeMppModuleTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
- module.configurator == MppModuleConfigurator
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
+ module.configurator == MppModuleConfigurator && projectKind == ProjectKind.COMPOSE
override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = irsList {
+GradleImportIR("org.jetbrains.compose.compose")
diff --git a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/mpp/MobileMppTemplate.kt b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/mpp/MobileMppTemplate.kt
index ac0d5eb8c991..1aa37e26e9c7 100644
--- a/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/mpp/MobileMppTemplate.kt
+++ b/project-wizard/core/src/org/jetbrains/kotlin/tools/projectWizard/templates/mpp/MobileMppTemplate.kt
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.MppModuleCon
import org.jetbrains.kotlin.tools.projectWizard.mpp.applyMppStructure
import org.jetbrains.kotlin.tools.projectWizard.mpp.mppSources
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.plugins.pomIR
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
@@ -33,7 +34,7 @@ class MobileMppTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.mpp.mobile.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.mpp.mobile.description")
- override fun isSupportedByModuleType(module: Module): Boolean =
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator == MppModuleConfigurator
diff --git a/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt b/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt
index bb08effe4014..99797b2f0a9f 100644
--- a/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt
+++ b/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt
@@ -16,12 +16,16 @@ import org.jetbrains.kotlin.tools.projectWizard.core.safe
import org.jetbrains.kotlin.tools.projectWizard.core.service.EapVersionDownloader
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.runWithProgressBar
class IdeaKotlinVersionProviderService : KotlinVersionProviderService(), IdeaWizardService {
- override fun getKotlinVersion(): WizardKotlinVersion {
+ override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion {
+ if (projectKind == ProjectKind.COMPOSE) {
+ return kotlinVersionWithDefaultValues(Versions.KOTLIN_VERSION_FOR_COMPOSE)
+ }
val version = getPatchedKotlinVersion()
?: getKotlinVersionFromCompiler()
?: VersionsDownloader.downloadLatestEapOrStableKotlinVersion()
diff --git a/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt b/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt
index 6c3a8bf717eb..de1a8777ed88 100644
--- a/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt
+++ b/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt
@@ -3,6 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
import com.intellij.ui.JBColor
import com.intellij.ui.ScrollPaneFactory
import com.intellij.ui.SeparatorWithText
+import com.intellij.ui.SimpleTextAttributes
import com.intellij.util.ui.JBUI
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.core.Context
@@ -40,6 +41,10 @@ class ProjectTemplateSettingComponent(
render = { value ->
icon = value.icon
append(value.title)
+ value.projectKind.message?.let { message ->
+ append(" ")
+ append(message, SimpleTextAttributes.GRAYED_ATTRIBUTES)
+ }
},
onValueSelected = { value = it }
)
diff --git a/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt b/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt
index d65f828916d3..4adbe40bfb6d 100644
--- a/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt
+++ b/project-wizard/idea/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt
@@ -7,11 +7,14 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Context
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference
+import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.CommonTargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
+import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
@@ -166,14 +169,14 @@ private class ModuleTemplateComponent(
private object NoneTemplate : Template() {
override val title = KotlinNewProjectWizardUIBundle.message("module.settings.template.none")
override val description: String = ""
- override fun isSupportedByModuleType(module: Module): Boolean = true
+ override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean = true
override val id: String = "none"
}
fun Reader.availableTemplatesFor(module: Module) =
TemplatesPlugin.templates.propertyValue.values.filter { template ->
- template.isSupportedByModuleType(module)
+ template.isSupportedByModuleType(module, KotlinPlugin.projectKind.settingValue)
}