Wizard: introduce Android & JS multiplatform project kinds

#KT-36155 fixed
This commit is contained in:
Ilya Kirillov
2020-02-12 18:26:02 +03:00
parent a5a72a89fc
commit e1b99580eb
7 changed files with 23 additions and 14 deletions
@@ -1,15 +1,11 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.core.entity.DropDownSettingType
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.DropDownSettingType
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates.ProjectTemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.ProjectTemplate
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.ImmutableSingleSelectableListWithIcon
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.UiConstants
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.bordered
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.SettingComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.ValidationIndicator
import java.awt.BorderLayout
@@ -28,7 +24,7 @@ class ProjectTemplateSettingComponent(
private val list = ImmutableSingleSelectableListWithIcon(
setting.type.values,
renderValue = { value ->
icon = KotlinIcons.SMALL_LOGO
icon = value.projectKind.icon
append(value.title)
},
onValueSelected = {
@@ -28,7 +28,7 @@ class ModulesEditorComponent(
ModulesEditorTree(
onSelected = { oneEntrySelected(it) },
addModule = { component ->
val isMppProject = KotlinPlugin::projectKind.value == ProjectKind.Multiplatform
val isMppProject = KotlinPlugin::projectKind.value == ProjectKind.Singleplatform
moduleCreator.create(
target = null, // The empty tree case
allowMultiplatform = isMppProject,
@@ -55,7 +55,7 @@ class ModulesEditorComponent(
moduleCreator = moduleCreator,
model = model,
getModules = { value ?: emptyList() },
isMultiplatformProject = { KotlinPlugin::projectKind.value == ProjectKind.Multiplatform }
isMultiplatformProject = { KotlinPlugin::projectKind.value != ProjectKind.Singleplatform }
)
override val component: JComponent by lazy(LazyThreadSafetyMode.NONE) {
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.SimpleTarget
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.TargetConfigurator
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ProjectKind
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
@@ -95,6 +96,14 @@ val Module.icon: Icon
ModuleKind.singleplatformJvm -> AllIcons.Nodes.Module
}
val ProjectKind.icon: Icon
get() = when (this) {
ProjectKind.Singleplatform -> KotlinIcons.SMALL_LOGO
ProjectKind.Multiplatform -> KotlinIcons.MPP
ProjectKind.Android -> KotlinIcons.SMALL_LOGO
ProjectKind.Js -> KotlinIcons.JS
}
val ModuleSubType.icon: Icon
get() = moduleType.icon