Add weak listener registration methods to WeakListenerHolder (#5509)
This commit is contained in:
@@ -20,14 +20,19 @@ package org.jackhuang.hmcl.ui;
|
||||
import javafx.beans.InvalidationListener;
|
||||
import javafx.beans.WeakInvalidationListener;
|
||||
import javafx.beans.value.ChangeListener;
|
||||
import javafx.beans.value.ObservableValue;
|
||||
import javafx.beans.value.WeakChangeListener;
|
||||
import javafx.collections.ListChangeListener;
|
||||
import javafx.collections.WeakListChangeListener;
|
||||
import org.jackhuang.hmcl.event.Event;
|
||||
import org.jackhuang.hmcl.event.EventManager;
|
||||
import org.jackhuang.hmcl.event.EventPriority;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class WeakListenerHolder {
|
||||
public final class WeakListenerHolder {
|
||||
private final List<Object> refs = new ArrayList<>(0);
|
||||
|
||||
public WeakListenerHolder() {
|
||||
@@ -48,6 +53,22 @@ public class WeakListenerHolder {
|
||||
return new WeakListChangeListener<>(listener);
|
||||
}
|
||||
|
||||
public <T extends Event> void registerWeak(EventManager<T> manager, Consumer<T> consumer) {
|
||||
refs.add(manager.registerWeak(consumer));
|
||||
}
|
||||
|
||||
public <T extends Event> void registerWeak(EventManager<T> manager, Consumer<T> consumer, EventPriority priority) {
|
||||
refs.add(manager.registerWeak(consumer, priority));
|
||||
}
|
||||
|
||||
public <T> void onWeakChange(ObservableValue<T> value, Consumer<T> consumer) {
|
||||
refs.add(FXUtils.onWeakChange(value, consumer));
|
||||
}
|
||||
|
||||
public <T> void onWeakChangeAndOperate(ObservableValue<T> value, Consumer<T> consumer) {
|
||||
refs.add(FXUtils.onWeakChangeAndOperate(value, consumer));
|
||||
}
|
||||
|
||||
public void add(Object obj) {
|
||||
refs.add(obj);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user