MPP: fix bug with displaying empty Kotlin targets in facet settings
This commit is contained in:
committed by
Mikhail Glukhikh
parent
b4163f953f
commit
622c9bedad
@@ -21,7 +21,6 @@ import com.intellij.facet.ui.FacetEditorContext
|
|||||||
import com.intellij.facet.ui.FacetEditorValidator
|
import com.intellij.facet.ui.FacetEditorValidator
|
||||||
import com.intellij.facet.ui.FacetValidatorsManager
|
import com.intellij.facet.ui.FacetValidatorsManager
|
||||||
import org.jetbrains.kotlin.idea.facet.KotlinFacetEditorGeneralTab.EditorComponent
|
import org.jetbrains.kotlin.idea.facet.KotlinFacetEditorGeneralTab.EditorComponent
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform
|
|
||||||
|
|
||||||
class KotlinLibraryValidatorCreator : KotlinFacetValidatorCreator() {
|
class KotlinLibraryValidatorCreator : KotlinFacetValidatorCreator() {
|
||||||
override fun create(editor: EditorComponent, validatorsManager: FacetValidatorsManager, editorContext: FacetEditorContext): FacetEditorValidator {
|
override fun create(editor: EditorComponent, validatorsManager: FacetValidatorsManager, editorContext: FacetEditorContext): FacetEditorValidator {
|
||||||
@@ -29,6 +28,6 @@ class KotlinLibraryValidatorCreator : KotlinFacetValidatorCreator() {
|
|||||||
DelegatingLibrariesValidatorContext(editorContext),
|
DelegatingLibrariesValidatorContext(editorContext),
|
||||||
validatorsManager,
|
validatorsManager,
|
||||||
"kotlin"
|
"kotlin"
|
||||||
) { editor.targetPlatformComboBox.selectedItem as IdePlatform<*, *> }
|
) { editor.targetPlatformComboBox.selectedItemTyped!! }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,11 +19,13 @@ package org.jetbrains.kotlin.idea.facet
|
|||||||
import com.intellij.facet.ui.*
|
import com.intellij.facet.ui.*
|
||||||
import com.intellij.ide.actions.ShowSettingsUtilImpl
|
import com.intellij.ide.actions.ShowSettingsUtilImpl
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
|
import com.intellij.openapi.ui.ComboBox
|
||||||
import com.intellij.ui.HoverHyperlinkLabel
|
import com.intellij.ui.HoverHyperlinkLabel
|
||||||
import com.intellij.util.ui.FormBuilder
|
import com.intellij.util.ui.FormBuilder
|
||||||
import com.intellij.util.ui.ThreeStateCheckBox
|
import com.intellij.util.ui.ThreeStateCheckBox
|
||||||
import org.jetbrains.kotlin.cli.common.arguments.*
|
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.compiler.configuration.*
|
||||||
import org.jetbrains.kotlin.idea.util.onTextChange
|
import org.jetbrains.kotlin.idea.util.onTextChange
|
||||||
import org.jetbrains.kotlin.platform.IdePlatform
|
import org.jetbrains.kotlin.platform.IdePlatform
|
||||||
@@ -87,7 +89,7 @@ class KotlinFacetEditorGeneralTab(
|
|||||||
val useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor }
|
val useProjectSettingsCheckBox = ThreeStateCheckBox("Use project settings").apply { isThirdStateEnabled = isMultiEditor }
|
||||||
|
|
||||||
val targetPlatformComboBox =
|
val targetPlatformComboBox =
|
||||||
JComboBox<IdePlatform<*, *>>(IdePlatformKind.All_PLATFORMS.toTypedArray()).apply {
|
ComboBox<IdePlatform<*, *>>(IdePlatformKind.All_PLATFORMS.toTypedArray()).apply {
|
||||||
setRenderer(DescriptionListCellRenderer())
|
setRenderer(DescriptionListCellRenderer())
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -146,12 +148,12 @@ class KotlinFacetEditorGeneralTab(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private val chosenPlatform: IdePlatform<*, *>?
|
private val chosenPlatform: IdePlatform<*, *>?
|
||||||
get() = targetPlatformComboBox.selectedItem as IdePlatform<*, *>?
|
get() = targetPlatformComboBox.selectedItemTyped
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class ArgumentConsistencyValidator : FacetEditorValidator() {
|
inner class ArgumentConsistencyValidator : FacetEditorValidator() {
|
||||||
override fun check(): ValidationResult {
|
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 {
|
val primaryArguments = platform.createArguments().apply {
|
||||||
editor.compilerConfigurable.applyTo(
|
editor.compilerConfigurable.applyTo(
|
||||||
this,
|
this,
|
||||||
@@ -268,7 +270,7 @@ class KotlinFacetEditorGeneralTab(
|
|||||||
|
|
||||||
override fun isModified(): Boolean {
|
override fun isModified(): Boolean {
|
||||||
if (editor.useProjectSettingsCheckBox.isSelected != configuration.settings.useProjectSettings) return true
|
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
|
return !editor.useProjectSettingsCheckBox.isSelected && editor.compilerConfigurable.isModified
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,7 +288,7 @@ class KotlinFacetEditorGeneralTab(
|
|||||||
editor.compilerConfigurable.apply()
|
editor.compilerConfigurable.apply()
|
||||||
with(configuration.settings) {
|
with(configuration.settings) {
|
||||||
useProjectSettings = editor.useProjectSettingsCheckBox.isSelected
|
useProjectSettings = editor.useProjectSettingsCheckBox.isSelected
|
||||||
(editor.targetPlatformComboBox.selectedItem as IdePlatform<*, *>?)?.let {
|
editor.targetPlatformComboBox.selectedItemTyped?.let {
|
||||||
if (it != platform) {
|
if (it != platform) {
|
||||||
val platformArguments = when {
|
val platformArguments = when {
|
||||||
it.isJvm -> editor.compilerConfigurable.k2jvmCompilerArguments
|
it.isJvm -> editor.compilerConfigurable.k2jvmCompilerArguments
|
||||||
@@ -316,3 +318,5 @@ class KotlinFacetEditorGeneralTab(
|
|||||||
editor.compilerConfigurable.disposeUIResources()
|
editor.compilerConfigurable.disposeUIResources()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val <T> ComboBox<T>.selectedItemTyped: T? get() = selectedItem as T?
|
||||||
|
|||||||
Reference in New Issue
Block a user