Wizard: refactoring do not use context directly in UI
This commit is contained in:
+22
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.wizard
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.SettingsWritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||
|
||||
|
||||
class IdeContext(context: Context, servicesManager: ServicesManager, isUnitTestMode: Boolean) :
|
||||
SettingsWritingContext(
|
||||
context,
|
||||
servicesManager,
|
||||
isUnitTestMode
|
||||
) {
|
||||
|
||||
val eventManager
|
||||
get() = context.eventManager
|
||||
}
|
||||
+1
@@ -27,6 +27,7 @@ class IdeWizard(
|
||||
isUnitTestMode
|
||||
) {
|
||||
private val allSettings = plugins.flatMap { it.declaredSettings }
|
||||
val ideContext = IdeContext(context, servicesManager, isUnitTestMode)
|
||||
|
||||
init {
|
||||
with(valuesReadingContext) {
|
||||
|
||||
+1
-1
@@ -190,7 +190,7 @@ private class PomWizardStep(
|
||||
originalSettingStep: SettingsStep,
|
||||
wizard: IdeWizard
|
||||
) : WizardStep(wizard, GenerationPhase.PROJECT_GENERATION) {
|
||||
private val pomWizardStepComponent = PomWizardStepComponent(wizard.valuesReadingContext)
|
||||
private val pomWizardStepComponent = PomWizardStepComponent(wizard.ideContext)
|
||||
|
||||
init {
|
||||
originalSettingStep.addSettingsComponent(component)
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ import com.intellij.openapi.externalSystem.service.execution.ExternalSystemRunCo
|
||||
import com.intellij.openapi.project.Project
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.RunConfigurationsService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.isBuildSystemAvailable
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
|
||||
+17
-12
@@ -1,7 +1,10 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.SettingsWritingContext
|
||||
|
||||
abstract class Component : Displayable {
|
||||
private val subComponents = mutableListOf<Component>()
|
||||
@@ -15,12 +18,7 @@ abstract class Component : Displayable {
|
||||
}
|
||||
}
|
||||
|
||||
abstract class DynamicComponent(private val readingContext: ReadingContext) : Component() {
|
||||
//TODO do not use it in future
|
||||
protected val context = readingContext.context
|
||||
protected val eventManager
|
||||
get() = readingContext.context.eventManager
|
||||
|
||||
abstract class DynamicComponent(private val ideContext: IdeContext) : Component() {
|
||||
private var isInitialized: Boolean = false
|
||||
|
||||
override fun onInit() {
|
||||
@@ -29,22 +27,29 @@ abstract class DynamicComponent(private val readingContext: ReadingContext) : Co
|
||||
}
|
||||
|
||||
var <V : Any, T : SettingType<V>> SettingReference<V, T>.value: V?
|
||||
get() = with(readingContext) { notRequiredSettingValue() }
|
||||
set(value) {
|
||||
with(context) { settingContext[this@value] = value!! }
|
||||
get() = read { notRequiredSettingValue() }
|
||||
set(value) = modify {
|
||||
value?.let { setValue(it) }
|
||||
}
|
||||
|
||||
|
||||
inline val <V : Any, reified T : SettingType<V>> PluginSettingPropertyReference<V, T>.value: V?
|
||||
get() = reference.value
|
||||
|
||||
init {
|
||||
readingContext.context.eventManager.addSettingUpdaterEventListener { reference ->
|
||||
ideContext.eventManager.addSettingUpdaterEventListener { reference ->
|
||||
if (isInitialized) onValueUpdated(reference)
|
||||
}
|
||||
}
|
||||
|
||||
protected fun <T> read(reader: ReadingContext.() -> T): T =
|
||||
reader(readingContext)
|
||||
reader(ideContext)
|
||||
|
||||
protected fun <T> write(writer: WritingContext.() -> T): T =
|
||||
writer(ideContext)
|
||||
|
||||
protected fun <T> modify(modifier: SettingsWritingContext.() -> T): T =
|
||||
modifier(ideContext)
|
||||
|
||||
open fun onValueUpdated(reference: SettingReference<*, *>?) {}
|
||||
}
|
||||
|
||||
+6
-5
@@ -1,30 +1,31 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
|
||||
|
||||
import com.intellij.ui.components.panels.VerticalLayout
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.StructurePlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.StringSettingComponent
|
||||
import javax.swing.Box
|
||||
import javax.swing.JSeparator
|
||||
import javax.swing.SwingConstants
|
||||
|
||||
class PomWizardStepComponent(readingContext: ReadingContext) : WizardStepComponent(readingContext) {
|
||||
class PomWizardStepComponent(ideContext: IdeContext) : WizardStepComponent(ideContext) {
|
||||
private val groupIdComponent = StringSettingComponent(
|
||||
StructurePlugin::groupId.reference,
|
||||
readingContext,
|
||||
ideContext,
|
||||
showLabel = true
|
||||
).asSubComponent()
|
||||
|
||||
private val artifactIdComponent = StringSettingComponent(
|
||||
StructurePlugin::artifactId.reference,
|
||||
readingContext,
|
||||
ideContext,
|
||||
showLabel = true
|
||||
).asSubComponent()
|
||||
|
||||
private val versionComponent = StringSettingComponent(
|
||||
StructurePlugin::version.reference,
|
||||
readingContext,
|
||||
ideContext,
|
||||
showLabel = true
|
||||
).asSubComponent()
|
||||
|
||||
|
||||
+4
-3
@@ -1,12 +1,13 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import java.awt.BorderLayout
|
||||
import javax.swing.JComponent
|
||||
|
||||
abstract class SubStep(
|
||||
readingContext: ReadingContext
|
||||
) : DynamicComponent(readingContext) {
|
||||
ideContext: IdeContext
|
||||
) : DynamicComponent(ideContext) {
|
||||
protected abstract fun buildContent(): JComponent
|
||||
|
||||
final override val component: JComponent by lazy(LazyThreadSafetyMode.NONE) {
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
|
||||
abstract class WizardStepComponent(
|
||||
readingContext: ReadingContext
|
||||
) : DynamicComponent(readingContext)
|
||||
ideContext: IdeContext
|
||||
) : DynamicComponent(ideContext)
|
||||
+4
-3
@@ -1,17 +1,18 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||
|
||||
import com.intellij.ui.components.JBCheckBox
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
|
||||
class CheckboxComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
labelText: String? = null,
|
||||
initialValue: Boolean? = null,
|
||||
validator: SettingValidator<Boolean>? = null,
|
||||
onValueUpdate: (Boolean) -> Unit = {}
|
||||
) : UIComponent<Boolean>(
|
||||
readingContext,
|
||||
ideContext,
|
||||
labelText,
|
||||
validator,
|
||||
onValueUpdate
|
||||
|
||||
+6
-5
@@ -3,11 +3,12 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||
import com.intellij.openapi.ui.ComboBox
|
||||
import com.intellij.ui.ColoredListCellRenderer
|
||||
import com.intellij.ui.SimpleTextAttributes
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import java.awt.event.ItemEvent
|
||||
import javax.swing.DefaultComboBoxModel
|
||||
@@ -15,7 +16,7 @@ import javax.swing.Icon
|
||||
import javax.swing.JList
|
||||
|
||||
class DropDownComponent<T : DisplayableSettingItem>(
|
||||
private val readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
initialValues: List<T> = emptyList(),
|
||||
labelText: String? = null,
|
||||
private val filter: (T) -> Boolean = { true },
|
||||
@@ -23,7 +24,7 @@ class DropDownComponent<T : DisplayableSettingItem>(
|
||||
private val iconProvider: (T) -> Icon? = { null },
|
||||
onValueUpdate: (T) -> Unit = {}
|
||||
) : UIComponent<T>(
|
||||
readingContext,
|
||||
ideContext,
|
||||
labelText,
|
||||
validator,
|
||||
onValueUpdate
|
||||
@@ -46,8 +47,8 @@ class DropDownComponent<T : DisplayableSettingItem>(
|
||||
value.greyText?.let {
|
||||
append(" $it", SimpleTextAttributes.GRAYED_ATTRIBUTES)
|
||||
}
|
||||
if (this@apply.selectedItem != value) {
|
||||
validator.validate(readingContext, value)
|
||||
if (this@apply.selectedItem != value) read {
|
||||
validator.validate(this, value)
|
||||
.safeAs<ValidationResult.ValidationError>()
|
||||
?.messages
|
||||
?.firstOrNull()
|
||||
|
||||
+4
-3
@@ -3,21 +3,22 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
|
||||
import com.intellij.openapi.ui.TextBrowseFolderListener
|
||||
import com.intellij.openapi.ui.TextFieldWithBrowseButton
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
|
||||
import java.nio.file.Path
|
||||
import java.nio.file.Paths
|
||||
import javax.swing.JComponent
|
||||
|
||||
class PathFieldComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
labelText: String? = null,
|
||||
initialValue: Path? = null,
|
||||
validator: SettingValidator<Path>? = null,
|
||||
onValueUpdate: (Path) -> Unit = {}
|
||||
) : UIComponent<Path>(
|
||||
readingContext,
|
||||
ideContext,
|
||||
labelText,
|
||||
validator,
|
||||
onValueUpdate
|
||||
|
||||
+4
-3
@@ -1,18 +1,19 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||
|
||||
import com.intellij.ui.components.JBTextField
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
|
||||
|
||||
class TextFieldComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
labelText: String? = null,
|
||||
initialValue: String? = null,
|
||||
validator: SettingValidator<String>? = null,
|
||||
onValueUpdate: (String) -> Unit = {}
|
||||
) : UIComponent<String>(
|
||||
readingContext,
|
||||
ideContext,
|
||||
labelText,
|
||||
validator,
|
||||
onValueUpdate
|
||||
|
||||
+10
-5
@@ -6,8 +6,9 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||
|
||||
import com.intellij.openapi.Disposable
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.FocusableComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.label
|
||||
@@ -18,11 +19,11 @@ import java.awt.BorderLayout
|
||||
import javax.swing.JComponent
|
||||
|
||||
abstract class UIComponent<V : Any>(
|
||||
private val readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
labelText: String? = null,
|
||||
private val validator: SettingValidator<V>? = null,
|
||||
private val onValueUpdate: (V) -> Unit = {}
|
||||
) : DynamicComponent(readingContext), ErrorAwareComponent, FocusableComponent, Disposable {
|
||||
) : DynamicComponent(ideContext), ErrorAwareComponent, FocusableComponent, Disposable {
|
||||
private val validationIndicator by lazy(LazyThreadSafetyMode.NONE) {
|
||||
if (validator != null)
|
||||
IdeaBasedComponentValidator(this, getValidatorTarget())
|
||||
@@ -69,7 +70,9 @@ abstract class UIComponent<V : Any>(
|
||||
fun validate(value: V) {
|
||||
if (validator == null) return
|
||||
if (validationIndicator == null) return
|
||||
validationIndicator?.updateValidationState(validator.validate(readingContext, value))
|
||||
read {
|
||||
validationIndicator?.updateValidationState(validator.validate(this, value))
|
||||
}
|
||||
}
|
||||
|
||||
override fun focusOn() {
|
||||
@@ -77,7 +80,9 @@ abstract class UIComponent<V : Any>(
|
||||
}
|
||||
|
||||
override fun findComponentWithError(error: ValidationResult.ValidationError): FocusableComponent? = takeIf {
|
||||
getUiValue()?.let { validator?.validate?.invoke(readingContext, it)?.isSpecificError(error) } == true
|
||||
read {
|
||||
getUiValue()?.let { validator?.validate?.invoke(this, it)?.isSpecificError(error) } == true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+6
-5
@@ -6,26 +6,27 @@ import icons.OpenapiIcons
|
||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.DropDownSettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.DropDownComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.UIComponentDelegatingSettingComponent
|
||||
|
||||
|
||||
class BuildSystemTypeSettingComponent(
|
||||
readingContext: ReadingContext
|
||||
ideContext: IdeContext
|
||||
) : UIComponentDelegatingSettingComponent<BuildSystemType, DropDownSettingType<BuildSystemType>>(
|
||||
BuildSystemPlugin::type.reference,
|
||||
readingContext
|
||||
ideContext
|
||||
) {
|
||||
override val uiComponent: DropDownComponent<BuildSystemType> = DropDownComponent(
|
||||
readingContext,
|
||||
ideContext,
|
||||
setting.type.values,
|
||||
labelText = "Build System",
|
||||
filter = { value -> setting.type.filter(readingContext, reference, value) },
|
||||
filter = { value -> read { setting.type.filter(this, reference, value) } },
|
||||
validator = setting.validator,
|
||||
iconProvider = BuildSystemType::icon,
|
||||
onValueUpdate = { value = it }
|
||||
|
||||
+12
-15
@@ -1,20 +1,20 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.projectTemplates.ProjectTemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.projectTemplates.ProjectTemplate
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeWizard
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
|
||||
import java.awt.BorderLayout
|
||||
import javax.swing.JComponent
|
||||
|
||||
class FirstWizardStepComponent(wizard: IdeWizard) : WizardStepComponent(wizard.valuesReadingContext) {
|
||||
private val buildSystemSubStep = BuildSystemSubStep(wizard.valuesReadingContext).asSubComponent()
|
||||
private val templatesSubStep = TemplatesSubStep(wizard.valuesReadingContext).asSubComponent()
|
||||
class FirstWizardStepComponent(wizard: IdeWizard) : WizardStepComponent(wizard.ideContext) {
|
||||
private val buildSystemSubStep = BuildSystemSubStep(wizard.ideContext).asSubComponent()
|
||||
private val templatesSubStep = TemplatesSubStep(wizard.ideContext).asSubComponent()
|
||||
|
||||
override val component: JComponent = panel {
|
||||
add(templatesSubStep.component, BorderLayout.CENTER)
|
||||
@@ -22,19 +22,17 @@ class FirstWizardStepComponent(wizard: IdeWizard) : WizardStepComponent(wizard.v
|
||||
}
|
||||
}
|
||||
|
||||
class BuildSystemSubStep(readingContext: ReadingContext) :
|
||||
SubStep(readingContext) {
|
||||
private val buildSystemSetting = BuildSystemTypeSettingComponent(readingContext).asSubComponent()
|
||||
class BuildSystemSubStep(ideContext: IdeContext) : SubStep(ideContext) {
|
||||
private val buildSystemSetting = BuildSystemTypeSettingComponent(ideContext).asSubComponent()
|
||||
|
||||
override fun buildContent(): JComponent = panel {
|
||||
add(buildSystemSetting.component, BorderLayout.CENTER)
|
||||
}
|
||||
}
|
||||
|
||||
class TemplatesSubStep(readingContext: ReadingContext) :
|
||||
SubStep(readingContext) {
|
||||
class TemplatesSubStep(ideContext: IdeContext) : SubStep(ideContext) {
|
||||
private val projectTemplateSettingComponent =
|
||||
ProjectTemplateSettingComponent(readingContext) { projectTemplate ->
|
||||
ProjectTemplateSettingComponent(ideContext) { projectTemplate ->
|
||||
templateDescriptionComponent.setTemplate(projectTemplate)
|
||||
}.asSubComponent()
|
||||
|
||||
@@ -51,11 +49,10 @@ class TemplatesSubStep(readingContext: ReadingContext) :
|
||||
}
|
||||
|
||||
private fun applySelectedTemplate() {
|
||||
projectTemplateSettingComponent.value?.setsValues?.forEach { (setting, value) ->
|
||||
// TODO do not use settingContext directly
|
||||
context.settingContext[setting] = value
|
||||
}
|
||||
read {
|
||||
modify {
|
||||
projectTemplateSettingComponent.value?.setsValues?.forEach { (setting, value) ->
|
||||
setting.setValue(value)
|
||||
}
|
||||
allModules().forEach { module ->
|
||||
module.apply { initDefaultValuesForSettings() }
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
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.IdeContext
|
||||
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
|
||||
@@ -13,11 +13,11 @@ import javax.swing.BorderFactory
|
||||
import javax.swing.JComponent
|
||||
|
||||
class ProjectTemplateSettingComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
private val onSelected: (ProjectTemplate) -> Unit
|
||||
) : SettingComponent<ProjectTemplate, DropDownSettingType<ProjectTemplate>>(
|
||||
ProjectTemplatesPlugin::template.reference,
|
||||
readingContext
|
||||
ideContext
|
||||
) {
|
||||
override val validationIndicator: ValidationIndicator? get() = null
|
||||
|
||||
|
||||
+8
-7
@@ -2,7 +2,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
|
||||
|
||||
import com.intellij.ui.components.JBTabbedPane
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings
|
||||
@@ -11,6 +11,7 @@ import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.TextFieldComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
|
||||
@@ -19,15 +20,15 @@ import java.awt.BorderLayout
|
||||
import javax.swing.JComponent
|
||||
|
||||
class ModuleSettingsComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
uiEditorUsagesStats: UiEditorUsageStats
|
||||
) : DynamicComponent(readingContext) {
|
||||
) : DynamicComponent(ideContext) {
|
||||
private val validateModuleName =
|
||||
StringValidators.shouldNotBeBlank("Module name") and
|
||||
StringValidators.shouldBeValidIdentifier("Module Name", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES)
|
||||
|
||||
private val moduleConfiguratorSettingsList = SettingsList(emptyList(), readingContext).asSubComponent()
|
||||
private val templateComponent = TemplatesComponent(readingContext, uiEditorUsagesStats).asSubComponent()
|
||||
private val moduleConfiguratorSettingsList = SettingsList(emptyList(), ideContext).asSubComponent()
|
||||
private val templateComponent = TemplatesComponent(ideContext, uiEditorUsagesStats).asSubComponent()
|
||||
|
||||
private val tabPanel = JBTabbedPane().apply {
|
||||
add("Template", templateComponent.component)
|
||||
@@ -42,11 +43,11 @@ class ModuleSettingsComponent(
|
||||
}
|
||||
|
||||
private val nameField = TextFieldComponent(
|
||||
readingContext,
|
||||
ideContext,
|
||||
labelText = "Name",
|
||||
onValueUpdate = { value ->
|
||||
module?.name = value
|
||||
eventManager.fireListeners(null)
|
||||
ideContext.eventManager.fireListeners(null)
|
||||
},
|
||||
validator = validateModuleName
|
||||
).asSubComponent()
|
||||
|
||||
+10
-10
@@ -1,12 +1,12 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
|
||||
|
||||
import org.jetbrains.kotlin.idea.debugger.readAction
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
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.Sourceset
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeWizard
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor.ModulesEditorComponent
|
||||
@@ -17,9 +17,9 @@ import javax.swing.JComponent
|
||||
class SecondStepWizardComponent(
|
||||
wizard: IdeWizard,
|
||||
uiEditorUsagesStats: UiEditorUsageStats
|
||||
) : WizardStepComponent(wizard.valuesReadingContext) {
|
||||
) : WizardStepComponent(wizard.ideContext) {
|
||||
private val moduleEditorSubStep =
|
||||
ModulesEditorSubStep(wizard.valuesReadingContext, uiEditorUsagesStats, ::onNodeSelected) {
|
||||
ModulesEditorSubStep(wizard.ideContext, uiEditorUsagesStats, ::onNodeSelected) {
|
||||
templatesSubStep.selectSettingWithError(it)
|
||||
}.asSubComponent()
|
||||
private val templatesSubStep = ModuleSettingsSubStep(wizard, uiEditorUsagesStats).asSubComponent()
|
||||
@@ -36,13 +36,13 @@ class SecondStepWizardComponent(
|
||||
|
||||
|
||||
class ModulesEditorSubStep(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
uiEditorUsagesStats: UiEditorUsageStats,
|
||||
onNodeSelected: (data: DisplayableSettingItem?) -> Unit,
|
||||
selectSettingWithError: (ValidationResult.ValidationError) -> Unit
|
||||
) : SubStep(readingContext) {
|
||||
) : SubStep(ideContext) {
|
||||
private val moduleSettingComponent = ModulesEditorComponent(
|
||||
readingContext,
|
||||
ideContext,
|
||||
uiEditorUsagesStats,
|
||||
onNodeSelected,
|
||||
selectSettingWithError
|
||||
@@ -62,9 +62,9 @@ class ModulesEditorSubStep(
|
||||
class ModuleSettingsSubStep(
|
||||
wizard: IdeWizard,
|
||||
uiEditorUsagesStats: UiEditorUsageStats
|
||||
) : SubStep(wizard.valuesReadingContext) {
|
||||
private val sourcesetSettingsComponent = SourcesetSettingsComponent(wizard.valuesReadingContext).asSubComponent()
|
||||
private val moduleSettingsComponent = ModuleSettingsComponent(wizard.valuesReadingContext, uiEditorUsagesStats).asSubComponent()
|
||||
) : SubStep(wizard.ideContext) {
|
||||
private val sourcesetSettingsComponent = SourcesetSettingsComponent(wizard.ideContext).asSubComponent()
|
||||
private val moduleSettingsComponent = ModuleSettingsComponent(wizard.ideContext, uiEditorUsagesStats).asSubComponent()
|
||||
private val nothingSelectedComponent = NothingSelectedComponent().asSubComponent()
|
||||
|
||||
private val panel = panel {
|
||||
|
||||
+4
-3
@@ -5,12 +5,13 @@ import com.intellij.openapi.ui.DialogWrapper
|
||||
import com.intellij.ui.ColoredListCellRenderer
|
||||
import com.intellij.ui.SimpleTextAttributes
|
||||
import com.intellij.ui.ToolbarDecorator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidSinglePlatformModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.IOSSinglePlatformModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.withAllSubModules
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import java.awt.BorderLayout
|
||||
@@ -18,8 +19,8 @@ import java.awt.Dimension
|
||||
import javax.swing.JComponent
|
||||
|
||||
class SourcesetDependenciesSettingsComponent(
|
||||
readingContext: ReadingContext
|
||||
) : DynamicComponent(readingContext) {
|
||||
ideContext: IdeContext
|
||||
) : DynamicComponent(ideContext) {
|
||||
private val sourcesetDependenciesList = SourcesetDependenciesList()
|
||||
|
||||
private val toolbarDecorator: ToolbarDecorator = ToolbarDecorator.createDecorator(sourcesetDependenciesList).apply {
|
||||
|
||||
+4
-3
@@ -1,12 +1,13 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
|
||||
|
||||
import com.intellij.ui.components.JBTabbedPane
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
|
||||
class SourcesetSettingsComponent(readingContext: ReadingContext) : DynamicComponent(readingContext) {
|
||||
private val dependenciesComponent = SourcesetDependenciesSettingsComponent(readingContext).asSubComponent()
|
||||
class SourcesetSettingsComponent(ideContext: IdeContext) : DynamicComponent(ideContext) {
|
||||
private val dependenciesComponent = SourcesetDependenciesSettingsComponent(ideContext).asSubComponent()
|
||||
|
||||
override val component = JBTabbedPane().apply {
|
||||
add("Dependencies", dependenciesComponent.component)
|
||||
|
||||
+13
-12
@@ -9,13 +9,14 @@ import com.intellij.util.ui.StatusText
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import org.jetbrains.kotlin.idea.KotlinIcons
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.Component
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.ErrorAwareComponent
|
||||
@@ -26,17 +27,17 @@ import javax.swing.JComponent
|
||||
import javax.swing.JPanel
|
||||
|
||||
class TemplatesComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
uiEditorUsagesStats: UiEditorUsageStats
|
||||
) : DynamicComponent(readingContext), ErrorAwareComponent {
|
||||
) : DynamicComponent(ideContext), ErrorAwareComponent {
|
||||
private val chooseTemplateComponent: ChooseTemplateComponent =
|
||||
ChooseTemplateComponent(readingContext) { template ->
|
||||
ChooseTemplateComponent(ideContext) { template ->
|
||||
uiEditorUsagesStats.moduleTemplatesSet++
|
||||
module?.template = template
|
||||
switchState(template)
|
||||
}
|
||||
}.asSubComponent()
|
||||
|
||||
private val templateSettingsComponent = TemplateSettingsComponent(readingContext) {
|
||||
private val templateSettingsComponent = TemplateSettingsComponent(ideContext) {
|
||||
if (MessagesEx.showOkCancelDialog(
|
||||
component,
|
||||
"Do you want to remove selected template from module",
|
||||
@@ -50,7 +51,7 @@ class TemplatesComponent(
|
||||
module?.template = null
|
||||
switchState(null)
|
||||
}
|
||||
}
|
||||
}.asSubComponent()
|
||||
|
||||
override fun findComponentWithError(error: ValidationResult.ValidationError): SettingComponent<*, *>? =
|
||||
templateSettingsComponent.findComponentWithError(error)
|
||||
@@ -84,9 +85,9 @@ class TemplatesComponent(
|
||||
}
|
||||
|
||||
class ChooseTemplateComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
private val onTemplateChosen: (Template) -> Unit
|
||||
) : DynamicComponent(readingContext) {
|
||||
) : DynamicComponent(ideContext) {
|
||||
private enum class State(val text: String) {
|
||||
MODULE_SELECTED_AND_TEMPLATES_AVAILABLE("You can configure a template for selected module"),
|
||||
MODULE_SELECTED_AND_NO_TEMPLATES_AVAILABLE("No templates available for selected module"),
|
||||
@@ -247,9 +248,9 @@ class TemplateDescriptionComponent(
|
||||
}
|
||||
|
||||
private class TemplateSettingsComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
removeTemplate: () -> Unit
|
||||
) : DynamicComponent(readingContext), ErrorAwareComponent {
|
||||
) : DynamicComponent(ideContext), ErrorAwareComponent {
|
||||
private val templateDescriptionComponent = TemplateDescriptionComponent(
|
||||
needRemoveButton = true,
|
||||
nonDefaultBackgroundColor = UIUtil.getEditorPaneBackground(),
|
||||
@@ -258,7 +259,7 @@ private class TemplateSettingsComponent(
|
||||
component.bordered(needTopEmptyBorder = false, needBottomEmptyBorder = false)
|
||||
}
|
||||
|
||||
private val settings = SettingsList(emptyList(), readingContext).apply {
|
||||
private val settings = SettingsList(emptyList(), ideContext).apply {
|
||||
component.bordered()
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -3,13 +3,14 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEdi
|
||||
import com.intellij.ui.JBColor
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ListSettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
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.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.AlwaysShownValidationIndicator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.SettingComponent
|
||||
@@ -19,11 +20,11 @@ import javax.swing.JComponent
|
||||
|
||||
|
||||
class ModulesEditorComponent(
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
uiEditorUsagesStats: UiEditorUsageStats,
|
||||
oneEntrySelected: (data: DisplayableSettingItem?) -> Unit,
|
||||
selectSettingWithError: (ValidationResult.ValidationError) -> Unit
|
||||
) : SettingComponent<List<Module>, ListSettingType<Module>>(KotlinPlugin::modules.reference, readingContext) {
|
||||
) : SettingComponent<List<Module>, ListSettingType<Module>>(KotlinPlugin::modules.reference, ideContext) {
|
||||
private val tree: ModulesEditorTree =
|
||||
ModulesEditorTree(
|
||||
onSelected = { oneEntrySelected(it) },
|
||||
@@ -41,7 +42,7 @@ class ModulesEditorComponent(
|
||||
}
|
||||
)
|
||||
|
||||
private val model = TargetsModel(tree, ::value, readingContext, uiEditorUsagesStats)
|
||||
private val model = TargetsModel(tree, ::value, ideContext, uiEditorUsagesStats)
|
||||
|
||||
override fun onInit() {
|
||||
super.onInit()
|
||||
|
||||
+4
-3
@@ -1,9 +1,10 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor
|
||||
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
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.IdeContext
|
||||
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
|
||||
import javax.swing.tree.DefaultMutableTreeNode
|
||||
import javax.swing.tree.TreePath
|
||||
@@ -12,7 +13,7 @@ import kotlin.reflect.KMutableProperty0
|
||||
class TargetsModel(
|
||||
private val tree: ModulesEditorTree,
|
||||
private val value: KMutableProperty0<List<Module>?>,
|
||||
private val readingContext: ReadingContext,
|
||||
private val ideContext: IdeContext,
|
||||
private val uiEditorUsagesStats: UiEditorUsageStats
|
||||
) {
|
||||
private val root get() = tree.model.root as DefaultMutableTreeNode
|
||||
@@ -65,7 +66,7 @@ class TargetsModel(
|
||||
fun add(module: Module) {
|
||||
uiEditorUsagesStats.modulesCreated++
|
||||
addToTheTree(module, modifyValue = true, parent = tree.selectedNode ?: root)
|
||||
with(readingContext) {
|
||||
with(ideContext) {
|
||||
module.apply { initDefaultValuesForSettings() }
|
||||
}
|
||||
}
|
||||
|
||||
+23
-22
@@ -1,10 +1,11 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
|
||||
|
||||
import com.intellij.openapi.ui.ComboBox
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.version.Version
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.label
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
|
||||
@@ -19,32 +20,32 @@ object DefaultSettingComponent {
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
fun <V : Any, T : SettingType<V>> create(
|
||||
setting: SettingReference<V, T>,
|
||||
readingContext: ReadingContext
|
||||
ideContext: IdeContext
|
||||
): SettingComponent<V, T> = when (setting.type) {
|
||||
VersionSettingType::class ->
|
||||
VersionSettingComponent(
|
||||
setting as SettingReference<Version, VersionSettingType>,
|
||||
readingContext
|
||||
ideContext
|
||||
) as SettingComponent<V, T>
|
||||
BooleanSettingType::class ->
|
||||
BooleanSettingComponent(
|
||||
setting as SettingReference<Boolean, BooleanSettingType>,
|
||||
readingContext
|
||||
ideContext
|
||||
) as SettingComponent<V, T>
|
||||
DropDownSettingType::class ->
|
||||
DropdownSettingComponent(
|
||||
setting as SettingReference<DisplayableSettingItem, DropDownSettingType<DisplayableSettingItem>>,
|
||||
readingContext
|
||||
ideContext
|
||||
) as SettingComponent<V, T>
|
||||
StringSettingType::class ->
|
||||
StringSettingComponent(
|
||||
setting as SettingReference<String, StringSettingType>,
|
||||
readingContext
|
||||
ideContext
|
||||
) as SettingComponent<V, T>
|
||||
PathSettingType::class ->
|
||||
PathSettingComponent(
|
||||
setting as SettingReference<Path, PathSettingType>,
|
||||
readingContext
|
||||
ideContext
|
||||
) as SettingComponent<V, T>
|
||||
else -> TODO(setting.type.qualifiedName!!)
|
||||
}
|
||||
@@ -52,8 +53,8 @@ object DefaultSettingComponent {
|
||||
|
||||
class VersionSettingComponent(
|
||||
reference: SettingReference<Version, VersionSettingType>,
|
||||
readingContext: ReadingContext
|
||||
) : SettingComponent<Version, VersionSettingType>(reference, readingContext) {
|
||||
ideContext: IdeContext
|
||||
) : SettingComponent<Version, VersionSettingType>(reference, ideContext) {
|
||||
private val settingLabel = label(setting.title)
|
||||
private val comboBox = ComboBox<Version>().apply {
|
||||
addItemListener { e ->
|
||||
@@ -90,17 +91,17 @@ class VersionSettingComponent(
|
||||
|
||||
class DropdownSettingComponent(
|
||||
reference: SettingReference<DisplayableSettingItem, DropDownSettingType<DisplayableSettingItem>>,
|
||||
readingContext: ReadingContext
|
||||
ideContext: IdeContext
|
||||
) : UIComponentDelegatingSettingComponent<DisplayableSettingItem, DropDownSettingType<DisplayableSettingItem>>(
|
||||
reference,
|
||||
readingContext
|
||||
ideContext
|
||||
) {
|
||||
override val uiComponent = DropDownComponent(
|
||||
readingContext = readingContext,
|
||||
ideContext = ideContext,
|
||||
initialValues = setting.type.values,
|
||||
validator = setting.validator,
|
||||
filter = { value ->
|
||||
setting.type.filter(readingContext, reference, value)
|
||||
setting.type.filter(ideContext, reference, value)
|
||||
},
|
||||
labelText = setting.title,
|
||||
onValueUpdate = { newValue -> value = newValue }
|
||||
@@ -109,13 +110,13 @@ class DropdownSettingComponent(
|
||||
|
||||
class BooleanSettingComponent(
|
||||
reference: SettingReference<Boolean, BooleanSettingType>,
|
||||
readingContext: ReadingContext
|
||||
ideContext: IdeContext
|
||||
) : UIComponentDelegatingSettingComponent<Boolean, BooleanSettingType>(
|
||||
reference,
|
||||
readingContext
|
||||
ideContext
|
||||
) {
|
||||
override val uiComponent = CheckboxComponent(
|
||||
readingContext = readingContext,
|
||||
ideContext = ideContext,
|
||||
labelText = setting.title,
|
||||
initialValue = null,
|
||||
validator = setting.validator,
|
||||
@@ -125,14 +126,14 @@ class BooleanSettingComponent(
|
||||
|
||||
class StringSettingComponent(
|
||||
reference: SettingReference<String, StringSettingType>,
|
||||
readingContext: ReadingContext,
|
||||
ideContext: IdeContext,
|
||||
showLabel: Boolean = true
|
||||
) : UIComponentDelegatingSettingComponent<String, StringSettingType>(
|
||||
reference,
|
||||
readingContext
|
||||
ideContext
|
||||
) {
|
||||
override val uiComponent = TextFieldComponent(
|
||||
readingContext = readingContext,
|
||||
ideContext = ideContext,
|
||||
initialValue = null,
|
||||
labelText = if (showLabel) setting.title else null,
|
||||
validator = setting.validator,
|
||||
@@ -142,13 +143,13 @@ class StringSettingComponent(
|
||||
|
||||
class PathSettingComponent(
|
||||
reference: SettingReference<Path, PathSettingType>,
|
||||
readingContext: ReadingContext
|
||||
ideContext: IdeContext
|
||||
) : UIComponentDelegatingSettingComponent<Path, PathSettingType>(
|
||||
reference,
|
||||
readingContext
|
||||
ideContext
|
||||
) {
|
||||
override val uiComponent = PathFieldComponent(
|
||||
readingContext = readingContext,
|
||||
ideContext = ideContext,
|
||||
labelText = setting.title,
|
||||
validator = settingValidator { path -> setting.validator.validate(this, path) },
|
||||
onValueUpdate = { newValue -> value = newValue }
|
||||
|
||||
+11
-11
@@ -1,15 +1,17 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Setting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.Displayable
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.FocusableComponent
|
||||
|
||||
abstract class SettingComponent<V : Any, T: SettingType<V>>(
|
||||
abstract class SettingComponent<V : Any, T : SettingType<V>>(
|
||||
val reference: SettingReference<V, T>,
|
||||
private val readingContext: ReadingContext
|
||||
) : DynamicComponent(readingContext), Displayable, FocusableComponent {
|
||||
ideContext: IdeContext
|
||||
) : DynamicComponent(ideContext), Displayable, FocusableComponent {
|
||||
var value: V?
|
||||
get() = reference.value
|
||||
set(value) {
|
||||
@@ -17,9 +19,7 @@ abstract class SettingComponent<V : Any, T: SettingType<V>>(
|
||||
}
|
||||
|
||||
val setting: Setting<V, T>
|
||||
get() = with(readingContext.context) {
|
||||
with(reference) { getSetting() }
|
||||
}
|
||||
get() = read { reference.setting }
|
||||
|
||||
abstract val validationIndicator: ValidationIndicator?
|
||||
|
||||
@@ -29,14 +29,14 @@ abstract class SettingComponent<V : Any, T: SettingType<V>>(
|
||||
}
|
||||
|
||||
override fun onValueUpdated(reference: SettingReference<*, *>?) {
|
||||
component.isVisible = setting.isActive(readingContext)
|
||||
component.isVisible = read { setting.isActive(this) }
|
||||
updateValidationState()
|
||||
}
|
||||
|
||||
private fun updateValidationState() {
|
||||
val value = value
|
||||
if (validationIndicator != null && value != null) {
|
||||
validationIndicator!!.updateValidationState(setting.validator.validate(readingContext, value))
|
||||
if (validationIndicator != null && value != null) read {
|
||||
validationIndicator!!.updateValidationState(setting.validator.validate(this, value))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+9
-7
@@ -1,10 +1,11 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
|
||||
|
||||
import com.intellij.ui.components.panels.VerticalLayout
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.isSpecificError
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.FocusableComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.PanelWithStatusText
|
||||
@@ -16,8 +17,8 @@ interface ErrorAwareComponent {
|
||||
|
||||
class SettingsList(
|
||||
settings: List<SettingReference<*, *>>,
|
||||
private val readingContext: ReadingContext
|
||||
) : DynamicComponent(readingContext), ErrorAwareComponent {
|
||||
private val ideContext: IdeContext
|
||||
) : DynamicComponent(ideContext), ErrorAwareComponent {
|
||||
private val panel = PanelWithStatusText(VerticalLayout(5), "This module has no settings to configure")
|
||||
|
||||
var settingComponents: List<SettingComponent<*, *>> = emptyList()
|
||||
@@ -38,15 +39,16 @@ class SettingsList(
|
||||
panel.isStatusTextVisible = settings.isEmpty()
|
||||
panel.removeAll()
|
||||
settingComponents = settings.map { setting ->
|
||||
DefaultSettingComponent.create(setting, readingContext)
|
||||
DefaultSettingComponent.create(setting, ideContext)
|
||||
}
|
||||
settingComponents.forEach { setting -> setting.onInit(); panel.add(setting.component) }
|
||||
}
|
||||
|
||||
override fun findComponentWithError(error: ValidationResult.ValidationError) =
|
||||
override fun findComponentWithError(error: ValidationResult.ValidationError) = read {
|
||||
settingComponents.firstOrNull { component ->
|
||||
val value = component.value ?: return@firstOrNull false
|
||||
val result = component.setting.validator.validate(readingContext, value)
|
||||
result isSpecificError error
|
||||
val result = component.setting.validator.validate(this, value)
|
||||
result isSpecificError error
|
||||
}
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -5,17 +5,17 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.IdeContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.UIComponent
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.valueForSetting
|
||||
import javax.swing.JComponent
|
||||
|
||||
abstract class UIComponentDelegatingSettingComponent<V : Any, T : SettingType<V>>(
|
||||
reference: SettingReference<V, T>,
|
||||
readingContext: ReadingContext
|
||||
) : SettingComponent<V, T>(reference, readingContext) {
|
||||
ideContext: IdeContext
|
||||
) : SettingComponent<V, T>(reference, ideContext) {
|
||||
abstract val uiComponent: UIComponent<V>
|
||||
|
||||
// As there is one in UIComponent
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
|
||||
typealias Checker = ReadingContext.() -> Boolean
|
||||
|
||||
val ALWAYS_AVAILABLE_CHECKER = checker { true }
|
||||
|
||||
+20
-5
@@ -1,6 +1,14 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.core.context
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Plugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.SettingSavingWizardService
|
||||
@@ -8,7 +16,7 @@ import kotlin.reflect.KClass
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
open class ReadingContext(
|
||||
val context: Context,
|
||||
protected val context: Context,
|
||||
private val servicesManager: ServicesManager,
|
||||
val isUnitTestMode: Boolean
|
||||
) {
|
||||
@@ -19,10 +27,10 @@ open class ReadingContext(
|
||||
servicesManager.serviceByClass(klass, filter) ?: error("Service ${klass.simpleName} was not found")
|
||||
|
||||
inline val <reified T : Any> PropertyReference<T>.propertyValue: T
|
||||
get() = context.propertyContext[this] as T
|
||||
get() = `access$context`.propertyContext[this] as T
|
||||
|
||||
inline val <reified V : Any, T : SettingType<V>> SettingReference<V, T>.settingValue: V
|
||||
get() = context.settingContext[this] ?: error("No value is present for setting `$this`")
|
||||
get() = `access$context`.settingContext[this] ?: error("No value is present for setting `$this`")
|
||||
|
||||
inline val <reified V : Any> KProperty1<out Plugin, PluginSetting<V, SettingType<V>>>.settingValue: V
|
||||
get() = reference.settingValue
|
||||
@@ -31,7 +39,7 @@ open class ReadingContext(
|
||||
this.reference.settingValue
|
||||
|
||||
inline fun <reified V : Any, T : SettingType<V>> SettingReference<V, T>.settingValue(): V =
|
||||
context.settingContext[this] ?: error("No value is present for setting `$this`")
|
||||
`access$context`.settingContext[this] ?: error("No value is present for setting `$this`")
|
||||
|
||||
val <V : Any, T : SettingType<V>> SettingReference<V, T>.notRequiredSettingValue: V?
|
||||
get() = context.settingContext[this]
|
||||
@@ -52,4 +60,11 @@ open class ReadingContext(
|
||||
val <V : Any> Setting<V, SettingType<V>>.savedOrDefaultValue: V?
|
||||
get() = getSavedValueForSetting() ?: defaultValue
|
||||
|
||||
val <V : Any, T : SettingType<V>> SettingReference<V, T>.setting: Setting<V, T>
|
||||
get() = with(this) { getSetting() }
|
||||
|
||||
|
||||
@PublishedApi
|
||||
internal val `access$context`: Context
|
||||
get() = context
|
||||
}
|
||||
+24
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.core.context
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||
|
||||
|
||||
open class SettingsWritingContext(context: Context, servicesManager: ServicesManager, isUnitTestMode: Boolean) :
|
||||
WritingContext(
|
||||
context,
|
||||
servicesManager,
|
||||
isUnitTestMode
|
||||
) {
|
||||
|
||||
fun <V : Any, T : SettingType<V>> SettingReference<V, T>.setValue(newValue: V) {
|
||||
context.settingContext[this] = newValue
|
||||
}
|
||||
}
|
||||
+9
-4
@@ -1,11 +1,17 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core
|
||||
/*
|
||||
* Copyright 2010-2020 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 org.jetbrains.kotlin.tools.projectWizard.core.context
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PropertyReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Task1
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.Task1Reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.ServicesManager
|
||||
|
||||
class WritingContext(
|
||||
open class WritingContext(
|
||||
context: Context,
|
||||
servicesManager: ServicesManager,
|
||||
isUnitTestMode: Boolean
|
||||
@@ -20,8 +26,7 @@ class WritingContext(
|
||||
crossinline updater: suspend ComputeContext<*>.(T) -> TaskResult<T>
|
||||
): TaskResult<Unit> = compute {
|
||||
val (newValue) = updater(propertyValue)
|
||||
context.propertyContext[this@update] = newValue
|
||||
Unit
|
||||
`access$context`.propertyContext[this@update] = newValue
|
||||
}
|
||||
|
||||
fun <T : Any> PropertyReference<List<T>>.addValues(
|
||||
+5
-5
@@ -1,6 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.ModuleConfigurator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
@@ -18,7 +19,7 @@ sealed class SettingReference<out V : Any, out T : SettingType<V>> {
|
||||
abstract val path: String
|
||||
abstract val type: KClass<out T>
|
||||
|
||||
abstract fun Context.getSetting(): Setting<V, T>
|
||||
abstract fun ReadingContext.getSetting(): Setting<V, T>
|
||||
|
||||
final override fun toString() = path
|
||||
final override fun equals(other: Any?) = other.safeAs<SettingReference<*, *>>()?.path == path
|
||||
@@ -37,8 +38,7 @@ data class PluginSettingReference<out V : Any, out T : SettingType<V>>(
|
||||
constructor(setting: PluginSetting<V, T>) :
|
||||
this(setting.path, setting.type::class as KClass<T>)
|
||||
|
||||
override fun Context.getSetting(): Setting<V, T> =
|
||||
settingContext.getPluginSetting(this@PluginSettingReference)
|
||||
override fun ReadingContext.getSetting(): Setting<V, T> = pluginSetting
|
||||
}
|
||||
|
||||
inline val <V : Any, reified T : SettingType<V>> PluginSetting<V, T>.reference: PluginSettingReference<V, T>
|
||||
@@ -55,7 +55,7 @@ sealed class ModuleConfiguratorSettingReference<V : Any, T : SettingType<V>> : S
|
||||
override val type: KClass<out T>
|
||||
get() = setting.type::class
|
||||
|
||||
override fun Context.getSetting(): Setting<V, T> = setting
|
||||
override fun ReadingContext.getSetting(): Setting<V, T> = setting
|
||||
abstract val module: Module?
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@ sealed class TemplateSettingReference<V : Any, T : SettingType<V>> : SettingRefe
|
||||
override val type: KClass<out T>
|
||||
get() = setting.type::class
|
||||
|
||||
override fun Context.getSetting(): Setting<V, T> = setting
|
||||
override fun ReadingContext.getSetting(): Setting<V, T> = setting
|
||||
abstract val module: Module?
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Failure
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.UNIT_SUCCESS
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ValidationError
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
|
||||
inline class SettingValidator<V>(val validate: ReadingContext.(V) -> ValidationResult) {
|
||||
infix fun and(other: SettingValidator<V>) = SettingValidator<V> { value ->
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.entity
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
import kotlin.reflect.KProperty1
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.service
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
|
||||
interface BuildSystemAvailabilityWizardService : WizardService {
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.core.service
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
|
||||
interface RunConfigurationsService : WizardService {
|
||||
fun ReadingContext.addRunConfigurations(configurations: List<WizardRunConfiguration>)
|
||||
|
||||
+2
@@ -6,6 +6,8 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Versions
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.PluginSettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingType
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.library.MavenArtifact
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
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.KotlinBuildSystemPluginIR
|
||||
|
||||
+5
-2
@@ -2,8 +2,11 @@ package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.cached
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.SettingsWritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
@@ -163,11 +166,11 @@ interface ModuleConfiguratorWithSettings : ModuleConfigurator {
|
||||
fun getPluginSettings(): List<PluginSettingReference<Any, SettingType<Any>>> = emptyList()
|
||||
|
||||
|
||||
fun initDefaultValuesFor(module: Module, context: Context) {
|
||||
fun SettingsWritingContext.initDefaultValuesFor(module: Module) {
|
||||
withSettingsOf(module) {
|
||||
getConfiguratorSettings().forEach { setting ->
|
||||
val defaultValue = setting.defaultValue ?: return@forEach
|
||||
context.settingContext[setting.reference] = defaultValue
|
||||
setting.reference.setValue(defaultValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSettingReference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
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.gradle.CreateGradleValueIR
|
||||
|
||||
+1
-2
@@ -1,12 +1,11 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
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.gradle.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.DefaultTargetConfigurationIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetAccessIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.buildSystemType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.isGradle
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleSubType
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ModuleConfiguratorSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.gradle
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.reference
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
|
||||
+2
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.AndroidSinglePlatformModuleConfigurator
|
||||
|
||||
+1
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.plugins.templates
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.KOTLIN_DIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Defaults.RESOURCES_DIR
|
||||
|
||||
+5
-3
@@ -3,7 +3,9 @@ package org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem
|
||||
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.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.SettingsWritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem
|
||||
@@ -86,9 +88,9 @@ class Module(
|
||||
else -> "Module"
|
||||
}
|
||||
|
||||
fun ReadingContext.initDefaultValuesForSettings() {
|
||||
configurator.safeAs<ModuleConfiguratorWithSettings>()?.initDefaultValuesFor(this@Module, context)
|
||||
template?.apply { initDefaultValuesFor(this@Module, context) }
|
||||
fun SettingsWritingContext.initDefaultValuesForSettings() {
|
||||
configurator.safeAs<ModuleConfiguratorWithSettings>()?.apply { initDefaultValuesFor(this@Module) }
|
||||
template?.apply { initDefaultValuesFor(this@Module) }
|
||||
}
|
||||
|
||||
companion object {
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@ 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.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildFileIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.buildSystem.BuildSystemPlugin
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.gradle.multiplatform.TargetConfigurationIR
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.TemplateSetting
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.asPath
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.buildList
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.ModuleIR
|
||||
|
||||
+2
@@ -7,6 +7,8 @@ package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardGradleRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.TemplateSetting
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.safeAs
|
||||
|
||||
+5
-2
@@ -3,7 +3,10 @@ package org.jetbrains.kotlin.tools.projectWizard.templates
|
||||
import org.jetbrains.kotlin.tools.projectWizard.Identificator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.SettingsOwner
|
||||
import org.jetbrains.kotlin.tools.projectWizard.WizardRunConfiguration
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.SettingsWritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.enumSettingImpl
|
||||
import org.jetbrains.kotlin.tools.projectWizard.ir.buildsystem.BuildSystemIR
|
||||
@@ -72,11 +75,11 @@ abstract class Template : SettingsOwner, EntitiesOwnerDescriptor {
|
||||
open val settings: List<TemplateSetting<*, *>> = emptyList()
|
||||
open val interceptionPoints: List<InterceptionPoint<Any>> = emptyList()
|
||||
|
||||
fun ReadingContext.initDefaultValuesFor(module: Module, context: Context) {
|
||||
fun SettingsWritingContext.initDefaultValuesFor(module: Module) {
|
||||
withSettingsOf(module) {
|
||||
settings.forEach { setting ->
|
||||
val defaultValue = setting.savedOrDefaultValue ?: return@forEach
|
||||
context.settingContext[setting.reference] = defaultValue
|
||||
setting.reference.setValue(defaultValue)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ import org.apache.velocity.runtime.RuntimeConstants
|
||||
import org.apache.velocity.runtime.RuntimeServices
|
||||
import org.apache.velocity.runtime.log.LogChute
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.div
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileFormattingService
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.FileSystemWizardService
|
||||
|
||||
+9
-2
@@ -1,5 +1,7 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard
|
||||
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.ReadingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.context.WritingContext
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.service.WizardService
|
||||
@@ -9,7 +11,8 @@ import org.jetbrains.kotlin.tools.projectWizard.phases.GenerationPhase
|
||||
|
||||
abstract class Wizard(createPlugins: PluginsCreator, val servicesManager: ServicesManager, private val isUnitTestMode: Boolean) {
|
||||
val context = Context(createPlugins, EventManager())
|
||||
val valuesReadingContext = ReadingContext(context, servicesManager, isUnitTestMode)
|
||||
val valuesReadingContext =
|
||||
ReadingContext(context, servicesManager, isUnitTestMode)
|
||||
protected val plugins = context.plugins
|
||||
protected val pluginSettings = plugins.flatMap { it.declaredSettings }.distinctBy { it.path }
|
||||
|
||||
@@ -48,7 +51,11 @@ abstract class Wizard(createPlugins: PluginsCreator, val servicesManager: Servic
|
||||
onTaskExecuting: (PipelineTask) -> Unit = {}
|
||||
): TaskResult<Unit> = computeM {
|
||||
context.checkAllRequiredSettingPresent(phases).ensure()
|
||||
val taskRunningContext = WritingContext(context, servicesManager.withServices(services), isUnitTestMode)
|
||||
val taskRunningContext = WritingContext(
|
||||
context,
|
||||
servicesManager.withServices(services),
|
||||
isUnitTestMode
|
||||
)
|
||||
taskRunningContext.validate(phases).ensure()
|
||||
taskRunningContext.saveSettingValues(phases)
|
||||
val (tasksSorted) = context.sortTasks().map { tasks ->
|
||||
|
||||
Reference in New Issue
Block a user