diff --git a/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditor.java b/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditor.java index cacbcc095060..4e08398599e4 100644 --- a/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditor.java +++ b/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditor.java @@ -185,10 +185,10 @@ public class ConfigurationSettingsEditor extends CompositeSettingsEditor configurationEditor) { super(settings.createFactory()); - myConfigurationEditor = (SettingsEditor)settings.getConfiguration().getConfigurationEditor(); + myConfigurationEditor = configurationEditor; myConfigurationEditor.addSettingsEditorListener(editor -> fireEditorStateChanged()); Disposer.register(this, myConfigurationEditor); myConfiguration = settings.getConfiguration(); diff --git a/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java b/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java index 94915e3c6c1f..74bda54b46ce 100644 --- a/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java +++ b/platform/execution-impl/src/com/intellij/execution/impl/ConfigurationSettingsEditorWrapper.java @@ -7,6 +7,8 @@ import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.configurations.RunConfiguration; import com.intellij.execution.configurations.WithoutOwnBeforeRunSteps; import com.intellij.execution.runners.ProgramRunner; +import com.intellij.execution.ui.FragmentedSettingsEditor; +import com.intellij.execution.ui.RunnerAndConfigurationSettingsEditor; import com.intellij.icons.AllIcons; import com.intellij.ide.DataManager; import com.intellij.ide.util.PropertiesComponent; @@ -54,8 +56,8 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor configurationEditor) { + myEditor = new ConfigurationSettingsEditor(settings, configurationEditor); myEditor.addSettingsEditorListener(editor -> fireStepsBeforeRunChanged()); Disposer.register(this, myEditor); myBeforeRunStepsPanel = new BeforeRunStepsPanel(this); @@ -91,14 +93,10 @@ public class ConfigurationSettingsEditorWrapper extends SettingsEditor createWrapper(@NotNull RunnerAndConfigurationSettings settings) { + @SuppressWarnings("unchecked") SettingsEditor configurationEditor = + (SettingsEditor)settings.getConfiguration().getConfigurationEditor(); + return configurationEditor instanceof FragmentedSettingsEditor + ? new RunnerAndConfigurationSettingsEditor(settings, configurationEditor) + : new ConfigurationSettingsEditorWrapper(settings, configurationEditor); + } } diff --git a/platform/execution-impl/src/com/intellij/execution/impl/SingleConfigurationConfigurable.java b/platform/execution-impl/src/com/intellij/execution/impl/SingleConfigurationConfigurable.java index 7daca54d5406..6a9a304d7365 100644 --- a/platform/execution-impl/src/com/intellij/execution/impl/SingleConfigurationConfigurable.java +++ b/platform/execution-impl/src/com/intellij/execution/impl/SingleConfigurationConfigurable.java @@ -98,7 +98,7 @@ public final class SingleConfigurationConfigurable { + + private final SettingsEditor myConfigurationEditor; + + public RunnerAndConfigurationSettingsEditor(RunnerAndConfigurationSettings settings, + SettingsEditor configurationEditor) { + super(settings.createFactory()); + myConfigurationEditor = configurationEditor; + myConfigurationEditor.addSettingsEditorListener(editor -> fireEditorStateChanged()); + Disposer.register(this, myConfigurationEditor); + } + + @Override + protected void resetEditorFrom(@NotNull RunnerAndConfigurationSettings s) { + myConfigurationEditor.resetFrom(s.getConfiguration()); + } + + @Override + protected void applyEditorTo(@NotNull RunnerAndConfigurationSettings s) throws ConfigurationException { + myConfigurationEditor.applyTo(s.getConfiguration()); + } + + @Override + protected @NotNull JComponent createEditor() { + return myConfigurationEditor.getComponent(); + } +}