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 4c3166202f2e..c20df000d867 100644 --- a/platform/execution-impl/src/com/intellij/execution/impl/SingleConfigurationConfigurable.java +++ b/platform/execution-impl/src/com/intellij/execution/impl/SingleConfigurationConfigurable.java @@ -7,10 +7,7 @@ import com.intellij.execution.RunOnTargetComboBox; import com.intellij.execution.RunnerAndConfigurationSettings; import com.intellij.execution.configurations.*; import com.intellij.execution.runners.ProgramRunner; -import com.intellij.execution.target.LanguageRuntimeType; -import com.intellij.execution.target.TargetEnvironmentAwareRunProfile; -import com.intellij.execution.target.TargetEnvironmentsConfigurable; -import com.intellij.execution.target.TargetEnvironmentsManager; +import com.intellij.execution.target.*; import com.intellij.execution.ui.RunnerAndConfigurationSettingsEditor; import com.intellij.icons.AllIcons; import com.intellij.ide.DataManager; @@ -521,7 +518,8 @@ public final class SingleConfigurationConfigurable languageRuntime = ((RunOnTargetComboBox)myRunOnComboBox).getDefaultLanguageRuntimeType(); TargetEnvironmentsConfigurable configurable = new TargetEnvironmentsConfigurable(myProject, selectedName, languageRuntime); if (ShowSettingsUtil.getInstance().editConfigurable(myWholePanel, configurable)) { - resetRunOnComboBox(selectedName); + TargetEnvironmentConfiguration lastEdited = configurable.getSelectedTargetConfig(); + resetRunOnComboBox(lastEdited != null ? lastEdited.getDisplayName() : selectedName); } }); myJBScrollPane = wrapWithScrollPane(null); diff --git a/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentDetailsConfigurable.kt b/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentDetailsConfigurable.kt index 3ad79ef79d2f..5b479be37807 100644 --- a/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentDetailsConfigurable.kt +++ b/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentDetailsConfigurable.kt @@ -32,7 +32,7 @@ internal class TargetEnvironmentDetailsConfigurable( override fun getBannerSlogan(): String = config.displayName - override fun getIcon(expanded: Boolean): Icon? = config.getTargetType().icon + override fun getIcon(expanded: Boolean): Icon = config.getTargetType().icon override fun isModified(): Boolean = allConfigurables().any { it.isModified } diff --git a/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsConfigurable.kt b/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsConfigurable.kt index 9ee5bf56ac4b..4209e6670b3f 100644 --- a/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsConfigurable.kt +++ b/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsConfigurable.kt @@ -34,7 +34,7 @@ class TargetEnvironmentsConfigurable(project: Project, override fun createComponent(): JComponent = editor.createComponent() - override fun getHelpTopic(): String? = "reference.remote.targets" + override fun getHelpTopic(): String = "reference.remote.targets" override fun apply() { editor.apply() @@ -48,4 +48,6 @@ class TargetEnvironmentsConfigurable(project: Project, editor.disposeUIResources() super.disposeUIResources() } + + val selectedTargetConfig: TargetEnvironmentConfiguration? get() = editor.selectedConfig } \ No newline at end of file diff --git a/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsMasterDetails.kt b/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsMasterDetails.kt index e97f14fc29f9..60f32935522a 100644 --- a/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsMasterDetails.kt +++ b/platform/execution-impl/src/com/intellij/execution/target/TargetEnvironmentsMasterDetails.kt @@ -22,6 +22,10 @@ class TargetEnvironmentsMasterDetails @JvmOverloads constructor( private val defaultLanguageRuntime: LanguageRuntimeType<*>? ) : MasterDetailsComponent() { + private var _lastSelectedConfig: TargetEnvironmentConfiguration? = null + internal val selectedConfig: TargetEnvironmentConfiguration? + get() = myCurrentConfigurable?.editableObject as? TargetEnvironmentConfiguration ?: _lastSelectedConfig + init { // note that `MasterDetailsComponent` does not work without `initTree()` initTree() @@ -83,6 +87,11 @@ class TargetEnvironmentsMasterDetails @JvmOverloads constructor( addedConfigs.forEach { TargetEnvironmentsManager.instance.addTarget(it) } } + override fun disposeUIResources() { + _lastSelectedConfig = selectedObject as? TargetEnvironmentConfiguration + super.disposeUIResources() + } + private fun allTargets() = TargetEnvironmentsManager.instance.targets.resolvedConfigs() private fun addTargetNode(config: TargetEnvironmentConfiguration): MyNode {