Wizard: move module templates to modules
This commit is contained in:
+13
-4
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-3
@@ -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
|
||||
}
|
||||
}
|
||||
+12
-12
@@ -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)
|
||||
}
|
||||
|
||||
|
||||
+3
-4
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user