Wizard: refactoring: rename contexts

TaskRunningContext -> WriteContext,
ValuesReadingContext -> ReadingContext
This commit is contained in:
Ilya Kirillov
2020-02-20 18:53:02 +03:00
parent 1c49b230f4
commit 7a3d730aec
55 changed files with 233 additions and 266 deletions
@@ -10,14 +10,14 @@ 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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
import org.jetbrains.plugins.gradle.service.execution.GradleExternalTaskConfigurationType
class IdeaRunConfigurationsService(private val project: Project) : RunConfigurationsService, IdeaWizardService {
override fun ValuesReadingContext.addRunConfigurations(configurations: List<WizardRunConfiguration>) {
override fun ReadingContext.addRunConfigurations(configurations: List<WizardRunConfiguration>) {
configurations.forEach { wizardConfiguration ->
if (wizardConfiguration is WizardGradleRunConfiguration && isBuildSystemAvailable(BuildSystemType.GradleKotlinDsl)) {
addGradleRunConfiguration(wizardConfiguration)
@@ -1,6 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
abstract class Component : Displayable {
@@ -15,11 +15,11 @@ abstract class Component : Displayable {
}
}
abstract class DynamicComponent(private val valuesReadingContext: ValuesReadingContext) : Component() {
abstract class DynamicComponent(private val readingContext: ReadingContext) : Component() {
//TODO do not use it in future
protected val context = valuesReadingContext.context
protected val context = readingContext.context
protected val eventManager
get() = valuesReadingContext.context.eventManager
get() = readingContext.context.eventManager
private var isInitialized: Boolean = false
@@ -29,7 +29,7 @@ abstract class DynamicComponent(private val valuesReadingContext: ValuesReadingC
}
var <V : Any, T : SettingType<V>> SettingReference<V, T>.value: V?
get() = with(valuesReadingContext) { notRequiredSettingValue() }
get() = with(readingContext) { notRequiredSettingValue() }
set(value) {
with(context) { settingContext[this@value] = value!! }
}
@@ -38,13 +38,13 @@ abstract class DynamicComponent(private val valuesReadingContext: ValuesReadingC
get() = reference.value
init {
valuesReadingContext.context.eventManager.addSettingUpdaterEventListener { reference ->
readingContext.context.eventManager.addSettingUpdaterEventListener { reference ->
if (isInitialized) onValueUpdated(reference)
}
}
protected fun <T> read(reader: ValuesReadingContext.() -> T): T =
reader(valuesReadingContext)
protected fun <T> read(reader: ReadingContext.() -> T): T =
reader(readingContext)
open fun onValueUpdated(reference: SettingReference<*, *>?) {}
}
@@ -1,7 +1,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
import com.intellij.ui.components.panels.VerticalLayout
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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.ui.setting.StringSettingComponent
@@ -9,22 +9,22 @@ import javax.swing.Box
import javax.swing.JSeparator
import javax.swing.SwingConstants
class PomWizardStepComponent(valuesReadingContext: ValuesReadingContext) : WizardStepComponent(valuesReadingContext) {
class PomWizardStepComponent(readingContext: ReadingContext) : WizardStepComponent(readingContext) {
private val groupIdComponent = StringSettingComponent(
StructurePlugin::groupId.reference,
valuesReadingContext,
readingContext,
showLabel = true
).asSubComponent()
private val artifactIdComponent = StringSettingComponent(
StructurePlugin::artifactId.reference,
valuesReadingContext,
readingContext,
showLabel = true
).asSubComponent()
private val versionComponent = StringSettingComponent(
StructurePlugin::version.reference,
valuesReadingContext,
readingContext,
showLabel = true
).asSubComponent()
@@ -1,12 +1,12 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import java.awt.BorderLayout
import javax.swing.JComponent
abstract class SubStep(
val valuesReadingContext: ValuesReadingContext
) : DynamicComponent(valuesReadingContext) {
val readingContext: ReadingContext
) : DynamicComponent(readingContext) {
protected abstract fun buildContent(): JComponent
final override val component: JComponent by lazy(LazyThreadSafetyMode.NONE) {
@@ -1,7 +1,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
abstract class WizardStepComponent(
valuesReadingContext: ValuesReadingContext
) : DynamicComponent(valuesReadingContext)
readingContext: ReadingContext
) : DynamicComponent(readingContext)
@@ -1,19 +1,17 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
import com.intellij.ui.components.JBCheckBox
import com.intellij.ui.components.JBTextField
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
class CheckboxComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
labelText: String? = null,
initialValue: Boolean? = null,
validator: SettingValidator<Boolean>? = null,
onValueUpdate: (Boolean) -> Unit = {}
) : UIComponent<Boolean>(
valuesReadingContext,
readingContext,
labelText,
validator,
onValueUpdate
@@ -3,7 +3,7 @@ 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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -12,11 +12,10 @@ import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.awt.event.ItemEvent
import javax.swing.DefaultComboBoxModel
import javax.swing.Icon
import javax.swing.JComboBox
import javax.swing.JList
class DropDownComponent<T : DisplayableSettingItem>(
private val valuesReadingContext: ValuesReadingContext,
private val readingContext: ReadingContext,
initialValues: List<T> = emptyList(),
labelText: String? = null,
private val filter: (T) -> Boolean = { true },
@@ -24,7 +23,7 @@ class DropDownComponent<T : DisplayableSettingItem>(
private val iconProvider: (T) -> Icon? = { null },
onValueUpdate: (T) -> Unit = {}
) : UIComponent<T>(
valuesReadingContext,
readingContext,
labelText,
validator,
onValueUpdate
@@ -48,7 +47,7 @@ class DropDownComponent<T : DisplayableSettingItem>(
append(" $it", SimpleTextAttributes.GRAYED_ATTRIBUTES)
}
if (this@apply.selectedItem != value) {
validator.validate(valuesReadingContext, value)
validator.validate(readingContext, value)
.safeAs<ValidationResult.ValidationError>()
?.messages
?.firstOrNull()
@@ -3,29 +3,21 @@ 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.entity.StringValidator
import org.jetbrains.kotlin.tools.projectWizard.core.entity.ValidationResult
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
import org.jetbrains.kotlin.tools.projectWizard.core.entity.settingValidator
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.Component
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.ValidationIndicator
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
import java.awt.BorderLayout
import java.nio.file.Path
import java.nio.file.Paths
import javax.swing.Icon
import javax.swing.JComponent
class PathFieldComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
labelText: String? = null,
initialValue: Path? = null,
validator: SettingValidator<Path>? = null,
onValueUpdate: (Path) -> Unit = {}
) : UIComponent<Path>(
valuesReadingContext,
readingContext,
labelText,
validator,
onValueUpdate
@@ -1,18 +1,18 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
import com.intellij.ui.components.JBTextField
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
class TextFieldComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
labelText: String? = null,
initialValue: String? = null,
validator: SettingValidator<String>? = null,
onValueUpdate: (String) -> Unit = {}
) : UIComponent<String>(
valuesReadingContext,
readingContext,
labelText,
validator,
onValueUpdate
@@ -6,9 +6,8 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
import com.intellij.openapi.Disposable
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
import org.jetbrains.kotlin.tools.projectWizard.core.service.SettingSavingWizardService
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
@@ -19,11 +18,11 @@ import java.awt.BorderLayout
import javax.swing.JComponent
abstract class UIComponent<V : Any>(
private val valuesReadingContext: ValuesReadingContext,
private val readingContext: ReadingContext,
labelText: String? = null,
private val validator: SettingValidator<V>? = null,
private val onValueUpdate: (V) -> Unit = {}
) : DynamicComponent(valuesReadingContext), ErrorAwareComponent, FocusableComponent, Disposable {
) : DynamicComponent(readingContext), ErrorAwareComponent, FocusableComponent, Disposable {
private val validationIndicator by lazy(LazyThreadSafetyMode.NONE) {
if (validator != null)
IdeaBasedComponentValidator(this, getValidatorTarget())
@@ -70,7 +69,7 @@ abstract class UIComponent<V : Any>(
fun validate(value: V) {
if (validator == null) return
if (validationIndicator == null) return
validationIndicator?.updateValidationState(validator.validate(valuesReadingContext, value))
validationIndicator?.updateValidationState(validator.validate(readingContext, value))
}
override fun focusOn() {
@@ -78,11 +77,11 @@ abstract class UIComponent<V : Any>(
}
override fun findComponentWithError(error: ValidationResult.ValidationError): FocusableComponent? = takeIf {
getUiValue()?.let { validator?.validate?.invoke(valuesReadingContext, it)?.isSpecificError(error) } == true
getUiValue()?.let { validator?.validate?.invoke(readingContext, it)?.isSpecificError(error) } == true
}
}
fun <V : Any> ValuesReadingContext.valueForSetting(
fun <V : Any> ReadingContext.valueForSetting(
uiComponent: UIComponent<V>,
setting: Setting<V, SettingType<V>>
): V? = setting.savedOrDefaultValue ?: uiComponent.getUiValue()
@@ -6,31 +6,26 @@ 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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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.ui.components.DropDownComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.valueForSetting
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.SettingComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.UIComponentDelegatingSettingComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.ValidationIndicator
import java.awt.BorderLayout
class BuildSystemTypeSettingComponent(
valuesReadingContext: ValuesReadingContext
readingContext: ReadingContext
) : UIComponentDelegatingSettingComponent<BuildSystemType, DropDownSettingType<BuildSystemType>>(
BuildSystemPlugin::type.reference,
valuesReadingContext
readingContext
) {
override val uiComponent: DropDownComponent<BuildSystemType> = DropDownComponent(
valuesReadingContext,
readingContext,
setting.type.values,
labelText = "Build System",
filter = { value -> setting.type.filter(valuesReadingContext, reference, value) },
filter = { value -> setting.type.filter(readingContext, reference, value) },
validator = setting.validator,
iconProvider = BuildSystemType::icon,
onValueUpdate = { value = it }
@@ -1,6 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
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
@@ -22,19 +22,19 @@ class FirstWizardStepComponent(wizard: IdeWizard) : WizardStepComponent(wizard.v
}
}
class BuildSystemSubStep(valuesReadingContext: ValuesReadingContext) :
SubStep(valuesReadingContext) {
private val buildSystemSetting = BuildSystemTypeSettingComponent(valuesReadingContext).asSubComponent()
class BuildSystemSubStep(readingContext: ReadingContext) :
SubStep(readingContext) {
private val buildSystemSetting = BuildSystemTypeSettingComponent(readingContext).asSubComponent()
override fun buildContent(): JComponent = panel {
add(buildSystemSetting.component, BorderLayout.CENTER)
}
}
class TemplatesSubStep(valuesReadingContext: ValuesReadingContext) :
SubStep(valuesReadingContext) {
class TemplatesSubStep(readingContext: ReadingContext) :
SubStep(readingContext) {
private val projectTemplateSettingComponent =
ProjectTemplateSettingComponent(valuesReadingContext) { projectTemplate ->
ProjectTemplateSettingComponent(readingContext) { projectTemplate ->
templateDescriptionComponent.setTemplate(projectTemplate)
}.asSubComponent()
@@ -57,7 +57,7 @@ class TemplatesSubStep(valuesReadingContext: ValuesReadingContext) :
}
read {
allModules().forEach { module ->
module.apply { initDefaultValuesForSettings(valuesReadingContext.context) }
module.apply { initDefaultValuesForSettings(readingContext.context) }
}
}
}
@@ -70,7 +70,7 @@ class TemplatesSubStep(valuesReadingContext: ValuesReadingContext) :
module.subModules.forEach(::addModule)
}
valuesReadingContext.context.settingContext[KotlinPlugin::modules.reference]
readingContext.context.settingContext[KotlinPlugin::modules.reference]
?.forEach(::addModule)
return modules
@@ -1,6 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.firstStep
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
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
@@ -13,11 +13,11 @@ import javax.swing.BorderFactory
import javax.swing.JComponent
class ProjectTemplateSettingComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
private val onSelected: (ProjectTemplate) -> Unit
) : SettingComponent<ProjectTemplate, DropDownSettingType<ProjectTemplate>>(
ProjectTemplatesPlugin::template.reference,
valuesReadingContext
readingContext
) {
override val validationIndicator: ValidationIndicator? get() = null
@@ -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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -12,7 +12,6 @@ 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.ui.DynamicComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.FocusableComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components.TextFieldComponent
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.panel
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting.SettingsList
@@ -20,15 +19,15 @@ import java.awt.BorderLayout
import javax.swing.JComponent
class ModuleSettingsComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
uiEditorUsagesStats: UiEditorUsageStats
) : DynamicComponent(valuesReadingContext) {
) : DynamicComponent(readingContext) {
private val validateModuleName =
StringValidators.shouldNotBeBlank("Module name") and
StringValidators.shouldBeValidIdentifier("Module Name", ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES)
private val moduleConfiguratorSettingsList = SettingsList(emptyList(), valuesReadingContext).asSubComponent()
private val templateComponent = TemplatesComponent(valuesReadingContext, uiEditorUsagesStats).asSubComponent()
private val moduleConfiguratorSettingsList = SettingsList(emptyList(), readingContext).asSubComponent()
private val templateComponent = TemplatesComponent(readingContext, uiEditorUsagesStats).asSubComponent()
private val tabPanel = JBTabbedPane().apply {
add("Template", templateComponent.component)
@@ -43,7 +42,7 @@ class ModuleSettingsComponent(
}
private val nameField = TextFieldComponent(
valuesReadingContext,
readingContext,
labelText = "Name",
onValueUpdate = { value ->
module?.name = value
@@ -1,7 +1,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -35,13 +35,13 @@ class SecondStepWizardComponent(
class ModulesEditorSubStep(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
uiEditorUsagesStats: UiEditorUsageStats,
onNodeSelected: (data: DisplayableSettingItem?) -> Unit,
selectSettingWithError: (ValidationResult.ValidationError) -> Unit
) : SubStep(valuesReadingContext) {
) : SubStep(readingContext) {
private val moduleSettingComponent = ModulesEditorComponent(
valuesReadingContext,
readingContext,
uiEditorUsagesStats,
onNodeSelected,
selectSettingWithError
@@ -63,7 +63,7 @@ class ModuleSettingsSubStep(
uiEditorUsagesStats: UiEditorUsageStats
) : SubStep(wizard.valuesReadingContext) {
private val sourcesetSettingsComponent = SourcesetSettingsComponent(wizard.valuesReadingContext).asSubComponent()
private val moduleSettingsComponent = ModuleSettingsComponent(valuesReadingContext, uiEditorUsagesStats).asSubComponent()
private val moduleSettingsComponent = ModuleSettingsComponent(readingContext, uiEditorUsagesStats).asSubComponent()
private val nothingSelectedComponent = NothingSelectedComponent().asSubComponent()
private val panel = panel {
@@ -5,7 +5,7 @@ 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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -18,8 +18,8 @@ import java.awt.Dimension
import javax.swing.JComponent
class SourcesetDependenciesSettingsComponent(
valuesReadingContext: ValuesReadingContext
) : DynamicComponent(valuesReadingContext) {
readingContext: ReadingContext
) : DynamicComponent(readingContext) {
private val sourcesetDependenciesList = SourcesetDependenciesList()
private val toolbarDecorator: ToolbarDecorator = ToolbarDecorator.createDecorator(sourcesetDependenciesList).apply {
@@ -1,12 +1,12 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
import com.intellij.ui.components.JBTabbedPane
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Sourceset
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
class SourcesetSettingsComponent(valuesReadingContext: ValuesReadingContext) : DynamicComponent(valuesReadingContext) {
private val dependenciesComponent = SourcesetDependenciesSettingsComponent(valuesReadingContext).asSubComponent()
class SourcesetSettingsComponent(readingContext: ReadingContext) : DynamicComponent(readingContext) {
private val dependenciesComponent = SourcesetDependenciesSettingsComponent(readingContext).asSubComponent()
override val component = JBTabbedPane().apply {
add("Dependencies", dependenciesComponent.component)
@@ -9,7 +9,7 @@ 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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -26,17 +26,17 @@ import javax.swing.JComponent
import javax.swing.JPanel
class TemplatesComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
uiEditorUsagesStats: UiEditorUsageStats
) : DynamicComponent(valuesReadingContext), ErrorAwareComponent {
) : DynamicComponent(readingContext), ErrorAwareComponent {
private val chooseTemplateComponent: ChooseTemplateComponent =
ChooseTemplateComponent(valuesReadingContext) { template ->
ChooseTemplateComponent(readingContext) { template ->
uiEditorUsagesStats.moduleTemplatesSet++
module?.template = template
switchState(template)
}
private val templateSettingsComponent = TemplateSettingsComponent(valuesReadingContext) {
private val templateSettingsComponent = TemplateSettingsComponent(readingContext) {
if (MessagesEx.showOkCancelDialog(
component,
"Do you want to remove selected template from module",
@@ -84,9 +84,9 @@ class TemplatesComponent(
}
class ChooseTemplateComponent(
private val valuesReadingContext: ValuesReadingContext,
private val readingContext: ReadingContext,
private val onTemplateChosen: (Template) -> Unit
) : DynamicComponent(valuesReadingContext) {
) : DynamicComponent(readingContext) {
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"),
@@ -105,7 +105,7 @@ class ChooseTemplateComponent(
}
private val allTemplates
get() = with(valuesReadingContext) {
get() = with(readingContext) {
TemplatesPlugin::templates.propertyValue
}
@@ -247,9 +247,9 @@ class TemplateDescriptionComponent(
}
private class TemplateSettingsComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
removeTemplate: () -> Unit
) : DynamicComponent(valuesReadingContext), ErrorAwareComponent {
) : DynamicComponent(readingContext), ErrorAwareComponent {
private val templateDescriptionComponent = TemplateDescriptionComponent(
needRemoveButton = true,
nonDefaultBackgroundColor = UIUtil.getEditorPaneBackground(),
@@ -258,7 +258,7 @@ private class TemplateSettingsComponent(
component.bordered(needTopEmptyBorder = false, needBottomEmptyBorder = false)
}
private val settings = SettingsList(emptyList(), valuesReadingContext).apply {
private val settings = SettingsList(emptyList(), readingContext).apply {
component.bordered()
}
@@ -3,7 +3,7 @@ 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.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -19,11 +19,11 @@ import javax.swing.JComponent
class ModulesEditorComponent(
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
uiEditorUsagesStats: UiEditorUsageStats,
oneEntrySelected: (data: DisplayableSettingItem?) -> Unit,
selectSettingWithError: (ValidationResult.ValidationError) -> Unit
) : SettingComponent<List<Module>, ListSettingType<Module>>(KotlinPlugin::modules.reference, valuesReadingContext) {
) : SettingComponent<List<Module>, ListSettingType<Module>>(KotlinPlugin::modules.reference, readingContext) {
private val tree: ModulesEditorTree =
ModulesEditorTree(
onSelected = { oneEntrySelected(it) },
@@ -41,7 +41,7 @@ class ModulesEditorComponent(
}
)
private val model = TargetsModel(tree, ::value, valuesReadingContext, uiEditorUsagesStats)
private val model = TargetsModel(tree, ::value, readingContext, uiEditorUsagesStats)
override fun onInit() {
super.onInit()
@@ -1,8 +1,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep.modulesEditor
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
import org.jetbrains.kotlin.tools.projectWizard.core.Context
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.ModuleKind
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
@@ -13,7 +12,7 @@ import kotlin.reflect.KMutableProperty0
class TargetsModel(
private val tree: ModulesEditorTree,
private val value: KMutableProperty0<List<Module>?>,
private val valuesReadingContext: ValuesReadingContext,
private val readingContext: ReadingContext,
private val uiEditorUsagesStats: UiEditorUsageStats
) {
private val root get() = tree.model.root as DefaultMutableTreeNode
@@ -65,7 +64,7 @@ class TargetsModel(
fun add(module: Module) {
uiEditorUsagesStats.modulesCreated++
with(valuesReadingContext) {
with(readingContext) {
module.apply { initDefaultValuesForSettings(context) }
}
addToTheTree(module, modifyValue = true, parent = tree.selectedNode ?: root)
@@ -1,7 +1,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
import com.intellij.openapi.ui.ComboBox
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.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
@@ -19,32 +19,32 @@ object DefaultSettingComponent {
@Suppress("UNCHECKED_CAST")
fun <V : Any, T : SettingType<V>> create(
setting: SettingReference<V, T>,
valuesReadingContext: ValuesReadingContext
readingContext: ReadingContext
): SettingComponent<V, T> = when (setting.type) {
VersionSettingType::class ->
VersionSettingComponent(
setting as SettingReference<Version, VersionSettingType>,
valuesReadingContext
readingContext
) as SettingComponent<V, T>
BooleanSettingType::class ->
BooleanSettingComponent(
setting as SettingReference<Boolean, BooleanSettingType>,
valuesReadingContext
readingContext
) as SettingComponent<V, T>
DropDownSettingType::class ->
DropdownSettingComponent(
setting as SettingReference<DisplayableSettingItem, DropDownSettingType<DisplayableSettingItem>>,
valuesReadingContext
readingContext
) as SettingComponent<V, T>
StringSettingType::class ->
StringSettingComponent(
setting as SettingReference<String, StringSettingType>,
valuesReadingContext
readingContext
) as SettingComponent<V, T>
PathSettingType::class ->
PathSettingComponent(
setting as SettingReference<Path, PathSettingType>,
valuesReadingContext
readingContext
) as SettingComponent<V, T>
else -> TODO(setting.type.qualifiedName!!)
}
@@ -52,8 +52,8 @@ object DefaultSettingComponent {
class VersionSettingComponent(
reference: SettingReference<Version, VersionSettingType>,
valuesReadingContext: ValuesReadingContext
) : SettingComponent<Version, VersionSettingType>(reference, valuesReadingContext) {
readingContext: ReadingContext
) : SettingComponent<Version, VersionSettingType>(reference, readingContext) {
private val settingLabel = label(setting.title)
private val comboBox = ComboBox<Version>().apply {
addItemListener { e ->
@@ -90,17 +90,17 @@ class VersionSettingComponent(
class DropdownSettingComponent(
reference: SettingReference<DisplayableSettingItem, DropDownSettingType<DisplayableSettingItem>>,
valuesReadingContext: ValuesReadingContext
readingContext: ReadingContext
) : UIComponentDelegatingSettingComponent<DisplayableSettingItem, DropDownSettingType<DisplayableSettingItem>>(
reference,
valuesReadingContext
readingContext
) {
override val uiComponent = DropDownComponent(
valuesReadingContext = valuesReadingContext,
readingContext = readingContext,
initialValues = setting.type.values,
validator = setting.validator,
filter = { value ->
setting.type.filter(valuesReadingContext, reference, value)
setting.type.filter(readingContext, reference, value)
},
labelText = setting.title,
onValueUpdate = { newValue -> value = newValue }
@@ -109,13 +109,13 @@ class DropdownSettingComponent(
class BooleanSettingComponent(
reference: SettingReference<Boolean, BooleanSettingType>,
valuesReadingContext: ValuesReadingContext
readingContext: ReadingContext
) : UIComponentDelegatingSettingComponent<Boolean, BooleanSettingType>(
reference,
valuesReadingContext
readingContext
) {
override val uiComponent = CheckboxComponent(
valuesReadingContext = valuesReadingContext,
readingContext = readingContext,
labelText = setting.title,
initialValue = null,
validator = setting.validator,
@@ -125,14 +125,14 @@ class BooleanSettingComponent(
class StringSettingComponent(
reference: SettingReference<String, StringSettingType>,
valuesReadingContext: ValuesReadingContext,
readingContext: ReadingContext,
showLabel: Boolean = true
) : UIComponentDelegatingSettingComponent<String, StringSettingType>(
reference,
valuesReadingContext
readingContext
) {
override val uiComponent = TextFieldComponent(
valuesReadingContext = valuesReadingContext,
readingContext = readingContext,
initialValue = null,
labelText = if (showLabel) setting.title else null,
validator = setting.validator,
@@ -142,13 +142,13 @@ class StringSettingComponent(
class PathSettingComponent(
reference: SettingReference<Path, PathSettingType>,
valuesReadingContext: ValuesReadingContext
readingContext: ReadingContext
) : UIComponentDelegatingSettingComponent<Path, PathSettingType>(
reference,
valuesReadingContext
readingContext
) {
override val uiComponent = PathFieldComponent(
valuesReadingContext = valuesReadingContext,
readingContext = readingContext,
labelText = setting.title,
validator = settingValidator { path -> setting.validator.validate(this, path) },
onValueUpdate = { newValue -> value = newValue }
@@ -1,6 +1,6 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.ReadingContext
import org.jetbrains.kotlin.tools.projectWizard.core.entity.*
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.Displayable
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
@@ -8,8 +8,8 @@ import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.FocusableComponent
abstract class SettingComponent<V : Any, T: SettingType<V>>(
val reference: SettingReference<V, T>,
val valuesReadingContext: ValuesReadingContext
) : DynamicComponent(valuesReadingContext), Displayable, FocusableComponent {
val readingContext: ReadingContext
) : DynamicComponent(readingContext), Displayable, FocusableComponent {
var value: V?
get() = reference.value
set(value) {
@@ -17,7 +17,7 @@ abstract class SettingComponent<V : Any, T: SettingType<V>>(
}
val setting: Setting<V, T>
get() = with(valuesReadingContext.context) {
get() = with(readingContext.context) {
with(reference) { getSetting() }
}
@@ -29,14 +29,14 @@ abstract class SettingComponent<V : Any, T: SettingType<V>>(
}
override fun onValueUpdated(reference: SettingReference<*, *>?) {
component.isVisible = setting.isActive(valuesReadingContext)
component.isVisible = setting.isActive(readingContext)
updateValidationState()
}
private fun updateValidationState() {
val value = value
if (validationIndicator != null && value != null) {
validationIndicator!!.updateValidationState(setting.validator.validate(valuesReadingContext, value))
validationIndicator!!.updateValidationState(setting.validator.validate(readingContext, value))
}
}
}
@@ -1,7 +1,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
import com.intellij.ui.components.panels.VerticalLayout
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
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.ValidationResult
import org.jetbrains.kotlin.tools.projectWizard.core.entity.isSpecificError
@@ -16,8 +16,8 @@ interface ErrorAwareComponent {
class SettingsList(
settings: List<SettingReference<*, *>>,
private val valuesReadingContext: ValuesReadingContext
) : DynamicComponent(valuesReadingContext), ErrorAwareComponent {
private val readingContext: ReadingContext
) : DynamicComponent(readingContext), ErrorAwareComponent {
private val panel = PanelWithStatusText(VerticalLayout(5), "This module has no settings to configure")
var settingComponents: List<SettingComponent<*, *>> = emptyList()
@@ -38,7 +38,7 @@ class SettingsList(
panel.isStatusTextVisible = settings.isEmpty()
panel.removeAll()
settingComponents = settings.map { setting ->
DefaultSettingComponent.create(setting, valuesReadingContext)
DefaultSettingComponent.create(setting, readingContext)
}
settingComponents.forEach { setting -> setting.onInit(); panel.add(setting.component) }
}
@@ -46,7 +46,7 @@ class SettingsList(
override fun findComponentWithError(error: ValidationResult.ValidationError) =
settingComponents.firstOrNull { component ->
val value = component.value ?: return@firstOrNull false
val result = component.setting.validator.validate(valuesReadingContext, value)
val result = component.setting.validator.validate(readingContext, value)
result isSpecificError error
}
}
@@ -5,7 +5,7 @@
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.setting
import org.jetbrains.kotlin.tools.projectWizard.core.ValuesReadingContext
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.ui.components.UIComponent
@@ -14,8 +14,8 @@ import javax.swing.JComponent
abstract class UIComponentDelegatingSettingComponent<V : Any, T : SettingType<V>>(
reference: SettingReference<V, T>,
valuesReadingContext: ValuesReadingContext
) : SettingComponent<V, T>(reference, valuesReadingContext) {
readingContext: ReadingContext
) : SettingComponent<V, T>(reference, readingContext) {
abstract val uiComponent: UIComponent<V>
// As there is one in UIComponent