From 622c9bedad9de461d5d54c24715658e6903e93cb Mon Sep 17 00:00:00 2001 From: Dmitriy Dolovov Date: Thu, 6 Sep 2018 18:45:05 +0300 Subject: [PATCH] MPP: fix bug with displaying empty Kotlin targets in facet settings --- .../idea/facet/KotlinLibraryValidatorCreator.kt | 3 +-- .../idea/facet/KotlinFacetEditorGeneralTab.kt | 16 ++++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/KotlinLibraryValidatorCreator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/KotlinLibraryValidatorCreator.kt index f7851689801..b0483fe1a0d 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/KotlinLibraryValidatorCreator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/KotlinLibraryValidatorCreator.kt @@ -21,7 +21,6 @@ import com.intellij.facet.ui.FacetEditorContext import com.intellij.facet.ui.FacetEditorValidator import com.intellij.facet.ui.FacetValidatorsManager import org.jetbrains.kotlin.idea.facet.KotlinFacetEditorGeneralTab.EditorComponent -import org.jetbrains.kotlin.platform.IdePlatform class KotlinLibraryValidatorCreator : KotlinFacetValidatorCreator() { override fun create(editor: EditorComponent, validatorsManager: FacetValidatorsManager, editorContext: FacetEditorContext): FacetEditorValidator { @@ -29,6 +28,6 @@ class KotlinLibraryValidatorCreator : KotlinFacetValidatorCreator() { DelegatingLibrariesValidatorContext(editorContext), validatorsManager, "kotlin" - ) { editor.targetPlatformComboBox.selectedItem as IdePlatform<*, *> } + ) { editor.targetPlatformComboBox.selectedItemTyped!! } } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt index 2e0f54ae216..5abb64df128 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt @@ -19,11 +19,13 @@ package org.jetbrains.kotlin.idea.facet import com.intellij.facet.ui.* import com.intellij.ide.actions.ShowSettingsUtilImpl import com.intellij.openapi.project.Project +import com.intellij.openapi.ui.ComboBox import com.intellij.ui.HoverHyperlinkLabel import com.intellij.util.ui.FormBuilder import com.intellij.util.ui.ThreeStateCheckBox import org.jetbrains.kotlin.cli.common.arguments.* -import org.jetbrains.kotlin.config.* +import org.jetbrains.kotlin.config.CompilerSettings +import org.jetbrains.kotlin.config.splitArgumentString import org.jetbrains.kotlin.idea.compiler.configuration.* import org.jetbrains.kotlin.idea.util.onTextChange import org.jetbrains.kotlin.platform.IdePlatform @@ -87,7 +89,7 @@ class KotlinFacetEditorGeneralTab( val useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor } val targetPlatformComboBox = - JComboBox>(IdePlatformKind.All_PLATFORMS.toTypedArray()).apply { + ComboBox>(IdePlatformKind.All_PLATFORMS.toTypedArray()).apply { setRenderer(DescriptionListCellRenderer()) } @@ -146,12 +148,12 @@ class KotlinFacetEditorGeneralTab( } private val chosenPlatform: IdePlatform<*, *>? - get() = targetPlatformComboBox.selectedItem as IdePlatform<*, *>? + get() = targetPlatformComboBox.selectedItemTyped } inner class ArgumentConsistencyValidator : FacetEditorValidator() { override fun check(): ValidationResult { - val platform = editor.targetPlatformComboBox.selectedItem as IdePlatform<*, *>? ?: return ValidationResult.OK + val platform = editor.targetPlatformComboBox.selectedItemTyped ?: return ValidationResult.OK val primaryArguments = platform.createArguments().apply { editor.compilerConfigurable.applyTo( this, @@ -268,7 +270,7 @@ class KotlinFacetEditorGeneralTab( override fun isModified(): Boolean { if (editor.useProjectSettingsCheckBox.isSelected != configuration.settings.useProjectSettings) return true - if (editor.targetPlatformComboBox.selectedItem != configuration.settings.platform) return true + if (editor.targetPlatformComboBox.selectedItemTyped != configuration.settings.platform) return true return !editor.useProjectSettingsCheckBox.isSelected && editor.compilerConfigurable.isModified } @@ -286,7 +288,7 @@ class KotlinFacetEditorGeneralTab( editor.compilerConfigurable.apply() with(configuration.settings) { useProjectSettings = editor.useProjectSettingsCheckBox.isSelected - (editor.targetPlatformComboBox.selectedItem as IdePlatform<*, *>?)?.let { + editor.targetPlatformComboBox.selectedItemTyped?.let { if (it != platform) { val platformArguments = when { it.isJvm -> editor.compilerConfigurable.k2jvmCompilerArguments @@ -316,3 +318,5 @@ class KotlinFacetEditorGeneralTab( editor.compilerConfigurable.disposeUIResources() } } + +val ComboBox.selectedItemTyped: T? get() = selectedItem as T?