From 3f7b28d840da086e22a6366ba0836bf9d8fa771e Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Mon, 27 Mar 2017 15:56:27 +0300 Subject: [PATCH] Configuration: Fix behavior of "output directory" control #KT-17088 Fixed --- .../KotlinCompilerConfigurableTab.form | 2 +- .../KotlinCompilerConfigurableTab.java | 24 ++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form index 87b3b647b21..ba9b0a7f495 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.form @@ -74,7 +74,7 @@ - + diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index 5e562d66ae7..0ee9409d888 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -56,8 +56,6 @@ import org.jetbrains.kotlin.idea.facet.KotlinFacet; import org.jetbrains.kotlin.idea.util.application.ApplicationUtilsKt; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Arrays; @@ -154,13 +152,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co "Choose Output Directory", false); - copyRuntimeFilesCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(@NotNull ChangeEvent e) { - updateOutputDirEnabled(); - } - }); - fillModuleKindList(); fillJvmVersionList(); fillLanguageAndAPIVersionList(); @@ -299,7 +290,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co } private void updateOutputDirEnabled() { - if (isEnabled) { + if (isEnabled && copyRuntimeFilesCheckBox != null) { outputDirectory.setEnabled(copyRuntimeFilesCheckBox.isSelected()); labelForOutputDirectory.setEnabled(copyRuntimeFilesCheckBox.isSelected()); } @@ -618,7 +609,6 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co public void setEnabled(boolean value) { isEnabled = value; UIUtil.setEnabled(getContentPane(), value, true); - updateOutputDirEnabled(); } public CommonCompilerArguments getCommonCompilerArguments() { @@ -652,4 +642,16 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable, Co public void setCompilerSettings(CompilerSettings compilerSettings) { this.compilerSettings = compilerSettings; } + + private void createUIComponents() { + // Workaround: ThreeStateCheckBox doesn't send suitable notification on state change + // TODO: replace with PropertyChangerListener after fix is available in IDEA + copyRuntimeFilesCheckBox = new ThreeStateCheckBox() { + @Override + public void setState(State state) { + super.setState(state); + updateOutputDirEnabled(); + } + }; + } }