From 6b887c4c0ccb090517eca1de5c1650d8cdf81397 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Wed, 14 Apr 2021 23:20:49 +0300 Subject: [PATCH] ui-dsl: remove code duplication GitOrigin-RevId: d9fb30780370c03f14dd4415ffd74bccf686f4aa --- .../diff/settings/ExternalDiffSettingsPanel.kt | 14 ++------------ .../src/com/intellij/ui/layout/LayoutBuilder.kt | 5 +---- .../intellij/ui/layout/migLayout/MigLayoutRow.kt | 2 ++ 3 files changed, 5 insertions(+), 16 deletions(-) diff --git a/platform/diff-impl/src/com/intellij/diff/settings/ExternalDiffSettingsPanel.kt b/platform/diff-impl/src/com/intellij/diff/settings/ExternalDiffSettingsPanel.kt index 5465dccaed75..d2dfc5d3e9fb 100644 --- a/platform/diff-impl/src/com/intellij/diff/settings/ExternalDiffSettingsPanel.kt +++ b/platform/diff-impl/src/com/intellij/diff/settings/ExternalDiffSettingsPanel.kt @@ -31,7 +31,6 @@ import com.intellij.openapi.ui.TextFieldWithBrowseButton import com.intellij.openapi.util.NlsContexts import com.intellij.openapi.util.text.StringUtil import com.intellij.ui.layout.* -import javax.swing.AbstractButton import javax.swing.JComponent class ExternalDiffSettingsPanel { @@ -43,7 +42,7 @@ class ExternalDiffSettingsPanel { panel = panel { blockRow { val diffEnabled = checkBox(DiffBundle.message("settings.external.diff.enable.external.diff.tool"), settings::isDiffEnabled) - enableSubRowsIfSelected(diffEnabled.component) + enableSubRowsIf(diffEnabled.component.selected) row { row(DiffBundle.message("settings.external.diff.path.to.executable")) { @@ -68,7 +67,7 @@ class ExternalDiffSettingsPanel { blockRow { val mergeEnabled = checkBox(DiffBundle.message("settings.external.diff.enable.external.merge.tool"), settings::isMergeEnabled) - enableSubRowsIfSelected(mergeEnabled.component) + enableSubRowsIf(mergeEnabled.component.selected) row { row(DiffBundle.message("settings.external.diff.path.to.executable.merge")) { @@ -111,15 +110,6 @@ class ExternalDiffSettingsPanel { panel.reset() } - private fun Row.enableSubRowsIfSelected(button: AbstractButton): Row { - subRowsEnabled = button.isSelected - button.addChangeListener { - subRowsEnabled = button.isSelected - button.parent?.repaint() // Repaint all dependent components in sync - } - return this - } - private fun Cell.executableTextField(title: @NlsContexts.DialogTitle String, modelGet: () -> String, modelSet: (String) -> Unit): CellBuilder { diff --git a/platform/platform-impl/src/com/intellij/ui/layout/LayoutBuilder.kt b/platform/platform-impl/src/com/intellij/ui/layout/LayoutBuilder.kt index 6a3af8211a8f..ed5b29f1e5cd 100644 --- a/platform/platform-impl/src/com/intellij/ui/layout/LayoutBuilder.kt +++ b/platform/platform-impl/src/com/intellij/ui/layout/LayoutBuilder.kt @@ -76,8 +76,5 @@ fun FileChooserDescriptor.chooseFile(event: AnActionEvent, fileChosen: (chosenFi } fun Row.attachSubRowsEnabled(component: AbstractButton) { - subRowsEnabled = component.isSelected - component.addChangeListener { - subRowsEnabled = component.isSelected - } + enableSubRowsIf(component.selected) } diff --git a/platform/platform-impl/src/com/intellij/ui/layout/migLayout/MigLayoutRow.kt b/platform/platform-impl/src/com/intellij/ui/layout/migLayout/MigLayoutRow.kt index 7dab185f8ab6..bddd2a063645 100644 --- a/platform/platform-impl/src/com/intellij/ui/layout/migLayout/MigLayoutRow.kt +++ b/platform/platform-impl/src/com/intellij/ui/layout/migLayout/MigLayoutRow.kt @@ -155,6 +155,8 @@ internal class MigLayoutRow(private val parent: MigLayoutRow?, it.enabled = value it.subRowsEnabled = value } + + components.firstOrNull()?.parent?.repaint() // Repaint all dependent components in sync } override var subRowsVisible = true