diff --git a/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties b/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties deleted file mode 100644 index b3814407664..00000000000 --- a/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties +++ /dev/null @@ -1,5 +0,0 @@ -module.kind.android.module=Android Module -module.kind.js.module=JS Module -module.kind.module=Module -module.kind.mpp.module=MPP Module -module.kind.target=Target \ No newline at end of file diff --git a/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardUIBundle.properties b/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardUIBundle.properties index 697511c7d06..8660184457b 100644 --- a/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardUIBundle.properties +++ b/idea/idea-new-project-wizard/resources/messages/KotlinNewProjectWizardUIBundle.properties @@ -11,6 +11,7 @@ module.dependencies.module.dependencies=Module dependencies module.dependencies.add.module.dependency=Add module dependency module.dependencies.remove.module.dependency=Remove module dependency +editor.modules.add=Add {0} editor.modules.remove.selected.module=Do you want to remove selected {0} editor.modules.remove.selected.submodules=This will also remove all submodules. editor.modules.remove.selected.no.undone=This action cannot be undone. @@ -21,7 +22,7 @@ editor.modules.remove.tooltip=Remove {0} editor.modules.project=Project editor.modules.add.module=Add a module to the project -editor.modules.no.modules=No modules created +editor.modules.no.modules=No modules created module.settings.name=Name module.settings.name.same.as.project=[The same as the project name] diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt index 4f693cf1072..4ec1fee2f3f 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/CreateModuleOrTargetPopup.kt @@ -5,13 +5,12 @@ import com.intellij.openapi.ui.popup.ListPopup import com.intellij.openapi.ui.popup.PopupStep import com.intellij.openapi.ui.popup.util.BaseListPopupStep import com.intellij.ui.popup.PopupFactoryImpl +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.* 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.ModuleKind -import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardBundle -import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.fullTextHtml import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.icon import javax.swing.Icon diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt index 91cba2f8a9e..d9ddadb94d4 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorToolbarDecorator.kt @@ -4,6 +4,7 @@ import com.intellij.icons.AllIcons import com.intellij.openapi.actionSystem.ActionToolbarPosition import com.intellij.openapi.ui.Messages import com.intellij.ui.ToolbarDecorator +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidSinglePlatformModuleConfigurator import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.IOSSinglePlatformModuleConfigurator import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.JsSingleplatformModuleConfigurator @@ -12,7 +13,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset -import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardUIBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.createPanelWithPopupHandler import org.jetbrains.kotlin.utils.addToStdlib.safeAs @@ -58,7 +58,7 @@ class ModulesEditorToolbarDecorator( null -> true else -> false } - text = "Add" + " " + when (tree.selectedSettingItem?.safeAs()?.kind) { + val moduleKindTextToAdd = when (tree.selectedSettingItem?.safeAs()?.kind) { ModuleKind.multiplatform -> KotlinNewProjectWizardBundle.message("module.kind.target") ModuleKind.singleplatformJvm -> KotlinNewProjectWizardBundle.message("module.kind.module") ModuleKind.singleplatformJs -> KotlinNewProjectWizardBundle.message("module.kind.js.module") @@ -66,9 +66,12 @@ class ModulesEditorToolbarDecorator( ModuleKind.target -> "" null -> "" } + + text = KotlinNewProjectWizardUIBundle.message("editor.modules.add", moduleKindTextToAdd) } event.presentation.isEnabled } + setRemoveAction { val moduleKindText = selectedModuleKindText ?: KotlinNewProjectWizardBundle.message("module.kind.module") if (Messages.showOkCancelDialog( diff --git a/libraries/tools/new-project-wizard/build.gradle.kts b/libraries/tools/new-project-wizard/build.gradle.kts index 1bc35c40c01..a129e1e8378 100644 --- a/libraries/tools/new-project-wizard/build.gradle.kts +++ b/libraries/tools/new-project-wizard/build.gradle.kts @@ -8,7 +8,7 @@ dependencies { compileOnly(project(":kotlin-reflect-api")) //needed only for message bundles - implementation(intellijCoreDep()) + implementation(intellijDep()) { includeJars("util") } testImplementation(project(":kotlin-test:kotlin-test-junit")) testImplementation(commonDep("junit:junit")) diff --git a/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties b/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties new file mode 100644 index 00000000000..688966647f0 --- /dev/null +++ b/libraries/tools/new-project-wizard/resources/messages/KotlinNewProjectWizardBundle.properties @@ -0,0 +1,148 @@ +buildsystem.type.gradle.groovy=Gradle Groovy +buildsystem.type.gradle.kotlin=Gradle Kotlin +buildsystem.type.intellij=IntelliJ +buildsystem.type.maven=Maven + +error.template.not.found=Template with an id {0} is not found +error.required.settings.are.not.present=The following required settings is not present +error.configurator.not.found=Module type {0} was not found +error.invalid.module.dependency=Invalid module dependency from module {0} to {1} + +module.configuration.group.android.native=Android Native +module.configuration.group.ios=iOS +module.configuration.group.linux=Linux +module.configuration.group.macos=macOS +module.configuration.group.windows.mingw=Windows (MinGW) + +module.kind.android.module=Android Module +module.kind.ios.module=iOS Module +module.kind.js.module=JS Module +module.kind.module=Module +module.kind.mpp.module=MPP Module +module.kind.target=Target + +plugin.buildsystem.setting.type=Build System +plugin.buildsystem.setting.type.error.wrong.project.kind={0} cannot be generated using {1} + +plugin.kotlin.downloading.kotlin.versions=Downloading list of Kotlin versions +plugin.kotlin.setting.modules=Modules +plugin.kotlin.setting.modules.error.duplicated.modules=There are {0} modules with name {1} +plugin.kotlin.setting.modules.error.duplicated.targets=There are {0} targets with name {1} + +plugin.kotlin.setting.project.kind=Project Kind + +project.kind.android=Android project +project.kind.kotlin.js=Kotlin/JS project +project.kind.multiplatform=Multiplatform project +project.kind.singleplatform=Singleplatform project + +project=Project + +plugin.structure.setting.location=Location +plugin.structure.setting.name=Name +plugin.structure.setting.group.id=Group ID +plugin.structure.setting.artifact.id=Artifact ID +plugin.structure.setting.version=Version + +plugin.android.setting.sdk=Android SDK + + +validation.should.not.be.blank={0} should not be blank +validation.identifier={0} should consist only of letters, digits{1} +validation.identifier.additional.symbols=", and symbols: {0} +validation.file.should.exists=File for {0} should exists + +version.error.bad.format=Bad version format for setting {0} +parse.error.no.value.for.key=No value was found for a key {0} + +module.type.jvm=Kotlin/JVM +module.type.js=Kotlin/JS +module.type.common=Common +module.type.android=Android +module.type.native=Kotlin/Native + +module.type.ios=iOS + +module.name=Module name +module.name.with.name=Module name {0} + +module.configurator.js=JS for Browser + +module.configurator.android=Android +module.configurator.android.setting.android.plugin=Android Plugin +module.configurator.android.setting.android.plugin.application=Android Application +module.configurator.android.setting.android.plugin.library=Android + +module.configurator.common=Common + +module.configurator.jvm=JVM +module.configurator.jvm.setting.target.jvm.version=Target JVM Version +module.configurator.jvm.setting.java.support=Java language support + +module.configurator.mpp=Multiplatform +module.configurator.ios=IOS +module.configurator.ios.requires.xcode=Requires Xcode + +module.configurator.js.browser=Browser +module.configurator.js.node=Node.js + +module.configurator.tests.setting.framework=Test Framework +module.configurator.tests.setting.framework.junit4=JUnit 4 +module.configurator.tests.setting.framework.junit5=JUnit 5 +module.configurator.tests.setting.framework.test.ng=Test NG +module.configurator.tests.setting.framework.js=JavaScript +module.configurator.tests.setting.framework.common=common +module.configurator.native.for.current.system=Your system + +project.template.empty.singleplatform.title=Backend Application +project.template.empty.singleplatform.description=Create a backend application with Kotlin/JVM. + +project.template.empty.mpp.title=Multiplatform Application +project.template.empty.mpp.description=Create applications for different platforms that support sharing common code. + +project.template.empty.jvm.console.title=Console Application +project.template.empty.jvm.console.description=Create a console application with Kotlin/JVM. Use it for prototyping or testing purposes. + +project.template.mpp.lib.title=Multiplatform Library +project.template.mpp.lib.description=Create a library for sharing common code among different platforms. + +project.template.full.stack.title=Full-Stack Web Application +project.template.full.stack.description=Create a fully-functional web application using Kotlin/JS for the frontend and Kotlin/JVM for the backend. + +project.template.native.console.title=Native Application +project.template.native.console.description=Create an application with Kotlin/Native that works as a standalone application under a specific platform. + +project.template.frontend.title=Frontend Application +project.template.frontend.description=Create a frontend application with Kotlin/JS if you already have a backend. + +project.template.mpp.mobile.title=Multiplatform Mobile Application +project.template.mpp.mobile.description=Create mobile applications for iOS and Android with Kotlin Multiplatform Mobile, which supports sharing common code between platforms. + +project.template.mpp.mobile.lib.title=Multiplatform Mobile Library +project.template.mpp.mobile.lib.description=Create a library that supports sharing code between iOS and Android. + + +module.template.console.jvm.title=Console Application +module.template.console.jvm.description=Simple "Hello World!" Kotlin/JVM application that works in the console + +module.template.ktor.server.title=Ktor Server +module.template.ktor.server.description=Configurable Ktor web server for building web applications +module.template.ktor.server.setting.engine=Ktor Server Engine +module.template.ktor.server.setting.engine.netty=Netty +module.template.ktor.server.setting.engine.tomcat=Tomcat +module.template.ktor.server.setting.engine.jetty=Jetty + +module.template.native.console.title=Native Application +module.template.native.console.description=Simple Kotlin/Native application for your operating system + +module.template.js.simple.title=Frontend Application +module.template.js.simple.description=Configurable Kotlin/JS frontend application +module.template.js.simple.run.configuration.dev=BrowserDevelopmentRun in continuous mode +module.template.js.simple.run.configuration.prod=BrowserProductionRun in continuous mode +module.template.js.simple.setting.rendering.engine=Rendering engine +module.template.js.simple.setting.rendering.kotlinx.html=Use statically typed Kotlinx.html DSL +module.template.js.simple.setting.rendering.react=Use Kotlin-wrapped React library +module.template.js.simple.setting.rendering.react.styled=Use Kotlin-wrapped React framework together with Styled Components + + + diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/IdeaRunConfiguration.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/IdeaRunConfiguration.kt index 794621ca977..a50e5a153d8 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/IdeaRunConfiguration.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/IdeaRunConfiguration.kt @@ -5,12 +5,16 @@ package org.jetbrains.kotlin.tools.projectWizard +import org.jetbrains.annotations.Nls +import org.jetbrains.annotations.NonNls + interface WizardRunConfiguration { + @get:Nls val configurationName: String } data class WizardGradleRunConfiguration( - override val configurationName: String, - val taskName: String, + @Nls override val configurationName: String, + @NonNls val taskName: String, val parameters: List ) : WizardRunConfiguration \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/KotlinNewProjectWizardBundle.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/KotlinNewProjectWizardBundle.kt similarity index 74% rename from idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/KotlinNewProjectWizardBundle.kt rename to libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/KotlinNewProjectWizardBundle.kt index 7ffaa9749e5..ee509026870 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/KotlinNewProjectWizardBundle.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/KotlinNewProjectWizardBundle.kt @@ -3,16 +3,16 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -package org.jetbrains.kotlin.tools.projectWizard.wizard +package org.jetbrains.kotlin.tools.projectWizard import org.jetbrains.annotations.NonNls import org.jetbrains.annotations.PropertyKey -import org.jetbrains.kotlin.util.AbstractKotlinBundle +import com.intellij.AbstractBundle @NonNls private const val BUNDLE = "messages.KotlinNewProjectWizardBundle" -object KotlinNewProjectWizardBundle : AbstractKotlinBundle(BUNDLE) { +object KotlinNewProjectWizardBundle : AbstractBundle(BUNDLE) { @JvmStatic fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any): String = getMessage(key, *params) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/EntitiesOwner.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/EntitiesOwner.kt index 6978fb4dbd6..7d5b0538d49 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/EntitiesOwner.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/EntitiesOwner.kt @@ -1,6 +1,9 @@ package org.jetbrains.kotlin.tools.projectWizard.core +import org.jetbrains.annotations.NonNls + interface EntitiesOwnerDescriptor { + @get:NonNls val id: String } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Parser.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Parser.kt index 2e0d1a049fe..878f6a4dfea 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Parser.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Parser.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.core +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.SettingReference import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import org.jetbrains.kotlin.tools.projectWizard.templates.Template @@ -22,7 +23,7 @@ fun ParsingState.withSettings(newSettings: List, Any typealias ParsingContext = ComputeContext abstract class Parser { - abstract fun ParsingContext.parse(value: Any?, path: String): TaskResult + abstract fun ParsingContext.parse(value: Any?, @NonNls path: String): TaskResult } fun alwaysFailingParser(errorMessage: String) = object : Parser() { @@ -33,7 +34,7 @@ fun alwaysFailingParser(errorMessage: String) = object : Parser() { } -fun Parser.parse(context: ParsingContext, value: Any?, path: String) = +fun Parser.parse(context: ParsingContext, value: Any?, @NonNls path: String) = with(context) { parse(value, path) } inline fun enumParser(): Parser where E : Enum, E : DisplayableSettingItem = object : Parser() { @@ -90,31 +91,31 @@ inline fun valueParser() = valueParser { value, path -> value.parseAs(path, T::class).get() } -fun Any?.classMismatchError(path: String, expected: KClass<*>): ParseError { +fun Any?.classMismatchError(@NonNls path: String, expected: KClass<*>): ParseError { val classpath = this?.let { it::class.simpleName } ?: "null" return ParseError("Expected ${expected.simpleName!!} for `$path` but $classpath was found") } -inline fun Any?.parseAs(path: String) = +inline fun Any?.parseAs(@NonNls path: String) = safeAs().toResult { classMismatchError(path, V::class) } -inline fun Any?.parseAs(path: String, klass: KClass): TaskResult = +inline fun Any?.parseAs(@NonNls path: String, klass: KClass): TaskResult = this?.takeIf { it::class.isSubclassOf(klass) }?.safeAs() .toResult { classMismatchError(path, klass) } -inline fun Map<*, *>.parseValue(path: String, name: String) = +inline fun Map<*, *>.parseValue(@NonNls path: String, @NonNls name: String) = get(name).parseAs("$path.$name") -inline fun Map<*, *>.parseValue(path: String, name: String, defaultValue: (() -> V)) = +inline fun Map<*, *>.parseValue(@NonNls path: String, @NonNls name: String, defaultValue: (() -> V)) = get(name)?.parseAs("$path.$name") ?: defaultValue().asSuccess() inline fun Map<*, *>.parseValue( context: ParsingContext, - path: String, - name: String, + @NonNls path: String, + @NonNls name: String, crossinline parser: suspend ParsingContext.(V) -> TaskResult ) = with(context) { computeM { @@ -124,16 +125,16 @@ inline fun Map<*, *>.parseValue( } inline fun Map<*, *>.parseValue( - path: String, - name: String, + @NonNls path: String, + @NonNls name: String, klass: KClass ) = get(path).parseAs("$path.$name", klass) fun Map<*, *>.parseValue( context: ParsingContext, - path: String, - name: String, + @NonNls path: String, + @NonNls name: String, parser: Parser, defaultValue: (() -> R)? = null ) = with(context) { @@ -147,7 +148,7 @@ fun Map<*, *>.parseValue( inline fun Any?.parseAs( context: ParsingContext, - path: String, + @NonNls path: String, crossinline parser: suspend ParsingContext.(V) -> TaskResult ) = with(context) { computeM { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt index eef0dfe4e71..f9b7e0dae36 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt @@ -1,5 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity +import org.jetbrains.annotations.Nls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Failure import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS @@ -25,7 +27,9 @@ fun inValidatorContext(validator: Reader.(V) -> SettingValidator) = object StringValidators { fun shouldNotBeBlank(name: String) = settingValidator { value: String -> - if (value.isBlank()) ValidationResult.ValidationError("${name.capitalize()} should not be blank ") + if (value.isBlank()) ValidationResult.ValidationError( + KotlinNewProjectWizardBundle.message("validation.should.not.be.blank", name.capitalize()) + ) else ValidationResult.OK } @@ -34,10 +38,10 @@ object StringValidators { val allowedExtraSymbolsStringified = allowedExtraSymbols .takeIf { it.isNotEmpty() } ?.joinToString(separator = ", ") { char -> "'$char'" } - ?.let { chars -> ", and symbols: $chars" } + ?.let { chars -> KotlinNewProjectWizardBundle.message("validation.identifier.additional.symbols", chars) } .orEmpty() ValidationResult.ValidationError( - "${name.capitalize()} should consist only of letters, digits$allowedExtraSymbolsStringified" + KotlinNewProjectWizardBundle.message("validation.identifier", name.capitalize(), allowedExtraSymbolsStringified) ) } else ValidationResult.OK } @@ -54,7 +58,7 @@ sealed class ValidationResult { } data class ValidationError(val messages: List, val target: Any? = null) : ValidationResult() { - constructor(message: String, target: Any? = null) : this(listOf(message), target) + constructor(@Nls message: String, target: Any? = null) : this(listOf(message), target) override val isOk = false } @@ -66,7 +70,7 @@ sealed class ValidationResult { } companion object { - fun create(condition: Boolean, message: String) = + fun create(condition: Boolean, @Nls message: String) = if (condition) OK else ValidationError(message) inline fun create(condition: Boolean, message: () -> String) = diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt index a484e3f788d..8d07f7544df 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity +import org.jetbrains.annotations.Nls import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import kotlin.reflect.KProperty1 @@ -47,6 +48,7 @@ data class PipelineTask( var isAvailable: Checker = ALWAYS_AVAILABLE_CHECKER + @Nls var title: String? = null fun withAction(action: Writer.() -> TaskResult) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt index 60c9518dd7e..a082dfc5c18 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingReference.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.Identificator import org.jetbrains.kotlin.tools.projectWizard.core.Plugin import org.jetbrains.kotlin.tools.projectWizard.core.Reader @@ -18,6 +19,7 @@ import kotlin.reflect.KProperty1 sealed class SettingReference> { + @get:NonNls abstract val path: String abstract val type: KClass diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt index 215822c1175..d6fb2a8fa97 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/SettingType.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.* @@ -198,7 +199,12 @@ object PathSettingType : SettingType() { init { validate { pathValue -> if (pathValue.toString().isBlank()) - ValidationResult.ValidationError("${title.capitalize()} should not be blank") + ValidationResult.ValidationError( + KotlinNewProjectWizardBundle.message( + "validation.should.not.be.blank", + title.capitalize() + ) + ) else ValidationResult.OK } } @@ -206,7 +212,9 @@ object PathSettingType : SettingType() { fun shouldExists() = validate { pathValue -> if (isUnitTestMode) return@validate ValidationResult.OK if (!Files.exists(pathValue)) - ValidationResult.ValidationError("File for ${title.capitalize()} should exists") + ValidationResult.ValidationError( + KotlinNewProjectWizardBundle.message("validation.file.should.exists", title.capitalize()) + ) else ValidationResult.OK } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/settingUtils.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/settingUtils.kt index fe135b98997..7d147e1d992 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/settingUtils.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/settings/settingUtils.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity.settings +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* fun ParsingContext.parseSettingsMap( @@ -18,7 +19,7 @@ fun ParsingContext.parseSettingsMap( setting.type.parse(this, settingValue, setting.path).map { listOf(settingReference to it) } } setting.isRequired -> { - fail(ParseError("No value was found for a key `$path.${setting.path}`")) + fail(ParseError(KotlinNewProjectWizardBundle.message("parse.error.no.value.for.key", "$path.${setting.path}"))) } else -> success(emptyList()) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/errors.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/errors.kt index f8a4a5e8858..eeba69a51bb 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/errors.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/errors.kt @@ -1,9 +1,13 @@ package org.jetbrains.kotlin.tools.projectWizard.core +import org.jetbrains.annotations.Nls +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import java.io.IOException import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module abstract class Error { + @get:Nls abstract val message: String } @@ -24,31 +28,32 @@ data class IOError(override val exception: IOException) : ExceptionError() data class ExceptionErrorImpl(override val exception: Exception) : ExceptionError() -data class ParseError(override val message: String) : Error() +data class ParseError(@Nls override val message: String) : Error() data class TemplateNotFoundError(val id: String) : Error() { override val message: String - get() = "Template with an id `$id` is not found" + get() = KotlinNewProjectWizardBundle.message("error.template.not.found", id) } data class RequiredSettingsIsNotPresentError(val settingNames: List) : Error() { override val message: String get() = buildString { - append("The following required settings is not present: \n") + append(KotlinNewProjectWizardBundle.message("error.required.settings.are.not.present") + '\n') settingNames.joinTo(this, "\n") { " $it" } } } -data class CircularTaskDependencyError(val taskName: String) : Error() { +data class CircularTaskDependencyError(@NonNls val taskName: String) : Error() { + @get:NonNls override val message: String get() = "$taskName task has circular dependencies" } -data class BadSettingValueError(override val message: String) : Error() +data class BadSettingValueError(@Nls override val message: String) : Error() data class ConfiguratorNotFoundError(val id: String) : Error() { override val message: String - get() = "Module type `$id` was not found" + get() = KotlinNewProjectWizardBundle.message("error.configurator.not.found", id) } data class ValidationError(val validationMessage: String) : Error() { @@ -56,9 +61,9 @@ data class ValidationError(val validationMessage: String) : Error() { get() = validationMessage.capitalize() } -data class ProjectImportingError(override val message: String) : Error() +data class ProjectImportingError(@Nls override val message: String) : Error() -data class InvalidModuleDependencyError(val from: Module, val to: Module, val reason: String? = null) : Error() { +data class InvalidModuleDependencyError(val from: Module, val to: Module, @Nls val reason: String? = null) : Error() { override val message: String - get() = "Invalid module dependency from module ${from.name} to ${to.name}" + reason?.let { ": $it" } + get() = KotlinNewProjectWizardBundle.message("error.invalid.module.dependency", from.name, to.name) + reason?.let { ": $it" } } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt index 1fb3e6cd536..b5185df00c6 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/utils.kt @@ -1,6 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core import kotlinx.collections.immutable.toPersistentList +import org.jetbrains.annotations.NonNls import java.io.IOException import java.nio.file.Path import java.nio.file.Paths @@ -26,19 +27,19 @@ inline infix fun ((A) -> A?).andThenNullable(crossinline then: (A) -> @Suppress("NOTHING_TO_INLINE") inline fun idFunction(): (T) -> T = { it } -operator fun Path.div(other: String): Path = +operator fun Path.div(@NonNls other: String): Path = resolve(other) operator fun Path.div(other: Path): Path = resolve(other.toString()) -operator fun String.div(other: Path): Path = +operator fun @receiver:NonNls String.div(other: Path): Path = Paths.get(this).resolve(other) -operator fun String.div(other: String): Path = +operator fun @receiver:NonNls String.div(@NonNls other: String): Path = Paths.get(this).resolve(other) -fun String.asPath(): Path = Paths.get(this) +fun @receiver:NonNls String.asPath(): Path = Paths.get(this) fun safe(operation: () -> T): TaskResult = try { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt index e5d16b8338a..6c53fe210a0 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/BuildSystemPluginIR.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.ignore import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.GradleIR import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter @@ -30,7 +31,7 @@ data class ApplicationPluginIR(val mainClass: String) : DefaultBuildSystemPlugin } } -data class GradleOnlyPluginByNameIR(val pluginId: String) : BuildSystemPluginIR, GradleIR { +data class GradleOnlyPluginByNameIR(@NonNls val pluginId: String) : BuildSystemPluginIR, GradleIR { override fun GradlePrinter.renderGradle() { call("id") { +pluginId.quotified } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt index 8611325d793..5350cf17a9c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleIR.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryIR @@ -22,7 +23,7 @@ data class RawGradleIR( override fun GradlePrinter.renderGradle() = renderer() } -fun rawIR(ir: String) = RawGradleIR { +ir } +fun rawIR(@NonNls ir: String) = RawGradleIR { +ir } fun rawIR(ir: GradlePrinter.() -> String) = RawGradleIR { +ir() } fun MutableList.addRawIR(ir: GradlePrinter.() -> String) { @@ -30,7 +31,7 @@ fun MutableList.addRawIR(ir: GradlePrinter.() -> String) { } -class CreateGradleValueIR(val name: String, val body: GradleIR) : GradleIR { +class CreateGradleValueIR(@NonNls val name: String, val body: GradleIR) : GradleIR { override fun GradlePrinter.renderGradle() { when (dsl) { GradlePrinter.GradleDsl.KOTLIN -> { @@ -51,7 +52,7 @@ class CreateGradleValueIR(val name: String, val body: GradleIR) : GradleIR { } data class GradleCallIr( - val name: String, + @NonNls val name: String, val parameters: List = emptyList(), val isConstructorCall: Boolean = false, ) : GradleIR { @@ -70,7 +71,7 @@ data class GradleCallIr( } data class GradleNewInstanceCall( - val name: String, + @NonNls val name: String, val parameters: List = emptyList() ) : GradleIR { override fun GradlePrinter.renderGradle() { @@ -85,7 +86,7 @@ data class GradleNewInstanceCall( data class GradleSectionIR( - val name: String, + @NonNls val name: String, val body: BodyIR ) : GradleIR, FreeIR { constructor(name: String, bodyBuilder: MutableList.() -> Unit) : this( @@ -101,7 +102,7 @@ data class GradleSectionIR( } data class GradleAssignmentIR( - val target: String, + @NonNls val target: String, val assignee: BuildSystemIR ) : GradleIR, FreeIR { override fun GradlePrinter.renderGradle() { @@ -111,7 +112,7 @@ data class GradleAssignmentIR( } data class GradleStringConstIR( - val text: String + @NonNls val text: String ) : GradleIR { override fun GradlePrinter.renderGradle() { +text.quotified @@ -119,9 +120,9 @@ data class GradleStringConstIR( } data class CompilationAccessIr( - val targetName: String, - val compilationName: String, - val property: String? + @NonNls val targetName: String, + @NonNls val compilationName: String, + @NonNls val property: String? ) : GradleIR { override fun GradlePrinter.renderGradle() { when (dsl) { @@ -132,7 +133,7 @@ data class CompilationAccessIr( } } -data class GradleDynamicPropertyAccessIR(val qualifier: BuildSystemIR, val propertyName: String) : GradleIR { +data class GradleDynamicPropertyAccessIR(val qualifier: BuildSystemIR, @NonNls val propertyName: String) : GradleIR { override fun GradlePrinter.renderGradle() { qualifier.render(this) when (dsl) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleTaskIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleTaskIR.kt index 2ceb4f7a3a6..b191226da54 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleTaskIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/GradleTaskIR.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.FreeIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render @@ -26,7 +27,7 @@ data class GradleByNameTaskAccessIR( } data class GradleByClassTasksAccessIR( - val taskClass: String + @NonNls val taskClass: String ) : GradleTaskAccessIR { override fun GradlePrinter.renderGradle() { when (dsl) { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt index 91d1fde44ad..47b9b89a18a 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/gradle/SettingsGradleFileIR.kt @@ -6,11 +6,12 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle import kotlinx.collections.immutable.PersistentList +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter data class SettingsGradleFileIR( - val projectName: String, + @NonNls val projectName: String, val subProjects: List, override val irs: PersistentList ) : FileIR, GradleIR { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt index 5fcbfd972f8..5e81fa18596 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/maven/MavenIR.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.maven +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.RepositoryWrapper import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.BuildFilePrinter @@ -31,8 +32,8 @@ data class PluginRepositoryMavenIR( } data class MavenPropertyIR( - val name: String, - val value: String + @NonNls val name: String, + @NonNls val value: String ) : MavenIR { override fun MavenPrinter.renderMaven() { singleLineNode(name) { +value } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/tasks.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/tasks.kt index 05f3f664bd0..2b100776804 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/tasks.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/ir/buildsystem/tasks.kt @@ -5,10 +5,11 @@ package org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.* -fun runTaskIrs(mainClass: String, classPath: BuildSystemIR? = null) = buildList { +fun runTaskIrs(@NonNls mainClass: String, classPath: BuildSystemIR? = null) = buildList { +ApplicationPluginIR(mainClass) +GradleSectionIR("application", buildBody { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/library/LibraryDescriptor.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/library/LibraryDescriptor.kt index 321c0454641..50f3f72f25f 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/library/LibraryDescriptor.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/library/LibraryDescriptor.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.library +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version @@ -7,12 +8,12 @@ sealed class LibraryArtifact data class MavenArtifact( val repository: Repository, - val groupId: String, - val artifactId: String + @NonNls val groupId: String, + @NonNls val artifactId: String ) : LibraryArtifact() data class NpmArtifact( - val name: String + @NonNls val name: String ) : LibraryArtifact() diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt index a3ff1b823c2..e720d30cdfa 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting @@ -41,8 +43,6 @@ interface AndroidModuleConfigurator : ModuleConfigurator, override val moduleType: ModuleType get() = ModuleType.android - override val greyText: String - get() = "Requires Android SDK" override fun getPluginSettings(): List>> = listOf(AndroidPlugin::androidSdkPath.reference) @@ -128,6 +128,8 @@ object AndroidTargetConfigurator : TargetConfigurator, override val moduleSubType = ModuleSubType.android override val moduleType = ModuleType.android + override val text = KotlinNewProjectWizardBundle.message("module.configurator.android") + override fun Reader.createAndroidPlugin(module: Module): AndroidGradlePlugin = withSettingsOf(module) { androidPlugin.reference.settingValue } @@ -150,10 +152,19 @@ object AndroidTargetConfigurator : TargetConfigurator, ) } - val androidPlugin by enumSetting("Android Library", neededAtPhase = GenerationPhase.PROJECT_GENERATION) + val androidPlugin by enumSetting( + KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin"), + neededAtPhase = GenerationPhase.PROJECT_GENERATION + ) } -enum class AndroidGradlePlugin(override val text: String, val pluginName: String) : DisplayableSettingItem { - APPLICATION("Android Application", "com.android.application"), - LIBRARY("Android Library", "com.android.library") +enum class AndroidGradlePlugin(override val text: String, @NonNls val pluginName: String) : DisplayableSettingItem { + APPLICATION( + KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin.application"), + "com.android.application" + ), + LIBRARY( + KotlinNewProjectWizardBundle.message("module.configurator.android.setting.android.plugin.library"), + "com.android.library" + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt index a3c3233cd28..990241d49be 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt @@ -1,7 +1,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators - +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact @@ -19,9 +20,11 @@ object AndroidSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, AndroidModuleConfigurator { override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid + @NonNls override val id = "android" + @NonNls override val suggestedModuleName = "android" - override val text = "Android" + override val text = KotlinNewProjectWizardBundle.message("module.configurator.android") override val requiresRootBuildFile: Boolean = true diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt index 3caabc572c7..80a4c7cb491 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/IOSModuleConfigurator.kt @@ -5,6 +5,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModulesToIrConversionData @@ -14,10 +16,16 @@ import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplateDescriptor import java.nio.file.Path object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, ModuleConfiguratorSettings() { + @NonNls override val id = "IOS Module" + + @NonNls override val suggestedModuleName = "ios" + override val moduleKind: ModuleKind = ModuleKind.singleplatformJvm - override val greyText = "Requires Apple Xcode" + override val greyText = KotlinNewProjectWizardBundle.message("module.configurator.ios.requires.xcode") + override val text = KotlinNewProjectWizardBundle.message("module.configurator.ios") + override val needCreateBuildFile: Boolean = false override val requiresRootBuildFile: Boolean = true @@ -74,6 +82,7 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, M .asPath() ) + @NonNls private const val DEFAULT_APP_NAME = "appName" val dependentModule by valueSetting( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt index 9dfb50f0034..c0fdc5dff1f 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR @@ -22,9 +24,13 @@ interface JSConfigurator : ModuleConfiguratorWithModuleType { object JsSingleplatformModuleConfigurator : JSConfigurator, ModuleConfiguratorWithTests, SinglePlatformModuleConfigurator { override val moduleKind = ModuleKind.singleplatformJs + + @NonNls override val suggestedModuleName = "js" + + @NonNls override val id = "jsSinglepaltform" - override val text = "JS for Browser" + override val text = KotlinNewProjectWizardBundle.message("module.configurator.js") override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS 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 b94b727b4aa..be3ae21fbf8 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 @@ -199,8 +199,6 @@ fun Module.getConfiguratorSettings() = buildList> { interface ModuleConfigurator : DisplayableSettingItem, EntitiesOwnerDescriptor { val moduleKind: ModuleKind - override val text: String - get() = id val suggestedModuleName: String? get() = null val canContainSubModules: Boolean get() = false diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt index 9193ed5ec2c..45597870f65 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSettingReference @@ -24,7 +26,7 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind interface ModuleConfiguratorWithTests : ModuleConfiguratorWithSettings { companion object : ModuleConfiguratorSettings() { val testFramework by enumSetting( - "Test Framework", + KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework"), neededAtPhase = GenerationPhase.PROJECT_GENERATION ) { filter = filter@{ reference, kotlinTestFramework -> @@ -67,9 +69,29 @@ enum class KotlinTestFramework( val moduleType: ModuleType, val dependencyNames: List ) : DisplayableSettingItem { - JUNIT4("JUnit 4 Test Framework", ModuleType.jvm, listOf("test-junit")), - JUNIT5("JUnit 5 Test Framework", ModuleType.jvm, listOf("test-junit5")), - TEST_NG("Test NG Test Framework", ModuleType.jvm, listOf("test-testng")), - JS("JavaScript Test Framework", ModuleType.js, listOf("test-js")), - COMMON("Common Test Framework", ModuleType.common, listOf("test-common", "test-annotations-common")), + JUNIT4( + KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.junit4"), + ModuleType.jvm, + listOf("test-junit") + ), + JUNIT5( + KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.junit5"), + ModuleType.jvm, + listOf("test-junit5") + ), + TEST_NG( + KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.test.ng"), + ModuleType.jvm, + listOf("test-testng") + ), + JS( + KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.js"), + ModuleType.js, + listOf("test-js") + ), + COMMON( + KotlinNewProjectWizardBundle.message("module.configurator.tests.setting.framework.common"), + ModuleType.common, + listOf("test-common", "test-annotations-common") + ) } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index 0a883bbcdb9..e92f0422075 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -1,6 +1,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators import kotlinx.collections.immutable.toPersistentList +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList @@ -20,6 +22,8 @@ interface NativeTargetConfigurator : TargetConfigurator class RealNativeTargetConfigurator private constructor( override val moduleSubType: ModuleSubType ) : NativeTargetConfigurator, SimpleTargetConfigurator { + override val text: String = moduleSubType.name.capitalize() + override fun createInnerTargetIrs(reader: Reader, module: Module): List = if (moduleSubType.isIOS) { listOf( GradleSectionIR("binaries") { @@ -43,8 +47,11 @@ class RealNativeTargetConfigurator private constructor( object NativeForCurrentSystemTarget : NativeTargetConfigurator, SingleCoexistenceTargetConfigurator { override val moduleType = ModuleType.native + + @NonNls override val id = "nativeForCurrentSystem" - override val text = "Your system" + + override val text = KotlinNewProjectWizardBundle.message("module.configurator.native.for.current.system") override fun Reader.createTargetIrs( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurationGroups.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurationGroups.kt index 18d4b6f95b6..c038f8c9f90 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurationGroups.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurationGroups.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType @@ -15,7 +16,7 @@ object TargetConfigurationGroups { object NATIVE { val LINUX = FinalTargetConfiguratorGroup( - "Linux", + KotlinNewProjectWizardBundle.message("module.configuration.group.linux"), ModuleType.native, listOf( RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.linuxX64), @@ -26,7 +27,7 @@ object TargetConfigurationGroups { ) val WINDOWS = FinalTargetConfiguratorGroup( - "Windows (MinGW)", + KotlinNewProjectWizardBundle.message("module.configuration.group.windows.mingw"), ModuleType.native, listOf( RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.mingwX64), @@ -35,7 +36,7 @@ object TargetConfigurationGroups { ) val MAC = FinalTargetConfiguratorGroup( - "macOS", + KotlinNewProjectWizardBundle.message("module.configuration.group.macos"), ModuleType.native, listOf( RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.macosX64) @@ -43,7 +44,7 @@ object TargetConfigurationGroups { ) val IOS = FinalTargetConfiguratorGroup( - "iOS", + KotlinNewProjectWizardBundle.message("module.configuration.group.ios"), ModuleType.native, listOf( RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.iosArm32), @@ -53,7 +54,7 @@ object TargetConfigurationGroups { ) val ANDROID_NATIVE = FinalTargetConfiguratorGroup( - "Android Native", + KotlinNewProjectWizardBundle.message("module.configuration.group.android.native"), ModuleType.native, listOf( RealNativeTargetConfigurator.configuratorsByModuleType.getValue(ModuleSubType.androidNativeArm64), diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt index 5b85443c422..ea5c78d25bc 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt @@ -1,6 +1,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators import kotlinx.collections.immutable.toPersistentList +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList @@ -41,7 +43,6 @@ interface SimpleTargetConfigurator : TargetConfigurator { val moduleSubType: ModuleSubType override val moduleType get() = moduleSubType.moduleType override val id get() = "${moduleSubType.name}Target" - override val text get() = moduleSubType.name.capitalize() override val suggestedModuleName: String? get() = moduleSubType.name @@ -66,10 +67,15 @@ private fun Module.createTargetAccessIr(moduleSubType: ModuleSubType) = interface JsTargetConfigurator : JSConfigurator, TargetConfigurator, SingleCoexistenceTargetConfigurator object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWithTests { + @NonNls override val id = "jsBrowser" - override val text = "Browser" + + @NonNls override val suggestedModuleName = "browser" + override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.browser") + + override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JS override fun Reader.createTargetIrs( @@ -87,10 +93,14 @@ object JsBrowserTargetConfigurator : JsTargetConfigurator, ModuleConfiguratorWit } object JsNodeTargetConfigurator : JsTargetConfigurator { + @NonNls override val id = "jsNode" - override val text = "Node.js" + + @NonNls override val suggestedModuleName = "nodeJs" + override val text = KotlinNewProjectWizardBundle.message("module.configurator.js.node") + override fun Reader.createTargetIrs( module: Module @@ -108,6 +118,7 @@ object JsNodeTargetConfigurator : JsTargetConfigurator { object CommonTargetConfigurator : TargetConfiguratorWithTests(), SimpleTargetConfigurator, SingleCoexistenceTargetConfigurator { override val moduleSubType = ModuleSubType.common + override val text: String = KotlinNewProjectWizardBundle.message("module.configurator.common") override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.COMMON } @@ -117,8 +128,7 @@ object JvmTargetConfigurator : JvmModuleConfigurator, SimpleTargetConfigurator { override val moduleSubType = ModuleSubType.jvm - override val text: String - get() = "JVM" + override val text: String = KotlinNewProjectWizardBundle.message("module.configurator.jvm") override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4 @@ -149,7 +159,10 @@ object JvmTargetConfigurator : JvmModuleConfigurator, Settings.javaSupport object Settings : ModuleConfiguratorSettings() { - val javaSupport by booleanSetting("Java language support", GenerationPhase.PROJECT_GENERATION) { + val javaSupport by booleanSetting( + KotlinNewProjectWizardBundle.message("module.configurator.jvm.setting.java.support"), + GenerationPhase.PROJECT_GENERATION + ) { defaultValue = value(false) } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfiguratorGroup.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfiguratorGroup.kt index fef654aede9..7e3dbde0b40 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfiguratorGroup.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfiguratorGroup.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.annotations.Nls import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem @@ -9,22 +10,22 @@ interface DisplayableTargetConfiguratorGroup : TargetConfiguratorGroup, Displaya val moduleType: ModuleType } -interface TargetConfiguratorGroupWithSubItems: TargetConfiguratorGroup { +interface TargetConfiguratorGroupWithSubItems : TargetConfiguratorGroup { val subItems: List } data class StepTargetConfiguratorGroup( - override val text: String, + @Nls override val text: String, override val moduleType: ModuleType, override val subItems: List -): DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems +) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems data class FinalTargetConfiguratorGroup( - override val text: String, + @Nls override val text: String, override val moduleType: ModuleType, override val subItems: List -): DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems +) : DisplayableTargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems data class FirstStepTargetConfiguratorGroup( override val subItems: List -): TargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems \ No newline at end of file +) : TargetConfiguratorGroup, TargetConfiguratorGroupWithSubItems \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt index 19373792acd..82cb8c9b4cd 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt @@ -1,6 +1,8 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.ModuleConfiguratorSetting @@ -20,7 +22,10 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind interface JvmModuleConfigurator : ModuleConfiguratorWithTests { companion object : ModuleConfiguratorSettings() { - val targetJvmVersion by enumSetting("Target JVM Version", GenerationPhase.PROJECT_GENERATION) { + val targetJvmVersion by enumSetting( + KotlinNewProjectWizardBundle.message("module.configurator.jvm.setting.target.jvm.version"), + GenerationPhase.PROJECT_GENERATION + ) { defaultValue = value(TargetJvmVersion.JVM_1_8) } } @@ -31,7 +36,7 @@ interface JvmModuleConfigurator : ModuleConfiguratorWithTests { } } -enum class TargetJvmVersion(val value: String) : DisplayableSettingItem { +enum class TargetJvmVersion(@NonNls val value: String) : DisplayableSettingItem { JVM_1_6("1.6"), JVM_1_8("1.8"), JVM_9("9"), @@ -54,9 +59,13 @@ val ModuleConfigurator.moduleType: ModuleType? object MppModuleConfigurator : ModuleConfigurator { override val moduleKind = ModuleKind.multiplatform + + @NonNls override val suggestedModuleName = "shared" + + @NonNls override val id = "multiplatform" - override val text = "Multiplatform" + override val text = KotlinNewProjectWizardBundle.message("module.configurator.mpp") override val canContainSubModules = true override fun createKotlinPluginIR(configurationData: ModulesToIrConversionData, module: Module): KotlinBuildSystemPluginIR? = @@ -76,8 +85,10 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator, ModuleConfiguratorWithModuleType { override val moduleType get() = ModuleType.jvm override val moduleKind: ModuleKind get() = ModuleKind.singleplatformJvm - override val suggestedModuleName = "jvm" - override val id = "JVM Module" + @NonNls override val suggestedModuleName = "jvm" + @NonNls override val id = "JVM Module" + override val text = KotlinNewProjectWizardBundle.message("module.configurator.jvm") + override fun defaultTestFramework(): KotlinTestFramework = KotlinTestFramework.JUNIT4 @@ -120,9 +131,6 @@ object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator, } - - - val ModuleType.defaultTarget get() = when (this) { ModuleType.jvm -> JvmTargetConfigurator diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt index 2eb96e5ca96..9258fe5601c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/AndroidPlugin.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.Plugin import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS @@ -18,7 +19,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules class AndroidPlugin(context: Context) : Plugin(context) { val androidSdkPath by pathSetting( - "Android SDK Path", + KotlinNewProjectWizardBundle.message("plugin.android.setting.sdk"), neededAtPhase = GenerationPhase.PROJECT_GENERATION ) { isSavable = true diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt index 4d7e46bc474..7f354944456 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt @@ -1,7 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins - +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference @@ -13,26 +13,41 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import java.nio.file.Paths class StructurePlugin(context: Context) : Plugin(context) { - val projectPath by pathSetting("Location", GenerationPhase.FIRST_STEP) { + val projectPath by pathSetting( + KotlinNewProjectWizardBundle.message("plugin.structure.setting.location"), + GenerationPhase.FIRST_STEP + ) { defaultValue = value(Paths.get(".")) } - val name by stringSetting("Name", GenerationPhase.FIRST_STEP) { + val name by stringSetting( + KotlinNewProjectWizardBundle.message("plugin.structure.setting.name"), + GenerationPhase.FIRST_STEP + ) { shouldNotBeBlank() - validate(StringValidators.shouldBeValidIdentifier("Name", Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES)) + validate(StringValidators.shouldBeValidIdentifier(title, Module.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES)) } - val groupId by stringSetting("Group ID", GenerationPhase.FIRST_STEP) { + val groupId by stringSetting( + KotlinNewProjectWizardBundle.message("plugin.structure.setting.group.id"), + GenerationPhase.FIRST_STEP + ) { isSavable = true shouldNotBeBlank() - validate(StringValidators.shouldBeValidIdentifier("Group ID", setOf('.', '_'))) + validate(StringValidators.shouldBeValidIdentifier(title, setOf('.', '_'))) } - val artifactId by stringSetting("Artifact ID", GenerationPhase.FIRST_STEP) { + val artifactId by stringSetting( + KotlinNewProjectWizardBundle.message("plugin.structure.setting.artifact.id"), + GenerationPhase.FIRST_STEP + ) { shouldNotBeBlank() - validate(StringValidators.shouldBeValidIdentifier("Artifact ID", setOf('_'))) + validate(StringValidators.shouldBeValidIdentifier(title, setOf('_'))) } - val version by stringSetting("Version", GenerationPhase.FIRST_STEP) { + val version by stringSetting( + KotlinNewProjectWizardBundle.message("plugin.structure.setting.version"), + GenerationPhase.FIRST_STEP + ) { shouldNotBeBlank() - validate(StringValidators.shouldBeValidIdentifier("Version", setOf('_', '-', '.'))) + validate(StringValidators.shouldBeValidIdentifier(title, setOf('_', '-', '.'))) defaultValue = value("1.0-SNAPSHOT") } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt index 802ccafaf98..d7715767278 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt @@ -1,6 +1,9 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem +import org.jetbrains.annotations.Nls +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.reference @@ -22,7 +25,10 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles abstract class BuildSystemPlugin(context: Context) : Plugin(context) { - val type by enumSetting("Build System", GenerationPhase.FIRST_STEP) { + val type by enumSetting( + KotlinNewProjectWizardBundle.message("plugin.buildsystem.setting.type"), + GenerationPhase.FIRST_STEP + ) { isSavable = true filter = { _, type -> val service = service() @@ -33,8 +39,15 @@ abstract class BuildSystemPlugin(context: Context) : Plugin(context) { if (!buildSystemType.isGradle && KotlinPlugin::projectKind.reference.notRequiredSettingValue != ProjectKind.Singleplatform ) { - val projectKind = KotlinPlugin::projectKind.reference.notRequiredSettingValue?.text?.capitalize() ?: "Project" - ValidationResult.ValidationError("$projectKind cannot be generated using ${buildSystemType.text}") + val projectKind = KotlinPlugin::projectKind.reference.notRequiredSettingValue?.text?.capitalize() + ?: KotlinNewProjectWizardBundle.message("project") + ValidationResult.ValidationError( + KotlinNewProjectWizardBundle.message( + "plugin.buildsystem.setting.type.error.wrong.project.kind", + projectKind, + buildSystemType.text + ) + ) } else ValidationResult.OK } } @@ -106,14 +119,14 @@ data class BuildSystemData( data class BuildFileData( val createPrinter: () -> BuildFilePrinter, - val buildFileName: String + @NonNls val buildFileName: String ) -enum class BuildSystemType(override val text: String) : DisplayableSettingItem { - GradleKotlinDsl("Gradle Kotlin"), - GradleGroovyDsl("Gradle Groovy"), - Jps("IntelliJ"), - Maven("Maven") +enum class BuildSystemType(@Nls override val text: String) : DisplayableSettingItem { + GradleKotlinDsl(KotlinNewProjectWizardBundle.message("buildsystem.type.gradle.kotlin")), + GradleGroovyDsl(KotlinNewProjectWizardBundle.message("buildsystem.type.gradle.groovy")), + Jps(KotlinNewProjectWizardBundle.message("buildsystem.type.intellij")), + Maven(KotlinNewProjectWizardBundle.message("buildsystem.type.maven")) ; diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/JpsPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/JpsPlugin.kt index 4881f7356ff..52da0aa8828 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/JpsPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/JpsPlugin.kt @@ -3,8 +3,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem import org.jetbrains.kotlin.tools.projectWizard.core.Context class JpsPlugin(context: Context) : BuildSystemPlugin(context) { - override val title: String = "IDEA" - val addBuildSystemData by addBuildSystemData( BuildSystemData( type = BuildSystemType.Jps, diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt index 4e206f98d22..71a91e076ea 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/MavenPlugin.kt @@ -13,8 +13,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.MavenPrinter import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.updateBuildFiles class MavenPlugin(context: Context) : BuildSystemPlugin(context) { - override val title: String = "Maven" - private val isMaven = checker { BuildSystemPlugin::type.settingValue == BuildSystemType.Maven } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt index 214136a007d..8087e49a01d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GroovyDslPlugin.kt @@ -7,8 +7,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter class GroovyDslPlugin(context: Context) : GradlePlugin(context) { - override val title: String = "Gradle (Groovy DSL)" - val addBuildSystemData by addBuildSystemData( BuildSystemData( type = BuildSystemType.GradleGroovyDsl, diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt index 20cfe8b1d33..e1e7d7d8415 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/KotlinDslPlugin.kt @@ -7,8 +7,6 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemT import org.jetbrains.kotlin.tools.projectWizard.plugins.printer.GradlePrinter class KotlinDslPlugin(context: Context) : GradlePlugin(context) { - override val title: String = "Gradle (Kotlin DSL)" - val addBuildSystemData by addBuildSystemData( BuildSystemData( type = BuildSystemType.GradleKotlinDsl, diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt index b6982c2835f..0f2c7f59736 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.Versions import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult @@ -26,7 +27,7 @@ class KotlinPlugin(context: Context) : Plugin(context) { val version by property(Versions.KOTLIN) val initKotlinVersions by pipelineTask(GenerationPhase.PREPARE_GENERATION) { - title = "Downloading list of Kotlin versions" + title = KotlinNewProjectWizardBundle.message("plugin.kotlin.downloading.kotlin.versions") withAction { val version = service().getKotlinVersion() @@ -34,18 +35,29 @@ class KotlinPlugin(context: Context) : Plugin(context) { } } - val projectKind by enumSetting("Project Kind", GenerationPhase.FIRST_STEP) + val projectKind by enumSetting( + KotlinNewProjectWizardBundle.message("plugin.kotlin.setting.project.kind"), + GenerationPhase.FIRST_STEP + ) private fun List.findDuplicatesByName() = groupingBy { it.name }.eachCount().filter { it.value > 1 } - val modules by listSetting("Modules", GenerationPhase.SECOND_STEP, Module.parser) { + val modules by listSetting( + KotlinNewProjectWizardBundle.message("plugin.kotlin.setting.modules"), + GenerationPhase.SECOND_STEP, + Module.parser + ) { validate { value -> val allModules = value.withAllSubModules() val duplicatedModules = allModules.findDuplicatesByName() if (duplicatedModules.isEmpty()) ValidationResult.OK else ValidationResult.ValidationError( - "There are ${duplicatedModules.values.first()} modules with name `${duplicatedModules.keys.first()}`" + KotlinNewProjectWizardBundle.message( + "plugin.kotlin.setting.modules.error.duplicated.modules", + duplicatedModules.values.first(), + duplicatedModules.keys.first() + ) ) } @@ -54,7 +66,11 @@ class KotlinPlugin(context: Context) : Plugin(context) { val duplicatedModules = module.subModules.findDuplicatesByName() if (duplicatedModules.isEmpty()) ValidationResult.OK else ValidationResult.ValidationError( - "There are ${duplicatedModules.values.first()} targets for module `${module.name}` with name `${duplicatedModules.keys.first()}`" + KotlinNewProjectWizardBundle.message( + "plugin.kotlin.setting.modules.error.duplicated.targets", + duplicatedModules.values.first(), + duplicatedModules.keys.first() + ) ) }.fold() } @@ -119,9 +135,6 @@ class KotlinPlugin(context: Context) : Plugin(context) { companion object { - // TODO update default versions - private val DEFAULT_VERSION = Version.fromString("1.3.61") - private val moduleDependenciesValidator = settingValidator> { modules -> val allModules = modules.withAllSubModules(includeSourcesets = true).toSet() val allModulePaths = allModules.map(Module::path).toSet() @@ -131,7 +144,13 @@ class KotlinPlugin(context: Context) : Plugin(context) { is ModuleReference.ByPath -> dependency.path in allModulePaths is ModuleReference.ByModule -> dependency.module in allModules } - ValidationResult.create(isValidModule) { "Invalid module dependency $dependency of module ${module.path}" } + ValidationResult.create(isValidModule) { + KotlinNewProjectWizardBundle.message( + "plugin.kotlin.setting.modules.error.duplicated.modules", + dependency, + module.path + ) + } } }.fold() } @@ -139,10 +158,10 @@ class KotlinPlugin(context: Context) : Plugin(context) { } enum class ProjectKind(override val text: String) : DisplayableSettingItem { - Singleplatform("Singleplatform project"), - Multiplatform("Multiplatform project"), - Android("Android project"), - Js("Kotlin/JS project") + 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")) } fun List.withAllSubModules(includeSourcesets: Boolean = false): List = buildList { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt index 4e7966f10e3..7f0ad289997 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModuleType.kt @@ -1,17 +1,18 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType import java.util.* //TODO maybe split into interfaces like it made with module configurators @Suppress("EnumEntryName") enum class ModuleType(val projectTypeName: String) { - jvm("Kotlin/JVM"), - js("Kotlin/JS"), - native("Kotlin/Native"), - common("Common"), - android("Android"), -// ios("iOS") + jvm(KotlinNewProjectWizardBundle.message("module.type.jvm")), + js(KotlinNewProjectWizardBundle.message("module.type.js")), + native(KotlinNewProjectWizardBundle.message("module.type.native")), + common(KotlinNewProjectWizardBundle.message("module.type.common")), + android(KotlinNewProjectWizardBundle.message("module.type.android")), +// ios(KotlinNewProjectWizardBundle.message("module.type.ios")) ; diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/BuildFilePrinter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/BuildFilePrinter.kt index 50ba21060ee..f4ab8c09345 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/BuildFilePrinter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/BuildFilePrinter.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.printer +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render @@ -25,7 +26,7 @@ abstract class BuildFilePrinter { builder.append(this) } - operator fun String.unaryPlus() { + operator fun @receiver:NonNls String.unaryPlus() { builder.append(this) } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/GradlePrinter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/GradlePrinter.kt index 5626e047135..9ad98726c89 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/GradlePrinter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/GradlePrinter.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.printer +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFilePrinter() { @@ -26,7 +27,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil GradleDsl.GROOVY -> "'$this'" } - fun call(name: String, forceBrackets: Boolean = false, body: () -> Unit) { + fun call(@NonNls name: String, forceBrackets: Boolean = false, body: () -> Unit) { +name when { dsl == GradleDsl.KOTLIN || forceBrackets -> { @@ -39,7 +40,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil } } - fun sectionCall(name: String, needIndent: Boolean = false, body: () -> Unit) { + fun sectionCall(@NonNls name: String, needIndent: Boolean = false, body: () -> Unit) { +name +" " inBrackets { @@ -49,7 +50,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil } fun sectionCall( - name: String, + @NonNls name: String, irs: List, renderEmpty: Boolean = false ) { @@ -61,7 +62,7 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil } } - fun assignmentOrCall(target: String, assignee: () -> Unit) = when (dsl) { + fun assignmentOrCall(@NonNls target: String, assignee: () -> Unit) = when (dsl) { GradleDsl.KOTLIN -> { +"$target = " assignee() @@ -69,13 +70,13 @@ class GradlePrinter(val dsl: GradleDsl, override val indent: Int = 4) : BuildFil GradleDsl.GROOVY -> call(target, forceBrackets = false, body = assignee) } - fun assignment(target: String, assignee: () -> Unit) { + fun assignment(@NonNls target: String, assignee: () -> Unit) { +"$target = " assignee() } - inline fun getting(name: String, prefix: String?, body: () -> Unit = {}) { + inline fun getting(@NonNls name: String, @NonNls prefix: String?, body: () -> Unit = {}) { when (dsl) { GradleDsl.GROOVY -> { prefix?.let { +it; +"." } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/MavenPrinter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/MavenPrinter.kt index 3d811746198..332519d0ac0 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/MavenPrinter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/printer/MavenPrinter.kt @@ -1,12 +1,13 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.printer +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.render class MavenPrinter(override val indent: Int = 4) : BuildFilePrinter() { fun node( - name: String, + @NonNls name: String, attributes: List> = emptyList(), singleLine: Boolean = false, body: () -> Unit @@ -44,7 +45,7 @@ MavenPrinter(override val indent: Int = 4) : BuildFilePrinter() { get() = "\"$this\"" fun singleLineNode( - name: String, + @NonNls name: String, attributes: List> = emptyList(), body: () -> Unit ) = node(name, attributes, singleLine = true, body = body) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt index 5fec049e4e3..b63173c3a3b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/projectTemplates/ProjectTemplate.kt @@ -1,5 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.projectTemplates +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.buildList import org.jetbrains.kotlin.tools.projectWizard.core.entity.settings.* import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.* @@ -133,8 +135,10 @@ private fun ModuleType.createDefaultTarget( ) = MultiplatformTargetModule(name, defaultTarget, createDefaultSourcesets()) object EmptySingleplatformProjectTemplate : ProjectTemplate() { - override val title = "Backend Application" - override val description = "Create a backend application with Kotlin/JVM." + override val title = KotlinNewProjectWizardBundle.message("project.template.empty.singleplatform.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.empty.singleplatform.description") + + @NonNls override val suggestedProjectName = "myKotlinJvmProject" override val projectKind = ProjectKind.Singleplatform @@ -147,8 +151,10 @@ object EmptySingleplatformProjectTemplate : ProjectTemplate() { } object EmptyMultiplatformProjectTemplate : ProjectTemplate() { - override val title = "Multiplatform Application" - override val description = "Create applications for different platforms that support sharing common code." + override val title = KotlinNewProjectWizardBundle.message("project.template.empty.mpp.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.empty.mpp.description") + + @NonNls override val suggestedProjectName = "myKotlinMultiplatformProject" override val projectKind = ProjectKind.Multiplatform @@ -161,8 +167,10 @@ object EmptyMultiplatformProjectTemplate : ProjectTemplate() { } object JvmConsoleApplication : ProjectTemplate() { - override val title = "Console Application" - override val description = "Create a console application with Kotlin/JVM. Use it for prototyping or testing purposes." + override val title = KotlinNewProjectWizardBundle.message("project.template.empty.jvm.console.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.empty.jvm.console.description") + + @NonNls override val suggestedProjectName = "myConsoleApplication" override val projectKind = ProjectKind.Singleplatform @@ -180,8 +188,10 @@ object JvmConsoleApplication : ProjectTemplate() { } object MultiplatformLibrary : ProjectTemplate() { - override val title = "Multiplatform Library" - override val description = "Create a library for sharing common code among different platforms." + override val title = KotlinNewProjectWizardBundle.message("project.template.mpp.lib.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.mpp.lib.description") + + @NonNls override val suggestedProjectName = "myMultiplatformLibrary" override val projectKind = ProjectKind.Multiplatform @@ -202,9 +212,10 @@ object MultiplatformLibrary : ProjectTemplate() { } object JvmServerJsClient : ProjectTemplate() { - override val title: String = "Full-Stack Web Application" - override val description: String = "" + - "Create a fully-functional web application using Kotlin/JS for the frontend and Kotlin/JVM for the backend." + override val title: String = KotlinNewProjectWizardBundle.message("project.template.full.stack.title") + override val description: String = KotlinNewProjectWizardBundle.message("project.template.full.stack.description") + + @NonNls override val suggestedProjectName: String = "myFullStackApplication" override val projectKind: ProjectKind = ProjectKind.Multiplatform override val setsPluginSettings: List> = listOf( @@ -227,9 +238,10 @@ object JvmServerJsClient : ProjectTemplate() { } object NativeConsoleApplication : ProjectTemplate() { - override val title = "Native Application" - override val description = - "Create an application with Kotlin/Native that works as a standalone application under a specific platform." + override val title = KotlinNewProjectWizardBundle.message("project.template.native.console.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.native.console.description") + + @NonNls override val suggestedProjectName = "myNativeConsoleApp" override val projectKind = ProjectKind.Multiplatform @@ -252,8 +264,10 @@ object NativeConsoleApplication : ProjectTemplate() { } object JsBrowserApplication : ProjectTemplate() { - override val title = "Frontend Application" - override val description = "Create a frontend application with Kotlin/JS if you already have a backend." + override val title = KotlinNewProjectWizardBundle.message("project.template.frontend.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.frontend.description") + + @NonNls override val suggestedProjectName = "myKotlinJsApplication" override val projectKind = ProjectKind.Js @@ -274,10 +288,10 @@ object JsBrowserApplication : ProjectTemplate() { } object MPPMobileApplication : ProjectTemplate() { - override val title = "Multiplatform Mobile Application" + override val title = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.description") - override val description = - "Create mobile applications for iOS and Android with Kotlin Multiplatform Mobile, which supports sharing common code between platforms." + @NonNls override val suggestedProjectName = "myIOSApplication" override val projectKind = ProjectKind.Multiplatform @@ -325,8 +339,10 @@ object MPPMobileApplication : ProjectTemplate() { } object MultiplatformMobileLibrary : ProjectTemplate() { - override val title = "Multiplatform Mobile Library" - override val description = "Create a library that supports sharing code between iOS and Android." + override val title = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.lib.title") + override val description = KotlinNewProjectWizardBundle.message("project.template.mpp.mobile.lib.description") + + @NonNls override val suggestedProjectName = "myMppMobileLibrary" override val projectKind = ProjectKind.Multiplatform diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/DisplayableSettingItem.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/DisplayableSettingItem.kt index fa9bd143574..8a4ea0773a0 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/DisplayableSettingItem.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/DisplayableSettingItem.kt @@ -1,7 +1,12 @@ package org.jetbrains.kotlin.tools.projectWizard.settings +import org.jetbrains.annotations.Nls + interface DisplayableSettingItem { + @get:Nls val text: String + + @get:Nls val greyText: String? get() = null } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt index 2388727d19e..04d3a8d4042 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt @@ -1,9 +1,11 @@ package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem import kotlinx.collections.immutable.PersistentList +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.GeneratedIdentificator import org.jetbrains.kotlin.tools.projectWizard.Identificator import org.jetbrains.kotlin.tools.projectWizard.IdentificatorOwner +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.core.entity.* @@ -29,7 +31,7 @@ enum class ModuleKind : DisplayableSettingItem { // TODO separate to classes class Module( - var name: String, + @NonNls var name: String, val configurator: ModuleConfigurator, var template: Template?, val sourcesets: List, @@ -62,12 +64,12 @@ class Module( override val text: String get() = name override val greyText: String? get() = when { - kind == ModuleKind.target -> "${configurator.text} Target" - configurator == MppModuleConfigurator -> "MPP Module" - configurator == AndroidSinglePlatformModuleConfigurator -> "Android Module" - configurator == IOSSinglePlatformModuleConfigurator -> "IOS Module" - configurator == JsSingleplatformModuleConfigurator -> "JS Module" - else -> "Module" + kind == ModuleKind.target -> configurator.text + KotlinNewProjectWizardBundle.message("module.kind.target") + configurator == MppModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.mpp.module") + configurator == AndroidSinglePlatformModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.android.module") + configurator == IOSSinglePlatformModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.ios.module") + configurator == JsSingleplatformModuleConfigurator -> KotlinNewProjectWizardBundle.message("module.kind.js.module") + else -> KotlinNewProjectWizardBundle.message("module.kind.module") } fun SettingsWriter.initDefaultValuesForSettings() { @@ -101,10 +103,12 @@ class Module( } private val moduleNameValidator = settingValidator { module -> - StringValidators.shouldNotBeBlank("Module name").validate(this, module.name) + StringValidators.shouldNotBeBlank(KotlinNewProjectWizardBundle.message("module.name")).validate(this, module.name) } and settingValidator { module -> - StringValidators.shouldBeValidIdentifier("Module name `${module.name}`", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES) - .validate(this, module.name) + StringValidators.shouldBeValidIdentifier( + KotlinNewProjectWizardBundle.message("module.name", module.name), + ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES + ).validate(this, module.name) } val moduleConfiguratorValidator = settingValidator { module -> @@ -117,7 +121,12 @@ class Module( } val value = reference?.notRequiredSettingValue ?: reference?.savedOrDefaultValue - ?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank") + ?: return@map ValidationResult.ValidationError( + KotlinNewProjectWizardBundle.message( + "validation.should.not.be.blank", + setting.title.capitalize() + ) + ) (setting.validator as SettingValidator).validate(this@settingValidator, value) }.fold() } @@ -129,7 +138,12 @@ class Module( template.settings.map { setting -> val value = setting.reference.notRequiredSettingValue ?: setting.reference.savedOrDefaultValue - ?: return@map ValidationResult.ValidationError("${setting.title.capitalize()} should not be blank") + ?: return@map ValidationResult.ValidationError( + KotlinNewProjectWizardBundle.message( + "validation.should.not.be.blank", + setting.title.capitalize() + ) + ) (setting.validator as SettingValidator).validate(this@settingValidator, value) }.fold() } @@ -157,7 +171,7 @@ val Module.isRootModule get() = parent == null @Suppress("FunctionName") -fun MultiplatformTargetModule(name: String, configurator: ModuleConfigurator, sourcesets: List) = +fun MultiplatformTargetModule(@NonNls name: String, configurator: ModuleConfigurator, sourcesets: List) = Module( name, configurator, @@ -167,7 +181,7 @@ fun MultiplatformTargetModule(name: String, configurator: ModuleConfigurator, so ) @Suppress("FunctionName") -fun MultiplatformModule(name: String, targets: List = emptyList()) = +fun MultiplatformModule(@NonNls name: String, targets: List = emptyList()) = Module( name, MppModuleConfigurator, @@ -177,7 +191,7 @@ fun MultiplatformModule(name: String, targets: List = emptyList()) = ) @Suppress("FunctionName") -fun SingleplatformModule(name: String, sourcesets: List) = +fun SingleplatformModule(@NonNls name: String, sourcesets: List) = Module( name, JvmSinglePlatformModuleConfigurator, diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/version/Version.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/version/Version.kt index 6c00231d278..d5a65877f49 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/version/Version.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/version/Version.kt @@ -1,18 +1,20 @@ package org.jetbrains.kotlin.tools.projectWizard.settings.version +import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.core.* import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem -data class Version(override val text: String) : DisplayableSettingItem { +data class Version(@NonNls override val text: String) : DisplayableSettingItem { override fun toString(): String = text companion object { - fun fromString(string: String) = Version(string) + fun fromString(@NonNls string: String) = Version(string) val parser: Parser = valueParser { value, path -> val (stringVersion) = value.parseAs(path) safe { fromString(stringVersion) }.mapFailure { - ParseError("Bad version format for setting `$path`") + ParseError(KotlinNewProjectWizardBundle.message("version.error.bad.format", path)) }.get() } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt index b6c417696bb..205091d3bc6 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.templates +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.core.buildList @@ -10,11 +11,15 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatf import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.runTaskIrs import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle class ConsoleJvmApplicationTemplate : Template() { + @NonNls override val id: String = "consoleJvmApp" - override val title: String = "Console Application" - override val description: String = """Simple “Hello World!” Kotlin/JVM application that works in the console""" + + override val title: String = KotlinNewProjectWizardBundle.message("module.template.console.jvm.title") + override val description: String = KotlinNewProjectWizardBundle.message("module.template.console.jvm.description") + override val moduleTypes: Set = setOf(ModuleType.jvm) override fun Writer.getIrsToAddToBuildFile( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt index d04a65f17ad..56534e77e0a 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/FileTemplateDescriptor.kt @@ -1,5 +1,6 @@ package org.jetbrains.kotlin.tools.projectWizard.templates +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType import java.nio.file.Path @@ -8,7 +9,7 @@ import java.nio.file.Paths // Should be used to create any kind of files in the generated project // Except build files as they will be generated using IR -data class FileTemplateDescriptor(val templateId: String, val relativePath: Path) { +data class FileTemplateDescriptor(@NonNls val templateId: String, val relativePath: Path) { constructor(templateId: String) : this( templateId, Paths.get(templateId).fileName.toString().removeSuffix(".vm").asPath() diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt index 8e63e721363..bb1cacbc0f4 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.tools.projectWizard.templates +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.core.Writer import org.jetbrains.kotlin.tools.projectWizard.core.asPath import org.jetbrains.kotlin.tools.projectWizard.core.buildList @@ -22,11 +23,14 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Repositorie import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.InterceptionPoint +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle class KtorServerTemplate : Template() { - override val title: String = "Ktor Server" - override val description: String = "Configurable Ktor web server for building web applications" + override val title: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.title") + override val description: String = KotlinNewProjectWizardBundle.message("module.template.ktor.server.description") override val moduleTypes: Set = setOf(ModuleType.jvm) + + @NonNls override val id: String = "ktorServer" override fun Writer.getRequiredLibraries(module: ModuleIR): List = @@ -55,7 +59,10 @@ class KtorServerTemplate : Template() { FileTemplateDescriptor("$id/server.kt.vm", "server.kt".asPath()) asSrcOf SourcesetType.main ) - val serverEngine by enumSetting("Ktor Server Engine", GenerationPhase.PROJECT_GENERATION) + val serverEngine by enumSetting( + KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine"), + GenerationPhase.PROJECT_GENERATION + ) val imports = InterceptionPoint("imports", emptyList()) val routes = InterceptionPoint("routes", emptyList()) @@ -65,7 +72,7 @@ class KtorServerTemplate : Template() { override val settings: List> = listOf(serverEngine) } -private fun ktorArtifactDependency(name: String) = ArtifactBasedLibraryDependencyIR( +private fun ktorArtifactDependency(@NonNls name: String) = ArtifactBasedLibraryDependencyIR( MavenArtifact(Repositories.KTOR_BINTRAY, "io.ktor", name), Version.fromString("1.2.6"), DependencyType.MAIN @@ -74,9 +81,18 @@ private fun ktorArtifactDependency(name: String) = ArtifactBasedLibraryDependenc @Suppress("MemberVisibilityCanBePrivate") enum class KtorServerEngine(val engineName: String, val dependencyName: String) : DisplayableSettingItem { - Netty("Netty", dependencyName = "ktor-server-netty"), - Tomcat("Tomcat", dependencyName = "ktor-server-tomcat"), - Jetty("Jetty", dependencyName = "ktor-server-jetty"); + Netty( + KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine.netty"), + dependencyName = "ktor-server-netty" + ), + Tomcat( + KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine.tomcat"), + dependencyName = "ktor-server-tomcat" + ), + Jetty( + KotlinNewProjectWizardBundle.message("module.template.ktor.server.setting.engine.jetty"), + dependencyName = "ktor-server-jetty" + ); override val text: String get() = engineName.capitalize() diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt index 99124f9fe75..14d25388df8 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt @@ -15,10 +15,12 @@ import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatf import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.withIrs import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.SourcesetType +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle class NativeConsoleApplicationTemplate : Template() { - override val title: String = "Native Application" - override val description: String = "Simple Kotlin/Native application for your operating system" + override val title: String = KotlinNewProjectWizardBundle.message("module.template.native.console.title") + override val description: String = KotlinNewProjectWizardBundle.message("module.template.native.console.description") + override val moduleTypes: Set = setOf(ModuleType.native) override val id: String = "nativeConsoleApp" diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt index 253708e3041..aa2619aaf47 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt @@ -6,6 +6,8 @@ package org.jetbrains.kotlin.tools.projectWizard.templates +import org.jetbrains.annotations.Nls +import org.jetbrains.annotations.NonNls import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration import org.jetbrains.kotlin.tools.projectWizard.core.* @@ -25,18 +27,25 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.TemplateInterceptor import org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors.interceptTemplate +import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle class SimpleJsClientTemplate : Template() { - override val title: String = "Frontend Application" - override val description: String = "Configurable Kotlin/JS frontend application" + override val title: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.title") + override val description: String = KotlinNewProjectWizardBundle.message("module.template.js.simple.description") + override val moduleTypes: Set = setOf(ModuleType.js) + + @NonNls override val id: String = "simpleJsClient" override fun isApplicableTo(module: Module): Boolean = module.configurator == JsBrowserTargetConfigurator || module.configurator == JsSingleplatformModuleConfigurator - val renderEngine by enumSetting("Rendering engine", GenerationPhase.PROJECT_GENERATION) { + val renderEngine by enumSetting( + KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.engine"), + GenerationPhase.PROJECT_GENERATION + ) { defaultValue = value(RenderEngine.REACT_WITH_STYLED) } @@ -45,12 +54,12 @@ class SimpleJsClientTemplate : Template() { override fun Reader.createRunConfigurations(module: ModuleIR): List = buildList { if (module.originalModule.kind == ModuleKind.singleplatformJs) { +WizardGradleRunConfiguration( - "BrowserDevelopmentRun in continuous mode", + KotlinNewProjectWizardBundle.message("module.template.js.simple.run.configuration.dev"), "browserDevelopmentRun", listOf("--continuous") ) +WizardGradleRunConfiguration( - "BrowserProductionRun in continuous mode", + KotlinNewProjectWizardBundle.message("module.template.js.simple.run.configuration.prod"), "browserProductionRun", listOf("--continuous") ) @@ -221,8 +230,13 @@ class SimpleJsClientTemplate : Template() { } companion object { + @NonNls private const val JS_OUTPUT_FILE_NAME = "output.js" + + @NonNls private const val WEBPACK_TASK_CLASS = "KotlinWebpack" + + @NonNls private const val WEBPACK_TASK_SUFFIX = "BrowserProductionWebpack" } @@ -270,9 +284,9 @@ class SimpleJsClientTemplate : Template() { ) } - enum class RenderEngine(override val text: String) : DisplayableSettingItem { - KOTLINX_HTML("Use statically typed Kotlinx.html DSL"), - REACT("Use Kotlin-wrapped React library"), - REACT_WITH_STYLED("Use Kotlin-wrapped React framework together with Styled Components"), + enum class RenderEngine(@Nls override val text: String) : DisplayableSettingItem { + KOTLINX_HTML(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.kotlinx.html")), + REACT(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.react")), + REACT_WITH_STYLED(KotlinNewProjectWizardBundle.message("module.template.js.simple.setting.rendering.react.styled")) } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/transformers/interceptors/InterceptionPoint.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/transformers/interceptors/InterceptionPoint.kt index acb407a234e..4ccf0eaa449 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/transformers/interceptors/InterceptionPoint.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/transformers/interceptors/InterceptionPoint.kt @@ -5,7 +5,9 @@ package org.jetbrains.kotlin.tools.projectWizard.transformers.interceptors -data class InterceptionPoint(val name: String, val initialValue: T) +import org.jetbrains.annotations.NonNls + +data class InterceptionPoint(@NonNls val name: String, val initialValue: T) data class InterceptionPointModifier( val point: InterceptionPoint<@UnsafeVariance T>, diff --git a/libraries/tools/new-project-wizard/src/tasks/Task.kt b/libraries/tools/new-project-wizard/src/tasks/Task.kt deleted file mode 100644 index d1ebdc3f91c..00000000000 --- a/libraries/tools/new-project-wizard/src/tasks/Task.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package tasks - -import org.jetbrains.kotlin.tools.projectWizard.core.buildList -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR -import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.runTaskIrs -import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType - -interface Task { - val name: String - fun createTaskIRs(moduleIR: ModuleIR, buildSystemType: BuildSystemType): List -} - -class JvmRunTask(private val mainClass: String) : Task { - override val name: String = "Run task" - - override fun createTaskIRs(moduleIR: ModuleIR, buildSystemType: BuildSystemType): List = buildList { - +runTaskIrs(mainClass) - } -} \ No newline at end of file