diff --git a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt index 5d77d0e3637..41b97b9a5ed 100644 --- a/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt +++ b/idea/src/org/jetbrains/kotlin/idea/facet/KotlinFacetEditorGeneralTab.kt @@ -87,26 +87,15 @@ class KotlinFacetEditorGeneralTab( // UI components related to MPP target platforms lateinit var targetPlatformSelectSingleCombobox: ComboBox lateinit var targetPlatformWrappers: List - lateinit var targetPlatformSelectMultipleCheckboxes: Map - private fun isTargetPlatformForceEditable() = Registry.`is`("kotlin.mpp.editTargetPlatformEnabled") - + lateinit var targetPlatformLabel: JLabel //JTextField? + var targetPlatformsCurrentlySelected: TargetPlatform? = null private lateinit var projectSettingsLink: HoverHyperlinkLabel private fun FormBuilder.addTargetPlatformComponents(): FormBuilder { return if (configuration?.settings?.isHmppEnabled == true) { - val targetPlatformsPanel = JPanel() - targetPlatformsPanel.layout = GridLayout(0, 1) - targetPlatformSelectMultipleCheckboxes.values.forEach { - targetPlatformsPanel.add(it) - it.isEnabled = isTargetPlatformForceEditable() - if (!isTargetPlatformForceEditable()) { - it.toolTipText = "The project is imported from external build system and could not be edited" - } - - } - this.addComponent(JLabel("Selected target platforms:")) - this.addLabeledComponent("", targetPlatformsPanel) + targetPlatformLabel.toolTipText = "The project is imported from external build system and could not be edited" + this.addLabeledComponent("Selected target platforms:", targetPlatformLabel) } else { this.addLabeledComponent("&Target platform: ", targetPlatformSelectSingleCombobox) } @@ -139,12 +128,9 @@ class KotlinFacetEditorGeneralTab( ) useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor } - targetPlatformSelectMultipleCheckboxes = CommonPlatforms - .allSimplePlatforms - .flatMap { it.componentPlatforms } - .sortedBy(SimplePlatform::platformName) - .associateWith { ThreeStateCheckBox(it.platformName).apply { isThirdStateEnabled = isMultiEditor } } - targetPlatformWrappers = CommonPlatforms.allDefaultTargetPlatforms.sortedBy { it.oldFashionedDescription }.map { TargetPlatformWrapper(it) } + targetPlatformWrappers = + CommonPlatforms.allDefaultTargetPlatforms.sortedBy { it.oldFashionedDescription }.map { TargetPlatformWrapper(it) } + targetPlatformLabel = JLabel() //JTextField()? targetPlatformLabel.isEditable = false targetPlatformSelectSingleCombobox = ComboBox(targetPlatformWrappers.toTypedArray()).apply { setRenderer(object : DefaultListCellRenderer() { @@ -190,12 +176,6 @@ class KotlinFacetEditorGeneralTab( useProjectSettingsCheckBox.addActionListener { updateCompilerConfigurable() } - - targetPlatformSelectMultipleCheckboxes.values.forEach { - it.addActionListener { - updateCompilerConfigurable() - } - } targetPlatformSelectSingleCombobox.addActionListener { updateCompilerConfigurable() } @@ -224,8 +204,7 @@ class KotlinFacetEditorGeneralTab( fun getChosenPlatform(): TargetPlatform? { return if (configuration?.settings?.isHmppEnabled == true) { - val simplePlatforms = targetPlatformSelectMultipleCheckboxes.filter { it.value.isSelected }.map { it.key }.toSet() - if (simplePlatforms.isEmpty()) null else TargetPlatform(simplePlatforms) + targetPlatformsCurrentlySelected } else { targetPlatformSelectSingleCombobox.selectedItemTyped?.targetPlatform } @@ -349,9 +328,6 @@ class KotlinFacetEditorGeneralTab( apiVersionComboBox.validateOnChange() coroutineSupportComboBox.validateOnChange() } - editor.targetPlatformSelectMultipleCheckboxes.values.forEach { - it.validateOnChange() - } editor.targetPlatformSelectSingleCombobox.validateOnChange() editor.updateCompilerConfigurable() @@ -389,9 +365,10 @@ class KotlinFacetEditorGeneralTab( if (!isInitialized) return validateOnce { editor.useProjectSettingsCheckBox.isSelected = configuration.settings.useProjectSettings - editor.targetPlatformSelectMultipleCheckboxes.forEach { - it.value.isSelected = configuration.settings.targetPlatform?.contains(it.key) ?: false - } + editor.targetPlatformsCurrentlySelected = configuration.settings.targetPlatform + editor.targetPlatformLabel.text = + editor.targetPlatformsCurrentlySelected?.componentPlatforms?.map { it.oldFashionedDescription }?.joinToString(", ") + ?: "" editor.targetPlatformSelectSingleCombobox.selectedItem = configuration.settings.targetPlatform?.let { val index = editor.targetPlatformWrappers.indexOf(TargetPlatformWrapper(it)) if (index >= 0) { @@ -412,7 +389,9 @@ class KotlinFacetEditorGeneralTab( with(configuration.settings) { useProjectSettings = editor.useProjectSettingsCheckBox.isSelected editor.getChosenPlatform()?.let { - if (it != targetPlatform) { + if (it != targetPlatform || + isModified // work-around due to hacked equals + ) { val platformArguments = when { it.isJvm() -> editor.compilerConfigurable.k2jvmCompilerArguments it.isJs() -> editor.compilerConfigurable.k2jsCompilerArguments