Wizard: move module templates to modules

This commit is contained in:
Ilya Kirillov
2020-01-16 20:27:49 +03:00
parent 5673804707
commit 0ebcf482ca
20 changed files with 221 additions and 199 deletions
@@ -1,5 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
import com.intellij.ui.components.JBTabbedPane
import com.intellij.ui.components.panels.VerticalLayout
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
@@ -11,6 +12,7 @@ import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.DropDownComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.TextFieldComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.SettingsList
import java.awt.BorderLayout
import javax.swing.BorderFactory
import javax.swing.JComponent
@@ -19,7 +21,13 @@ class ModuleSettingsComponent(valuesReadingContext: ValuesReadingContext) : Dyna
StringValidators.shouldNotBeBlank("Module name") and
StringValidators.shouldBeValidIdentifier("Module Name")
private val moduleConfiguratorSettingsList = SettingsList(emptyList(), valuesReadingContext)
private val moduleConfiguratorSettingsList = SettingsList(emptyList(), valuesReadingContext).asSubComponent()
private val templateComponent = TemplatesComponent(valuesReadingContext).asSubComponent()
private val tabPanel = JBTabbedPane().apply {
add("Template", templateComponent.component)
add("Module Settings", moduleConfiguratorSettingsList.component)
}
private val nameField = TextFieldComponent(
valuesReadingContext,
@@ -32,15 +40,15 @@ class ModuleSettingsComponent(valuesReadingContext: ValuesReadingContext) : Dyna
).asSubComponent()
override val component: JComponent = panel(VerticalLayout(5)) {
override val component: JComponent = panel {
border = BorderFactory.createEmptyBorder(
UiConstants.GAP_BORDER_SIZE,
UiConstants.GAP_BORDER_SIZE,
UiConstants.GAP_BORDER_SIZE,
UiConstants.GAP_BORDER_SIZE
)
add(nameField.component)
add(moduleConfiguratorSettingsList.component)
add(nameField.component, BorderLayout.NORTH)
add(tabPanel, BorderLayout.CENTER)
}
var module: Module? = null
@@ -57,6 +65,7 @@ class ModuleSettingsComponent(valuesReadingContext: ValuesReadingContext) : Dyna
|| module.configurator.moduleType != ModuleType.common
moduleConfiguratorSettingsList.setSettings(module.configuratorSettings)
templateComponent.module = module
}
}
@@ -6,10 +6,9 @@ import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
class SourcesetSettingsComponent(valuesReadingContext: ValuesReadingContext) : DynamicComponent(valuesReadingContext) {
private val templatesComponent = TemplatesComponent(valuesReadingContext).asSubComponent()
private val dependenciesComponent = SourcesetDependenciesSettingsComponent(valuesReadingContext).asSubComponent()
override val component = JBTabbedPane().apply {
add("Template", templatesComponent.component)
add("Dependencies", dependenciesComponent.component)
}
@@ -17,6 +16,5 @@ class SourcesetSettingsComponent(valuesReadingContext: ValuesReadingContext) : D
set(value) {
field = value
dependenciesComponent.sourceset = value
templatesComponent.sourceset = value
}
}
@@ -10,6 +10,7 @@ import com.intellij.util.ui.UIUtil
import org.jetbrains.kotlin.idea.KotlinIcons
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
@@ -23,7 +24,7 @@ import javax.swing.JPanel
class TemplatesComponent(valuesReadingContext: ValuesReadingContext) : DynamicComponent(valuesReadingContext) {
private val chooseTemplateComponent: ChooseTemplateComponent =
ChooseTemplateComponent(valuesReadingContext) { template ->
sourceset?.template = template
module?.template = template
switchState(template)
}
@@ -46,8 +47,8 @@ class TemplatesComponent(valuesReadingContext: ValuesReadingContext) : DynamicCo
when (selectedTemplate) {
null -> panel.add(chooseTemplateComponent.component, BorderLayout.CENTER)
else -> {
if (sourceset != null) {
templateSettingsComponent.setTemplate(sourceset!!, selectedTemplate)
if (module != null) {
templateSettingsComponent.setTemplate(module!!, selectedTemplate)
}
panel.add(templateSettingsComponent.component, BorderLayout.CENTER)
}
@@ -61,7 +62,7 @@ class TemplatesComponent(valuesReadingContext: ValuesReadingContext) : DynamicCo
override val component: JComponent = panel
var sourceset: Sourceset? = null
var module: Module? = null
set(value) {
field = value
switchState(value?.template)
@@ -95,7 +96,7 @@ class ChooseTemplateComponent(
TemplatesPlugin::templates.propertyValue
}
var selectedModule: Sourceset? = null
var selectedModule: Module? = null
set(value) {
field = value
onStateUpdated()
@@ -107,8 +108,7 @@ class ChooseTemplateComponent(
private val availableTemplates
get() = allTemplates.values.filter { template ->
selectedModule!!.containingModuleType in template.moduleTypes
&& selectedModule!!.sourcesetType in template.sourcesetTypes
selectedModule!!.configurator.moduleType in template.moduleTypes
&& template.isApplicableTo(selectedModule!!)
}
@@ -204,7 +204,7 @@ class TemplateDescriptionComponent(
}
private val title = panel {
nonDefaultBackgroundColor?.let { background = it }
nonDefaultBackgroundColor?.let { background = it }
add(titleLabel, BorderLayout.CENTER)
removeButton?.let { add(it, BorderLayout.EAST) }
}
@@ -213,7 +213,7 @@ class TemplateDescriptionComponent(
override val component: JComponent by lazy(LazyThreadSafetyMode.NONE) {
panel {
nonDefaultBackgroundColor?.let { background = it }
nonDefaultBackgroundColor?.let { background = it }
add(title, BorderLayout.NORTH)
add(descriptionLabel, BorderLayout.CENTER)
}
@@ -239,7 +239,7 @@ private class TemplateSettingsComponent(
) : DynamicComponent(valuesReadingContext) {
private val templateDescriptionComponent = TemplateDescriptionComponent(
needRemoveButton = true,
nonDefaultBackgroundColor = UIUtil.getEditorPaneBackground(),
nonDefaultBackgroundColor = UIUtil.getEditorPaneBackground(),
onRemoveButtonClicked = removeTemplate
).apply {
component.bordered(needTopEmptyBorder = false, needBottomEmptyBorder = false)
@@ -249,8 +249,8 @@ private class TemplateSettingsComponent(
component.bordered()
}
fun setTemplate(sourceset: Sourceset, selectedTemplate: Template) {
settings.setSettings(selectedTemplate.settings(sourceset))
fun setTemplate(module: Module, selectedTemplate: Template) {
settings.setSettings(selectedTemplate.settings(module))
templateDescriptionComponent.updateSelectedTemplate(selectedTemplate)
}
@@ -28,7 +28,6 @@ class NewModuleCreator {
Sourceset(
sourcesetType,
configurator.moduleType,
template = null,
dependencies = emptyList()
)
}
@@ -57,7 +56,6 @@ class NewModuleCreator {
Sourceset(
sourcesetType,
ModuleType.jvm,
template = null,
dependencies = emptyList()
)
}
@@ -66,8 +64,9 @@ class NewModuleCreator {
name,
configurator.moduleKind,
configurator,
sourcesets,
emptyList()
template = null,
sourcesets = sourcesets,
subModules = emptyList()
)
createModule(createdModule)
}