From 499b59a1003200876ef4e622f514937ebbff97ae Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Fri, 23 Sep 2016 22:41:05 +0300 Subject: [PATCH] simplify ComponentWithBrowseButton: remove all action listeners on component disposing; deprecate duplicated methods --- .../openapi/ui/ComponentWithBrowseButton.java | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java b/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java index cbd5201134ea..a4a24208b4fc 100644 --- a/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java +++ b/platform/platform-api/src/com/intellij/openapi/ui/ComponentWithBrowseButton.java @@ -26,7 +26,6 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.keymap.KeymapUtil; import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; @@ -36,7 +35,6 @@ import com.intellij.ui.GuiUtils; import com.intellij.ui.UIBundle; import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.accessibility.ScreenReader; -import com.intellij.util.ui.update.LazyUiDisposable; import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -131,42 +129,43 @@ public class ComponentWithBrowseButton extends JPanel i @Nullable Project project, FileChooserDescriptor fileChooserDescriptor, TextComponentAccessor accessor) { - addBrowseFolderListener(title, description, project, fileChooserDescriptor, accessor, true); + addActionListener(new BrowseFolderActionListener<>(title, description, this, project, fileChooserDescriptor, accessor)); } + /** + * @deprecated use {@link #addBrowseFolderListener(String, String, Project, FileChooserDescriptor, TextComponentAccessor)} instead + */ public void addBrowseFolderListener(@Nullable @Nls(capitalization = Nls.Capitalization.Title) String title, @Nullable @Nls(capitalization = Nls.Capitalization.Sentence) String description, @Nullable Project project, FileChooserDescriptor fileChooserDescriptor, TextComponentAccessor accessor, boolean autoRemoveOnHide) { - addBrowseFolderListener(project, new BrowseFolderActionListener<>(title, description, this, project, fileChooserDescriptor, accessor), autoRemoveOnHide); + addBrowseFolderListener(title, description, project, fileChooserDescriptor, accessor); } + /** + * @deprecated use {@link #addActionListener(ActionListener)} instead + */ + @SuppressWarnings("UnusedParameters") public void addBrowseFolderListener(@Nullable Project project, final BrowseFolderActionListener actionListener) { - addBrowseFolderListener(project, actionListener, true); + addActionListener(actionListener); } + /** + * @deprecated use {@link #addActionListener(ActionListener)} instead + */ + @SuppressWarnings("UnusedParameters") public void addBrowseFolderListener(@Nullable Project project, final BrowseFolderActionListener actionListener, boolean autoRemoveOnHide) { - if (autoRemoveOnHide) { - new LazyUiDisposable>(null, this, this) { - @Override - protected void initialize(@NotNull Disposable parent, @NotNull ComponentWithBrowseButton child, @Nullable Project project) { - addActionListener(actionListener); - Disposer.register(child, new Disposable() { - @Override - public void dispose() { - removeActionListener(actionListener); - } - }); - } - }; - } else { - addActionListener(actionListener); - } + addActionListener(actionListener); } @Override - public void dispose() { } + public void dispose() { + ActionListener[] listeners = myBrowseButton.getActionListeners(); + for (ActionListener listener : listeners) { + myBrowseButton.removeActionListener(listener); + } + } public FixedSizeButton getButton() { return myBrowseButton; -- 2.23.3