diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeContext.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeContext.kt new file mode 100644 index 00000000000..6ce8e9db015 --- /dev/null +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeContext.kt @@ -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 +} \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt index e517dbabf9b..78ac6eb923e 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/IdeWizard.kt @@ -27,6 +27,7 @@ class IdeWizard( isUnitTestMode ) { private val allSettings = plugins.flatMap { it.declaredSettings } + val ideContext = IdeContext(context, servicesManager, isUnitTestMode) init { with(valuesReadingContext) { diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt index 50bb9fccf04..003f970d40c 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/NewProjectWizardModuleBuilder.kt @@ -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) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt index 064cec3b460..bfb959d7242 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaRunConfigurationsService.kt @@ -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 diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt index e62f1ac57ec..06d64612c21 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/Component.kt @@ -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() @@ -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 > SettingReference.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 > PluginSettingPropertyReference.value: V? get() = reference.value init { - readingContext.context.eventManager.addSettingUpdaterEventListener { reference -> + ideContext.eventManager.addSettingUpdaterEventListener { reference -> if (isInitialized) onValueUpdated(reference) } } protected fun read(reader: ReadingContext.() -> T): T = - reader(readingContext) + reader(ideContext) + + protected fun write(writer: WritingContext.() -> T): T = + writer(ideContext) + + protected fun modify(modifier: SettingsWritingContext.() -> T): T = + modifier(ideContext) open fun onValueUpdated(reference: SettingReference<*, *>?) {} } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/PomWizardStepComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/PomWizardStepComponent.kt index df3df06d4d1..81bbaccfc7f 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/PomWizardStepComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/PomWizardStepComponent.kt @@ -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() diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/SubStep.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/SubStep.kt index 83061eab88e..9c24cb02812 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/SubStep.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/SubStep.kt @@ -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) { diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/WizardStepComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/WizardStepComponent.kt index ca88842bf14..c06f377da5b 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/WizardStepComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/WizardStepComponent.kt @@ -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) \ No newline at end of file + ideContext: IdeContext +) : DynamicComponent(ideContext) \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/CheckboxComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/CheckboxComponent.kt index 6850b5db36c..728711a68d3 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/CheckboxComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/CheckboxComponent.kt @@ -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? = null, onValueUpdate: (Boolean) -> Unit = {} ) : UIComponent( - readingContext, + ideContext, labelText, validator, onValueUpdate diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/DropDownComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/DropDownComponent.kt index c579590d810..8a7da49063e 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/DropDownComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/DropDownComponent.kt @@ -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( - private val readingContext: ReadingContext, + ideContext: IdeContext, initialValues: List = emptyList(), labelText: String? = null, private val filter: (T) -> Boolean = { true }, @@ -23,7 +24,7 @@ class DropDownComponent( private val iconProvider: (T) -> Icon? = { null }, onValueUpdate: (T) -> Unit = {} ) : UIComponent( - readingContext, + ideContext, labelText, validator, onValueUpdate @@ -46,8 +47,8 @@ class DropDownComponent( 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() ?.messages ?.firstOrNull() diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/PathFieldComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/PathFieldComponent.kt index 7f3fd270ec7..1de5b5082ee 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/PathFieldComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/PathFieldComponent.kt @@ -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? = null, onValueUpdate: (Path) -> Unit = {} ) : UIComponent( - readingContext, + ideContext, labelText, validator, onValueUpdate diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/TextFieldComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/TextFieldComponent.kt index 5901f750641..aade3ad018a 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/TextFieldComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/TextFieldComponent.kt @@ -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? = null, onValueUpdate: (String) -> Unit = {} ) : UIComponent( - readingContext, + ideContext, labelText, validator, onValueUpdate diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt index 5ed18216aa0..3adf2ecdf80 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/components/UIComponent.kt @@ -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( - private val readingContext: ReadingContext, + ideContext: IdeContext, labelText: String? = null, private val validator: SettingValidator? = 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( 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( } 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 + } } } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/BuildSystemTypeSettingComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/BuildSystemTypeSettingComponent.kt index f83408dde31..395fafacaee 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/BuildSystemTypeSettingComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/BuildSystemTypeSettingComponent.kt @@ -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>( BuildSystemPlugin::type.reference, - readingContext + ideContext ) { override val uiComponent: DropDownComponent = 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 } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt index 3eed518bf58..a3152414db5 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/FirstWizardStepComponent.kt @@ -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() } } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt index e994db25133..3001cc475e5 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/firstStep/ProjectTemplateSettingComponent.kt @@ -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>( ProjectTemplatesPlugin::template.reference, - readingContext + ideContext ) { override val validationIndicator: ValidationIndicator? get() = null diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt index 8ffcff6bcb1..95b66b02983 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/ModuleSettingsComponent.kt @@ -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() diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SecondStepWizardComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SecondStepWizardComponent.kt index ca930d95ce5..051008b2dcb 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SecondStepWizardComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SecondStepWizardComponent.kt @@ -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 { diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetDependenciesSettingsComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetDependenciesSettingsComponent.kt index 500fd8d8035..46c7ffd2546 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetDependenciesSettingsComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetDependenciesSettingsComponent.kt @@ -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 { diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetSettingsComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetSettingsComponent.kt index df2fe8b009e..2c891a84feb 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetSettingsComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/SourcesetSettingsComponent.kt @@ -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) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt index b5fe99c2d85..4f1d3acd5f7 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/TemplatesComponent.kt @@ -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() } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorComponent.kt index 2c5f7e4b617..64bc978a719 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/ModulesEditorComponent.kt @@ -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, ListSettingType>(KotlinPlugin::modules.reference, readingContext) { +) : SettingComponent, ListSettingType>(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() diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt index 50a14a26bec..4f16dae80c2 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/secondStep/modulesEditor/TargetsModel.kt @@ -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?>, - 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() } } } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/DefaultSettingComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/DefaultSettingComponent.kt index be6faff1d2d..0b214998844 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/DefaultSettingComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/DefaultSettingComponent.kt @@ -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 > create( setting: SettingReference, - readingContext: ReadingContext + ideContext: IdeContext ): SettingComponent = when (setting.type) { VersionSettingType::class -> VersionSettingComponent( setting as SettingReference, - readingContext + ideContext ) as SettingComponent BooleanSettingType::class -> BooleanSettingComponent( setting as SettingReference, - readingContext + ideContext ) as SettingComponent DropDownSettingType::class -> DropdownSettingComponent( setting as SettingReference>, - readingContext + ideContext ) as SettingComponent StringSettingType::class -> StringSettingComponent( setting as SettingReference, - readingContext + ideContext ) as SettingComponent PathSettingType::class -> PathSettingComponent( setting as SettingReference, - readingContext + ideContext ) as SettingComponent else -> TODO(setting.type.qualifiedName!!) } @@ -52,8 +53,8 @@ object DefaultSettingComponent { class VersionSettingComponent( reference: SettingReference, - readingContext: ReadingContext -) : SettingComponent(reference, readingContext) { + ideContext: IdeContext +) : SettingComponent(reference, ideContext) { private val settingLabel = label(setting.title) private val comboBox = ComboBox().apply { addItemListener { e -> @@ -90,17 +91,17 @@ class VersionSettingComponent( class DropdownSettingComponent( reference: SettingReference>, - readingContext: ReadingContext + ideContext: IdeContext ) : UIComponentDelegatingSettingComponent>( 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, - readingContext: ReadingContext + ideContext: IdeContext ) : UIComponentDelegatingSettingComponent( 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, - readingContext: ReadingContext, + ideContext: IdeContext, showLabel: Boolean = true ) : UIComponentDelegatingSettingComponent( 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, - readingContext: ReadingContext + ideContext: IdeContext ) : UIComponentDelegatingSettingComponent( 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 } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingComponent.kt index c706cda9d4a..542e24501b5 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingComponent.kt @@ -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>( +abstract class SettingComponent>( val reference: SettingReference, - 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>( } val setting: Setting - get() = with(readingContext.context) { - with(reference) { getSetting() } - } + get() = read { reference.setting } abstract val validationIndicator: ValidationIndicator? @@ -29,14 +29,14 @@ abstract class SettingComponent>( } 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)) } } } diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingsList.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingsList.kt index df8223b20c5..437062b2ef1 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingsList.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/SettingsList.kt @@ -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>, - 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> = 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 } + } } \ No newline at end of file diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/UIComponentDelegatingSettingComponent.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/UIComponentDelegatingSettingComponent.kt index 96b433eecba..82e151bc38c 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/UIComponentDelegatingSettingComponent.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/ui/setting/UIComponentDelegatingSettingComponent.kt @@ -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>( reference: SettingReference, - readingContext: ReadingContext -) : SettingComponent(reference, readingContext) { + ideContext: IdeContext +) : SettingComponent(reference, ideContext) { abstract val uiComponent: UIComponent // As there is one in UIComponent diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt index d2e5b6b93a8..e22538e5ef6 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/Checker.kt @@ -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 } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/ReadingContext.kt similarity index 70% rename from libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt rename to libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/ReadingContext.kt index 8e059d6a581..4b860292957 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/ReadingContext.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/ReadingContext.kt @@ -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 PropertyReference.propertyValue: T - get() = context.propertyContext[this] as T + get() = `access$context`.propertyContext[this] as T inline val > SettingReference.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 KProperty1>>.settingValue: V get() = reference.settingValue @@ -31,7 +39,7 @@ open class ReadingContext( this.reference.settingValue inline fun > SettingReference.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 > SettingReference.notRequiredSettingValue: V? get() = context.settingContext[this] @@ -52,4 +60,11 @@ open class ReadingContext( val Setting>.savedOrDefaultValue: V? get() = getSavedValueForSetting() ?: defaultValue + val > SettingReference.setting: Setting + get() = with(this) { getSetting() } + + + @PublishedApi + internal val `access$context`: Context + get() = context } \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/SettingsWritingContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/SettingsWritingContext.kt new file mode 100644 index 00000000000..efab58a2285 --- /dev/null +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/SettingsWritingContext.kt @@ -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 > SettingReference.setValue(newValue: V) { + context.settingContext[this] = newValue + } +} \ No newline at end of file diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/WritingContext.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/WritingContext.kt similarity index 74% rename from libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/WritingContext.kt rename to libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/WritingContext.kt index 48e7b2228fc..f0e766c4e96 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/WritingContext.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/context/WritingContext.kt @@ -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 ): TaskResult = compute { val (newValue) = updater(propertyValue) - context.propertyContext[this@update] = newValue - Unit + `access$context`.propertyContext[this@update] = newValue } fun PropertyReference>.addValues( diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt index bb3c8f64834..4f053608c63 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Setting.kt @@ -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> { abstract val path: String abstract val type: KClass - abstract fun Context.getSetting(): Setting + abstract fun ReadingContext.getSetting(): Setting final override fun toString() = path final override fun equals(other: Any?) = other.safeAs>()?.path == path @@ -37,8 +38,7 @@ data class PluginSettingReference>( constructor(setting: PluginSetting) : this(setting.path, setting.type::class as KClass) - override fun Context.getSetting(): Setting = - settingContext.getPluginSetting(this@PluginSettingReference) + override fun ReadingContext.getSetting(): Setting = pluginSetting } inline val > PluginSetting.reference: PluginSettingReference @@ -55,7 +55,7 @@ sealed class ModuleConfiguratorSettingReference> : S override val type: KClass get() = setting.type::class - override fun Context.getSetting(): Setting = setting + override fun ReadingContext.getSetting(): Setting = setting abstract val module: Module? } @@ -87,7 +87,7 @@ sealed class TemplateSettingReference> : SettingRefe override val type: KClass get() = setting.type::class - override fun Context.getSetting(): Setting = setting + override fun ReadingContext.getSetting(): Setting = setting abstract val module: Module? } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt index 2125c1dd7c8..763f5ff0ad2 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/SettingValidator.kt @@ -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(val validate: ReadingContext.(V) -> ValidationResult) { infix fun and(other: SettingValidator) = SettingValidator { value -> diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt index ce13a9618d6..e337e10735a 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/entity/Task.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt index f274a6811af..02a98796dff 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/BuildSystemAvailabilityWizardService.kt @@ -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 { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt index a4d8cc8ddc4..62572640a69 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/core/service/RunConfigurationsService.kt @@ -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) diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt index 29fdfd0858b..40be15bcb3b 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidModuleConfigurator.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt index 1a3e4976b20..cb5ada6e1c3 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/AndroidSinglePlatformModuleConfigurator.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt index 378eb801550..dea41683960 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/JsModuleConfigurator.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt index d505bd29a05..d8cd289c15c 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfigurator.kt @@ -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>> = 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) } } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt index ce01357a5ec..28c3b8d860d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/ModuleConfiguratorWithTests.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt index 38dc2e236b7..d7802a10bb2 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/NativeTargetConfigurator.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt index 30221671401..90e0591c3f5 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/TargetConfigurator.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt index b7bcee3a696..1b6bc401257 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/moduleConfigurators/configurators.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt index a3cf25d4527..8dbabcab228 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/StructurePlugin.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt index 4243b096e5c..f3f369a35ac 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/BuildSystemPlugin.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt index 6b962143ef3..2e142db2608 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/buildSystem/gradle/GradlePlugin.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt index 3bb211db72d..e8645d7b14d 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/KotlinPlugin.kt @@ -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.* diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt index 4641326354f..9bda79fd3ac 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/kotlin/ModulesToIRsConverter.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt index cebf20cf5df..2646b6332cc 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/plugins/templates/TemplatesPlugin.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt index fa8ccae8667..92b636ae2f1 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Module.kt @@ -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()?.initDefaultValuesFor(this@Module, context) - template?.apply { initDefaultValuesFor(this@Module, context) } + fun SettingsWritingContext.initDefaultValuesForSettings() { + configurator.safeAs()?.apply { initDefaultValuesFor(this@Module) } + template?.apply { initDefaultValuesFor(this@Module) } } companion object { diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt index 339ae99a4d7..fbbe97c1de9 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/settings/buildsystem/Sourceset.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt index 7cdf2a347f5..84e8ffa2b46 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/ConsoleJvmApplicationTemplate.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt index 59a9622d80c..4e3615fb660 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/KtorServerTemplate.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt index e7cf7eb27aa..837949c64bb 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/NativeConsoleApplicationTemplate.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt index 76a33aaace3..aace30f4112 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/SimpleJsClientTemplate.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt index 8541bacfed9..022735175c5 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/Template.kt @@ -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> = emptyList() open val interceptionPoints: List> = 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) } } } diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt index 3331369238d..c5c794b15ba 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/templates/TemplateEngine.kt @@ -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 diff --git a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt index 4a1e436a334..2c2125521b7 100644 --- a/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt +++ b/libraries/tools/new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/Wizard.kt @@ -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 = 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 ->