From f824f03fa2712c137a1d3315c9855a543fb56555 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 25 Aug 2020 21:17:21 +0300 Subject: [PATCH] Wizard: fix filtering values in DropDownComponent --- .../kotlin/tools/projectWizard/wizard/ui/Component.kt | 5 ++++- .../projectWizard/wizard/ui/components/DropDownComponent.kt | 6 ++++++ .../ui/setting/UIComponentDelegatingSettingComponent.kt | 6 ++---- 3 files changed, 12 insertions(+), 5 deletions(-) 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 26267b56f6e..bdc78161e69 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,6 +1,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.ui +import com.intellij.openapi.application.ApplicationManager import org.jetbrains.kotlin.tools.projectWizard.core.Context import org.jetbrains.kotlin.tools.projectWizard.core.Reader import org.jetbrains.kotlin.tools.projectWizard.core.SettingsWriter @@ -46,7 +47,9 @@ abstract class DynamicComponent(private val context: Context) : Component() { init { write { eventManager.addSettingUpdaterEventListener { reference -> - if (isInitialized) onValueUpdated(reference) + if (isInitialized) ApplicationManager.getApplication().invokeLater { + onValueUpdated(reference) + } } } } 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 7ffc49ccf77..7b3eb9e0397 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 @@ -8,6 +8,7 @@ import org.jetbrains.kotlin.tools.projectWizard.core.Context 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.core.entity.settings.SettingReference import org.jetbrains.kotlin.tools.projectWizard.settings.DisplayableSettingItem import org.jetbrains.kotlin.utils.addToStdlib.safeAs import java.awt.event.ItemEvent @@ -103,6 +104,11 @@ class DropDownComponent( uiComponent.selectedItem = newValue } + override fun onValueUpdated(reference: SettingReference<*, *>?) { + super.onValueUpdated(reference) + filterValues() + } + @Suppress("UNCHECKED_CAST") override fun getUiValue(): T? = uiComponent.selectedItem as? T } 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 e0f52ddeef9..0683b78781f 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 @@ -37,10 +37,8 @@ abstract class UIComponentDelegatingSettingComponent override fun onValueUpdated(reference: SettingReference<*, *>?) { super.onValueUpdated(reference) if (reference == this.reference) { - ApplicationManager.getApplication().invokeLater { - if (uiComponent.getUiValue() != value) { - value?.let(uiComponent::updateUiValue) - } + if (uiComponent.getUiValue() != value) { + value?.let(uiComponent::updateUiValue) } } }