Wizard: use different Kotlin version for compose templates

This commit is contained in:
Ilya Kirillov
2020-10-13 01:57:46 +03:00
parent 1cc007fcbf
commit b7017c233e
18 changed files with 50 additions and 24 deletions
@@ -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.EapVersionDownloader
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardKotlinVersion
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService 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.settings.version.Version
import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.runWithProgressBar import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.runWithProgressBar
class IdeaKotlinVersionProviderService : KotlinVersionProviderService(), IdeaWizardService { 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() val version = getPatchedKotlinVersion()
?: getKotlinVersionFromCompiler() ?: getKotlinVersionFromCompiler()
?: VersionsDownloader.downloadLatestEapOrStableKotlinVersion() ?: VersionsDownloader.downloadLatestEapOrStableKotlinVersion()
@@ -3,6 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
import com.intellij.ui.JBColor import com.intellij.ui.JBColor
import com.intellij.ui.ScrollPaneFactory import com.intellij.ui.ScrollPaneFactory
import com.intellij.ui.SeparatorWithText import com.intellij.ui.SeparatorWithText
import com.intellij.ui.SimpleTextAttributes
import com.intellij.util.ui.JBUI import com.intellij.util.ui.JBUI
import org.jetbrains.kotlin.idea.KotlinIcons import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.Context
@@ -40,6 +41,10 @@ class ProjectTemplateSettingComponent(
render = { value -> render = { value ->
icon = value.icon icon = value.icon
append(value.title) append(value.title)
value.projectKind.message?.let { message ->
append(" ")
append(message, SimpleTextAttributes.GRAYED_ATTRIBUTES)
}
}, },
onValueSelected = { value = it } onValueSelected = { value = it }
) )
@@ -6,11 +6,14 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Context
import org.jetbrains.kotlin.tools.projectWizard.core.Reader 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.StringValidators
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference 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.CommonTargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType 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.KotlinPlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType 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.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module 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 import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
@@ -165,14 +168,14 @@ private class ModuleTemplateComponent(
private object NoneTemplate : Template() { private object NoneTemplate : Template() {
override val title = KotlinNewProjectWizardUIBundle.message("module.settings.template.none") override val title = KotlinNewProjectWizardUIBundle.message("module.settings.template.none")
override val description: String = "" 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" override val id: String = "none"
} }
fun Reader.availableTemplatesFor(module: Module) = fun Reader.availableTemplatesFor(module: Module) =
TemplatesPlugin.templates.propertyValue.values.filter { template -> TemplatesPlugin.templates.propertyValue.values.filter { template ->
template.isSupportedByModuleType(module) template.isSupportedByModuleType(module, KotlinPlugin.projectKind.settingValue)
} }
@@ -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.WizardKotlinVersion
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionKind import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionKind
import org.jetbrains.kotlin.tools.projectWizard.core.service.KotlinVersionProviderService 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.BintrayRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository
@@ -18,7 +19,7 @@ class KotlinVersionProviderTestWizardService() : KotlinVersionProviderService(),
get() = System.getProperty("cacheRedirectorEnabled")?.toBoolean() == true get() = System.getProperty("cacheRedirectorEnabled")?.toBoolean() == true
override fun getKotlinVersion(): WizardKotlinVersion = override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion =
kotlinVersionWithDefaultValues(TEST_KOTLIN_VERSION) kotlinVersionWithDefaultValues(TEST_KOTLIN_VERSION)
override fun getKotlinVersionRepository(versionKind: KotlinVersionKind): Repository = if (useCacheRedirector) { override fun getKotlinVersionRepository(versionKind: KotlinVersionKind): Repository = if (useCacheRedirector) {
@@ -39,7 +39,7 @@ project.kind.android=Android
project.kind.kotlin.js=Kotlin/JS project.kind.kotlin.js=Kotlin/JS
project.kind.multiplatform=Multiplatform project.kind.multiplatform=Multiplatform
project.kind.singleplatform=JVM project.kind.singleplatform=JVM
project.kind.compose=JetBrains Compose project.kind.compose=JetBrains Compose (Experimental)
project=Project project=Project
@@ -16,6 +16,8 @@ object Versions {
val JUNIT5 = version("5.6.0") val JUNIT5 = version("5.6.0")
val JETBRAINS_COMPOSE = version("0.1.0-build63") val JETBRAINS_COMPOSE = version("0.1.0-build63")
val KOTLIN_VERSION_FOR_COMPOSE = version("1.4.0")
object ANDROID { object ANDROID {
val ANDROID_MATERIAL = version("1.2.1") val ANDROID_MATERIAL = version("1.2.1")
val ANDROIDX_APPCOMPAT = version("1.2.0") val ANDROIDX_APPCOMPAT = version("1.2.0")
@@ -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.asNullable
import org.jetbrains.kotlin.tools.projectWizard.core.compute import org.jetbrains.kotlin.tools.projectWizard.core.compute
import org.jetbrains.kotlin.tools.projectWizard.core.safe 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.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositories
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository 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) data class WizardKotlinVersion(val version: Version, val kind: KotlinVersionKind, val repository: Repository)
abstract class KotlinVersionProviderService : WizardService { abstract class KotlinVersionProviderService : WizardService {
abstract fun getKotlinVersion(): WizardKotlinVersion abstract fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion
protected fun kotlinVersionWithDefaultValues(version: Version) = WizardKotlinVersion( protected fun kotlinVersionWithDefaultValues(version: Version) = WizardKotlinVersion(
version, version,
@@ -52,7 +53,7 @@ abstract class KotlinVersionProviderService : WizardService {
class KotlinVersionProviderServiceImpl : KotlinVersionProviderService(), IdeaIndependentWizardService { class KotlinVersionProviderServiceImpl : KotlinVersionProviderService(), IdeaIndependentWizardService {
override fun getKotlinVersion(): WizardKotlinVersion = override fun getKotlinVersion(projectKind: ProjectKind): WizardKotlinVersion =
kotlinVersionWithDefaultValues(Versions.KOTLIN) kotlinVersionWithDefaultValues(Versions.KOTLIN)
} }
@@ -62,7 +62,7 @@ class KotlinPlugin(context: Context) : Plugin(context) {
title = KotlinNewProjectWizardBundle.message("plugin.kotlin.downloading.kotlin.versions") title = KotlinNewProjectWizardBundle.message("plugin.kotlin.downloading.kotlin.versions")
withAction { withAction {
val version = service<KotlinVersionProviderService>().getKotlinVersion() val version = service<KotlinVersionProviderService>().getKotlinVersion(projectKind.settingValue)
KotlinPlugin.version.update { version.asSuccess() } 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")), Singleplatform(KotlinNewProjectWizardBundle.message("project.kind.singleplatform")),
Multiplatform(KotlinNewProjectWizardBundle.message("project.kind.multiplatform")), Multiplatform(KotlinNewProjectWizardBundle.message("project.kind.multiplatform")),
Android(KotlinNewProjectWizardBundle.message("project.kind.android")), Android(KotlinNewProjectWizardBundle.message("project.kind.android")),
Js(KotlinNewProjectWizardBundle.message("project.kind.kotlin.js")), 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 { fun List<Module>.withAllSubModules(includeSourcesets: Boolean = false): List<Module> = buildList {
@@ -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.KotlinNewProjectWizardBundle
import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.Reader
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType 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 import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
class ConsoleJvmApplicationTemplate : Template() { class ConsoleJvmApplicationTemplate : Template() {
@@ -24,7 +25,7 @@ class ConsoleJvmApplicationTemplate : Template() {
override val description: String = KotlinNewProjectWizardBundle.message("module.template.console.jvm.description") 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 module.configurator.moduleType == ModuleType.jvm
override fun Writer.getIrsToAddToBuildFile( override fun Writer.getIrsToAddToBuildFile(
@@ -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.moduleConfigurators.*
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType 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.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* 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.TemplateInterceptor
import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate
abstract class JsClientTemplate : Template() { abstract class JsClientTemplate : Template() {
override fun isSupportedByModuleType(module: Module): Boolean = override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.js module.configurator.moduleType == ModuleType.js
override fun isApplicableTo( override fun isApplicableTo(
@@ -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.core.Reader
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType 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.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.buildsystem.*
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version 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 title: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.description") 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 module.configurator.moduleType == ModuleType.jvm
@NonNls @NonNls
@@ -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.core.safeAs
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.NativeTargetConfigurator import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.NativeTargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType 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 import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
class NativeConsoleApplicationTemplate : Template() { class NativeConsoleApplicationTemplate : Template() {
override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title") override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.native.console.description") 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 module.configurator.moduleType == ModuleType.native
override val id: String = "nativeConsoleApp" override val id: String = "nativeConsoleApp"
@@ -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.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase 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.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.DefaultRepository.Companion.JCENTER
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType 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 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 module.configurator.moduleType == ModuleType.js
@NonNls @NonNls
@@ -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.StructurePlugin
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType 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.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.DisplayableSettingItem
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version 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 title: String
abstract val description: 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 override val text: String get() = title
@@ -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.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin 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.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.pomIR
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage 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 val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
override fun isSupportedByModuleType(module: Module): Boolean = override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.android module.configurator.moduleType == ModuleType.android && projectKind == ProjectKind.COMPOSE
override fun isApplicableTo(reader: Reader, module: Module): Boolean = override fun isApplicableTo(reader: Reader, module: Module): Boolean =
module.kind == ModuleKind.singleplatformAndroid module.kind == ModuleKind.singleplatformAndroid
@@ -78,7 +79,7 @@ class ComposeAndroidTemplate : Template() {
when { when {
descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.activityMainXml descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.activityMainXml
|| descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.colorsXml || descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.colorsXml
|| descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.stylesXml -> null || descriptor == AndroidModuleConfigurator.FileTemplateDescriptors.stylesXml -> null
descriptor?.templateId == "android/MainActivity.kt.vm" -> { descriptor?.templateId == "android/MainActivity.kt.vm" -> {
template.copy(descriptor = mainActivityKt(module.originalModule.javaPackage(pomIR()))) template.copy(descriptor = mainActivityKt(module.originalModule.javaPackage(pomIR())))
} }
@@ -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.moduleConfigurators.moduleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin 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.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.pomIR
import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage import org.jetbrains.kotlin.tools.projectWizard.settings.JavaPackage
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* 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 title: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description") override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.desktop.description")
override fun isSupportedByModuleType(module: Module): Boolean = override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator.moduleType == ModuleType.jvm module.configurator.moduleType == ModuleType.jvm && projectKind == ProjectKind.COMPOSE
override fun isApplicableTo(reader: Reader, module: Module): Boolean = override fun isApplicableTo(reader: Reader, module: Module): Boolean =
module.kind == ModuleKind.singleplatformJvm module.kind == ModuleKind.singleplatformJvm
@@ -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.applyMppStructure
import org.jetbrains.kotlin.tools.projectWizard.mpp.mppSources 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.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.pomIR
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository 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 title: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.description") override val description: String = KotlinNewProjectWizardBundle.message("module.template.compose.mpp.description")
override fun isSupportedByModuleType(module: Module): Boolean = override fun isSupportedByModuleType(module: Module, projectKind: ProjectKind): Boolean =
module.configurator == MppModuleConfigurator module.configurator == MppModuleConfigurator && projectKind == ProjectKind.COMPOSE
override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = irsList { override fun Writer.getIrsToAddToBuildFile(module: ModuleIR): List<BuildSystemIR> = irsList {
+GradleImportIR("org.jetbrains.compose.compose") +GradleImportIR("org.jetbrains.compose.compose")
@@ -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.applyMppStructure
import org.jetbrains.kotlin.tools.projectWizard.mpp.mppSources 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.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.pomIR
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module 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 title: String = KotlinNewProjectWizardBundle.message("module.template.mpp.mobile.title")
override val description: String = KotlinNewProjectWizardBundle.message("module.template.mpp.mobile.description") 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 module.configurator == MppModuleConfigurator