https://github.com/scijava/scijava-listeners
https://github.com/scijava/scijava-listeners
Last synced: 10 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/scijava/scijava-listeners
- Owner: scijava
- Created: 2019-01-26T12:36:59.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2025-01-29T20:32:53.000Z (12 months ago)
- Last Synced: 2025-01-29T21:26:41.524Z (12 months ago)
- Language: Java
- Size: 40 KB
- Stars: 1
- Watchers: 7
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/scijava/scijava-listeners/actions/workflows/build.yml)
# scijava-listeners
Helper class for maintaining lists of listeners.
Usage example:
```java
public interface MyListener
{
void somethingChanged();
}
public class Listenable
{
// Create a variant of Listeners.List
private final Listeners.List< MyListener > listeners = new Listeners.SynchronizedList<>();
// Use Listeners.List.list to call registered listeners
private void notifyListeners() {
listeners.list.forEach( MyListener::somethingChanged );
}
// expose only Listeners (not Listeners.List) to allow un/registering listeners
public Listeners< MyListener > myListeners() {
return listeners;
}
}
public class Listening
{
public Listening( Listenable l ) {
l.myListeners().add( this::notifyMe );
}
void notifyMe() {
System.out.println( "something changed!");
}
}
```