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 99e96740e7b..a97f6e56ddf 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 @@ -7,7 +7,6 @@ import com.intellij.ui.ToolbarDecorator import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.* import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.* -import org.jetbrains.kotlin.tools.projectWizard.wizard.KotlinNewProjectWizardBundle import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.createPanelWithPopupHandler import org.jetbrains.kotlin.utils.addToStdlib.safeAs import javax.swing.JComponent @@ -52,40 +51,32 @@ class ModulesEditorToolbarDecorator( null -> true else -> false } - text = when (tree.selectedSettingItem?.safeAs()?.kind) { - ModuleKind.multiplatform -> KotlinNewProjectWizardBundle.message("editor.add.target") - ModuleKind.singleplatformJvm -> KotlinNewProjectWizardBundle.message("editor.add.generic.module") - ModuleKind.singleplatformJs -> KotlinNewProjectWizardBundle.message("editor.add.javascript.module") - ModuleKind.target -> KotlinNewProjectWizardBundle.message("editor.add") - null -> KotlinNewProjectWizardBundle.message("editor.add") + text = "Add" + when (tree.selectedSettingItem?.safeAs()?.kind) { + ModuleKind.multiplatform -> " Target" + ModuleKind.singleplatformJvm -> " Module" + ModuleKind.singleplatformJs -> " JS Module" + ModuleKind.singleplatformAndroid -> " Android Module" + ModuleKind.target -> "" + null -> "" } } event.presentation.isEnabled } setRemoveAction { - val title = when (selectedModuleKind) { - ModuleKind.target -> KotlinNewProjectWizardBundle.message("editor.remove.target.title") - else -> KotlinNewProjectWizardBundle.message("editor.remove.module.title") - } - - val description = when (selectedModuleKind) { - ModuleKind.target -> KotlinNewProjectWizardBundle.message("editor.remove.target.description") - else -> KotlinNewProjectWizardBundle.message("editor.remove.module.description") - } - + val moduleKindText = selectedModuleKindText ?: "Module" if (Messages.showOkCancelDialog( tree, buildString { - appendln(description) + appendln("Do you want to remove selected $moduleKindText?") if (tree.selectedSettingItem.safeAs()?.kind != ModuleKind.target) { - appendln(KotlinNewProjectWizardBundle.message("editor.remove.all.submodules")) + appendln("This will also remove all submodules.") } appendln() - appendln(KotlinNewProjectWizardBundle.message("editor.cant.undone.action")) + appendln("This action cannot be undone.") }, - title, - KotlinNewProjectWizardBundle.message("editor.remove.button.remove"), - KotlinNewProjectWizardBundle.message("editor.remove.button.cancel"), + "Remove selected $moduleKindText?", + "Remove", + "Cancel", AllIcons.General.QuestionDialog ) == Messages.OK ) { @@ -95,10 +86,7 @@ class ModulesEditorToolbarDecorator( setRemoveActionUpdater { event -> event.presentation.apply { isEnabled = tree.selectedSettingItem is Module - text = when (selectedModuleKind) { - ModuleKind.target -> KotlinNewProjectWizardBundle.message("editor.remove.target.toolbutton") - else -> KotlinNewProjectWizardBundle.message("editor.remove.module.toolbutton") - } + text = "Remove" + selectedModuleKindText?.let { " $it" }.orEmpty() } event.presentation.isEnabled } @@ -107,12 +95,21 @@ class ModulesEditorToolbarDecorator( setMoveUpAction(null) } - private val selectedModuleKind - get() = tree.selectedSettingItem.safeAs()?.kind + private val selectedModuleKindText + get() = tree.selectedSettingItem.safeAs()?.kindText fun createToolPanel(): JComponent = toolbarDecorator .createPanelWithPopupHandler(tree) .apply { border = null } -} \ No newline at end of file +} + +private val Module.kindText + get() = when (kind) { + ModuleKind.multiplatform -> "Module" + ModuleKind.singleplatformJvm -> "Module" + ModuleKind.singleplatformJs -> "Module" + ModuleKind.singleplatformAndroid -> "Module" + ModuleKind.target -> "Target" + } \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt index 633c7ef81e2..e34774fcf41 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/ui.kt @@ -92,6 +92,7 @@ val ModuleType.icon: Icon ModuleType.js -> KotlinIcons.JS ModuleType.native -> KotlinIcons.NATIVE ModuleType.common -> KotlinIcons.SMALL_LOGO + ModuleType.android -> KotlinIcons.SMALL_LOGO } @@ -101,6 +102,7 @@ val Module.icon: Icon ModuleKind.multiplatform -> AllIcons.Nodes.Module ModuleKind.singleplatformJs -> KotlinIcons.JS ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module + ModuleKind.singleplatformAndroid -> AllIcons.Nodes.Module } val ProjectKind.icon: Icon @@ -121,6 +123,7 @@ val ModuleKind.icon: Icon ModuleKind.singleplatformJs -> KotlinIcons.JS ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module ModuleKind.target -> AllIcons.Nodes.Module + ModuleKind.singleplatformAndroid -> AllIcons.Nodes.Module } val ModuleConfigurator.icon: Icon 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 40be15bcb3b..866256d1fc7 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 @@ -41,7 +41,7 @@ interface AndroidModuleConfigurator : ModuleConfigurator, GradleModuleConfigurator { override val moduleType: ModuleType - get() = ModuleType.jvm + get() = ModuleType.android override val greyText: String get() = "Requires Android SDK" 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 cb5ada6e1c3..38e048583e8 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 @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleConfigurati import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.DefaultRepository import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module +import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind import org.jetbrains.kotlin.tools.projectWizard.settings.javaPackage import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version import org.jetbrains.kotlin.tools.projectWizard.templates.FileTemplate @@ -17,6 +18,7 @@ import java.nio.file.Path object AndroidSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator, AndroidModuleConfigurator { + override val moduleKind: ModuleKind get() = ModuleKind.singleplatformAndroid override val id = "android" override val suggestedModuleName = "android" override val text = "Android" 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 1b6bc401257..18cbc041d49 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 @@ -66,14 +66,13 @@ object MppModuleConfigurator : ModuleConfigurator { } -interface SinglePlatformModuleConfigurator : ModuleConfigurator { - override val moduleKind get() = ModuleKind.singleplatformJvm -} +interface SinglePlatformModuleConfigurator : ModuleConfigurator object JvmSinglePlatformModuleConfigurator : JvmModuleConfigurator, SinglePlatformModuleConfigurator, ModuleConfiguratorWithModuleType { override val moduleType get() = ModuleType.jvm + override val moduleKind: ModuleKind get() = ModuleKind.singleplatformJvm override val suggestedModuleName = "jvm" override val id = "JVM Module" @@ -122,6 +121,7 @@ object IOSSinglePlatformModuleConfigurator : SinglePlatformModuleConfigurator { override val id = "IOS Module" override val suggestedModuleName = "ios" + override val moduleKind: ModuleKind get() = ModuleKind.singleplatformJvm override val greyText = "Requires Apple Xcode" } @@ -132,4 +132,5 @@ val ModuleType.defaultTarget ModuleType.js -> JsBrowserTargetConfigurator ModuleType.native -> NativeForCurrentSystemTarget ModuleType.common -> CommonTargetConfigurator + ModuleType.android -> AndroidTargetConfigurator } \ No newline at end of file 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 ce2544263ff..7369a1028bf 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 @@ -2,12 +2,14 @@ package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.StdlibType +//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") + common("Common"), + android("Android") ; @@ -20,7 +22,8 @@ enum class ModuleType(val projectTypeName: String) { enum class ModuleSubType(val moduleType: ModuleType) { jvm(ModuleType.jvm), js(ModuleType.js), - android(ModuleType.jvm), androidNativeArm32(ModuleType.native), androidNativeArm64(ModuleType.native), + android(ModuleType.android), + androidNativeArm32(ModuleType.native), androidNativeArm64(ModuleType.native), iosArm32(ModuleType.native), iosArm64(ModuleType.native), iosX64(ModuleType.native), linuxArm32Hfp(ModuleType.native), linuxMips32(ModuleType.native), linuxMipsel32(ModuleType.native), linuxX64(ModuleType.native), @@ -34,5 +37,6 @@ fun ModuleType.correspondingStdlib(): StdlibType? = when (this) { ModuleType.js -> StdlibType.StdlibJs ModuleType.native -> null ModuleType.common -> StdlibType.StdlibCommon + ModuleType.android -> StdlibType.StdlibJdk7 } 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 9a36756176e..0a6a0697166 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 @@ -22,6 +22,7 @@ private fun Module.createTag(): TemplateTag? = when (configurator) { ModuleType.jvm -> TemplateTag.JVM ModuleType.js -> TemplateTag.JS ModuleType.native -> TemplateTag.NATIVE + ModuleType.android -> TemplateTag.ANDROID ModuleType.common -> null null -> 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 92b636ae2f1..dc6dba56741 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 @@ -16,6 +16,7 @@ enum class ModuleKind : DisplayableSettingItem { multiplatform, target, singleplatformJvm, + singleplatformAndroid, singleplatformJs, ; override val text: String