[prev in list] [next in list] [prev in thread] [next in thread]
List: openjdk-openjfx-dev
Subject: Re: RFR: 8294809: ListenerHelper for managing and disconnecting listeners [v8]
From: Andy Goryachev <angorya () openjdk ! org>
Date: 2022-10-31 16:45:51
Message-ID: wwwRDIM3q4ye-5uW90QaqQqvQcknBc5L4CWvOivhMRc=.d53e72fa-6358-475c-84c2-1b4ed53c0980 () github ! com
[Download RAW message or body]
> Introduction
>
> There is a number of places where various listeners (strong as well as weak) are \
> added, to be later disconnected in one go. For example, Skin implementations use \
> dispose() method to clean up the listeners installed in the corresponding Control \
> (sometimes using LambdaMultiplePropertyChangeListenerHandler class).
> This pattern is also used by app developers, but there is no public utility class \
> to do that, so every one must invent their own, see for instance \
> https://github.com/andy-goryachev/FxTextEditor/blob/master/src/goryachev/fx/FxDisconnector.java
>
> Proposal
>
> It might be beneficial to create a class (ListenerHelper, feel free to suggest a \
> better name) which:
> - provides convenient methods like addChangeListener, addInvalidationListener, \
> addWeakChangeListener, etc.
> - keeps track of the listeners and the corresponding ObservableValues
> - provides a single disconnect() method to remove all the listeners in one go.
> - optionally, it should be possible to add a lambda (Runnable) to a group of \
> properties
> - optionally, there should be a boolean flag to fire the lambda immediately
> - strongly suggest implementing an IDisconnectable functional interface with a \
> single disconnect() method
> Make it Public Later
>
> Initially, I think we could place the new class in package \
> com.sun.javafx.scene.control; to be made publicly accessible later.
> Where It Will Be Useful
>
> [JDK-8294589](https://bugs.openjdk.org/browse/JDK-8294589) "MenuBarSkin: memory \
> leak when changing skin" and other skins, as a replacement for \
> LambdaMultiplePropertyChangeListenerHandler.
> https://github.com/openjdk/jfx/pull/908#:~:text=19%20hours%20ago-,8295175%3A%20SplitPaneSkinSkin%3A%20memory%20leak%20when%20changing%20skin%20%23911,-Draft
>
> https://github.com/openjdk/jfx/pull/914
Andy Goryachev has updated the pull request incrementally with one additional commit \
since the last revision:
8294809: whitespace
-------------
Changes:
- all: https://git.openjdk.org/jfx/pull/908/files
- new: https://git.openjdk.org/jfx/pull/908/files/e78ed6db..e0e0aabb
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jfx&pr=908&range=07
- incr: https://webrevs.openjdk.org/?repo=jfx&pr=908&range=06-07
Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod
Patch: https://git.openjdk.org/jfx/pull/908.diff
Fetch: git fetch https://git.openjdk.org/jfx pull/908/head:pull/908
PR: https://git.openjdk.org/jfx/pull/908
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic