diff --git a/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java b/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java index 95ca22c93363..1b0f92c0835d 100644 --- a/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java +++ b/platform/lang-api/src/com/intellij/execution/util/EnvVariablesTable.java @@ -293,6 +293,7 @@ public class EnvVariablesTable extends ListTableWithButtons return new AnActionButton[]{copyButton, pasteButton}; } + @NotNull public static Map parseEnvsFromText(String content) { Map result = new LinkedHashMap<>(); if (content != null && content.contains("=")) { diff --git a/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java b/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java index 2138bca13ea9..e587428bbf16 100644 --- a/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java +++ b/platform/lang-impl/src/com/intellij/execution/configuration/EnvironmentVariablesTextFieldWithBrowseButton.java @@ -17,6 +17,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.AnActionButton; import com.intellij.ui.AnActionButtonRunnable; +import com.intellij.ui.DocumentAdapter; import com.intellij.ui.UserActivityProviderComponent; import com.intellij.ui.table.JBTable; import com.intellij.ui.table.TableView; @@ -32,6 +33,7 @@ import org.jetbrains.annotations.Nullable; import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; +import javax.swing.event.DocumentEvent; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; import java.awt.*; @@ -55,6 +57,16 @@ public class EnvironmentVariablesTextFieldWithBrowseButton extends TextFieldWith new MyEnvironmentVariablesDialog().show(); } }); + getTextField().getDocument().addDocumentListener(new DocumentAdapter() { + @Override + protected void textChanged(@NotNull DocumentEvent e) { + if (!StringUtil.equals(stringifyEnvs(myData.getEnvs()), getText())) { + Map textEnvs = EnvVariablesTable.parseEnvsFromText(getText()); + myData = EnvironmentVariablesData.create(textEnvs, myData.isPassParentEnvs()); + fireStateChanged(); + } + } + }); } /**