From aeed7fe52d57a033f512d5c27f275de7e4f9f1f1 Mon Sep 17 00:00:00 2001 From: Yaroslav Chernyshev Date: Mon, 6 Jul 2020 17:12:23 +0300 Subject: [PATCH] KT-36801 Added forgotten changes for 192 platform #KT-39989 Fixed --- .../KotlinCompilerConfigurableTab.java.192 | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 index 1357af1dcd1..20c905bef03 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java.192 @@ -9,10 +9,10 @@ import com.intellij.icons.AllIcons; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.module.ModuleManager; -import com.intellij.openapi.options.Configurable; import com.intellij.openapi.options.ConfigurationException; import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.project.Project; +import com.intellij.openapi.ui.ComboBox; import com.intellij.openapi.ui.TextComponentAccessor; import com.intellij.openapi.ui.TextFieldWithBrowseButton; import com.intellij.openapi.util.text.StringUtil; @@ -33,9 +33,8 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments; import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments; import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants; import org.jetbrains.kotlin.config.*; -import org.jetbrains.kotlin.idea.PluginStartupComponent; -import org.jetbrains.kotlin.idea.configuration.ProjectUtilsKt; import org.jetbrains.kotlin.idea.KotlinBundle; +import org.jetbrains.kotlin.idea.PluginStartupComponent; import org.jetbrains.kotlin.idea.facet.DescriptionListCellRenderer; import org.jetbrains.kotlin.idea.facet.KotlinFacet; import org.jetbrains.kotlin.idea.roots.RootUtilsKt; @@ -43,12 +42,11 @@ import org.jetbrains.kotlin.idea.util.CidrUtil; import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt; import org.jetbrains.kotlin.platform.IdePlatformKind; import org.jetbrains.kotlin.platform.PlatformUtilKt; +import org.jetbrains.kotlin.platform.TargetPlatform; import org.jetbrains.kotlin.platform.impl.JsIdePlatformUtil; import org.jetbrains.kotlin.platform.impl.JvmIdePlatformKind; import org.jetbrains.kotlin.platform.impl.JvmIdePlatformUtil; -import org.jetbrains.kotlin.config.JvmTarget; import org.jetbrains.kotlin.platform.jvm.JdkPlatform; -import org.jetbrains.kotlin.platform.TargetPlatform; import javax.swing.*; import java.util.*; @@ -327,7 +325,8 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { return VersionComparatorUtil.compare(version.getVersionString(), upperBound.getVersionString()) <= 0; } - public void onLanguageLevelChanged(VersionView languageLevel) { + public void onLanguageLevelChanged(@Nullable VersionView languageLevel) { + if (languageLevel == null) return; restrictAPIVersions(languageLevel); coroutinesPanel.setVisible(languageLevel.getVersion().compareTo(LanguageVersion.KOTLIN_1_3) < 0); } @@ -585,9 +584,9 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { @Override public void reset() { reportWarningsCheckBox.setSelected(!commonCompilerArguments.getSuppressWarnings()); - languageVersionComboBox.setSelectedItem(KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)); - onLanguageLevelChanged(getSelectedLanguageVersionView()); - apiVersionComboBox.setSelectedItem(KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)); + setSelectedItem(languageVersionComboBox, KotlinFacetSettingsKt.getLanguageVersionView(commonCompilerArguments)); + onLanguageLevelChanged((VersionView) languageVersionComboBox.getSelectedItem()); // getSelectedLanguageVersionView() replaces null + setSelectedItem(apiVersionComboBox, KotlinFacetSettingsKt.getApiVersionView(commonCompilerArguments)); coroutineSupportComboBox.setSelectedItem(CoroutineSupport.byCompilerArguments(commonCompilerArguments)); additionalArgsOptionsField.setText(compilerSettings.getAdditionalArguments()); scriptTemplatesField.setText(compilerSettings.getScriptTemplates()); @@ -613,6 +612,15 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { jvmVersionComboBox.setSelectedItem(getJvmVersionOrDefault(k2jvmCompilerArguments.getJvmTarget())); } + private static void setSelectedItem(JComboBox comboBox, VersionView versionView) { + // Imported projects might have outdated language/api versions - we display them as well (see createVersionValidator() for details) + int index = ((DefaultComboBoxModel) comboBox.getModel()).getIndexOf(versionView); + if (index == -1) + comboBox.addItem(versionView); + + comboBox.setSelectedItem(versionView); + } + @Override public void disposeUIResources() { } @@ -727,6 +735,10 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { } private void createUIComponents() { + // Explicit use of DefaultComboBoxModel guarantees that setSelectedItem() can make safe cast. + languageVersionComboBox = new ComboBox<>(new DefaultComboBoxModel<>()); + apiVersionComboBox = new ComboBox<>(new DefaultComboBoxModel<>()); + // Workaround: ThreeStateCheckBox doesn't send suitable notification on state change // TODO: replace with PropertyChangerListener after fix is available in IDEA copyRuntimeFilesCheckBox = new ThreeStateCheckBox() {