- Type Parameters:
T- the type of data propagated to listeners
- All Known Subinterfaces:
CalendarPanel.CalendarDate,CalendarPanel.CalendarDateTime,CalendarPanel.CalendarZonedDateTime,ComponentValue<C,,T> EntityConditionModel.ConditionValue,EntityConditionModel.Modified,EntityEditModel.EditEvents.Deleted,EntityEditModel.EditEvents.Inserted,EntityEditModel.EditEvents.Updated,EntityEditModel.EditorValue<T>,EntityEditModel.EntityEditor,EntityEditModel.EntityEditor.Exists,EntityEditModel.EntityEditor.Modified,Event<T>,FilterModel.FilteredItems<T>,FilterModel.IncludedItems<T>,FilterModel.IncludePredicate<T>,FilterTableColumnModel.ColumnSelection.ColumnIndex,FilterTableColumnModel.HiddenColumns<C>,FilterTableColumnModel.VisibleColumns<C>,FilterTableSearchModel.Results,ImagePane.ImageValue,MultiSelection.Indexes,MultiSelection.Items<R>,Observable<T>,ObservableState,ObservableValueCollection<T,,C> ObservableValueList<T>,ObservableValueSet<T>,State,Value<T>,ValueCollection<T,,C> ValueList<T>,ValueSet<T>
- All Known Implementing Classes:
AbstractComponentValue,AbstractObserver,AbstractTextComponentValue,AbstractValue,PropertyValue
This interface provides default method implementations that delegate to observer().
There are two ways to implement this interface:
- Extend
AbstractObserver- provides concrete implementations whereobserver()returnsthis - Implement
observer()to return a delegate - useful for wrapper types (seeObservablefor an example)
All implementations are thread-safe and support concurrent access.
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic interfaceObserver.Builder<T,B extends Observer.Builder<T, B>> Builds anObserver -
Method Summary
Modifier and TypeMethodDescriptiondefault booleanaddConsumer(Consumer<? super T> consumer) Addsconsumerto thisObserver.default booleanaddListener(Runnable listener) Addslistenerto thisObserver.default booleanaddWeakConsumer(Consumer<? super T> consumer) Uses aWeakReference, addingconsumerdoes not prevent it from being garbage collected.default booleanaddWeakListener(Runnable listener) Uses aWeakReference, addinglistenerdoes not prevent it from being garbage collected.observer()Returns the underlyingObserverto which listener operations are delegated.default booleanremoveConsumer(Consumer<? super T> consumer) Removesconsumerfrom thisObserverdefault booleanremoveListener(Runnable listener) Removeslistenerfrom thisObserverdefault booleanremoveWeakConsumer(Consumer<? super T> consumer) Removesconsumerfrom thisObserver.default booleanremoveWeakListener(Runnable listener) Removeslistenerfrom thisObserverReturns a new conditionalObservernotified when this observer instance is triggered with the given valueReturns a new conditionalObservernotified when this observer instance is triggered with a value satisfying the given predicate
-
Method Details
-
addListener
Addslistenerto thisObserver. Adding the same listener a second time has no effect.- Parameters:
listener- the listener to add- Returns:
- true if this observer did not already contain the specified listener
- Throws:
NullPointerException- in case listener is null
-
removeListener
Removeslistenerfrom thisObserver- Parameters:
listener- the listener to remove- Returns:
- true if this observer contained the specified listener
-
addConsumer
Addsconsumerto thisObserver. Adding the same consumer a second time has no effect.- Parameters:
consumer- the consumer to add- Returns:
- true if this observer did not already contain the specified consumer
- Throws:
NullPointerException- in case consumer is null
-
removeConsumer
Removesconsumerfrom thisObserver- Parameters:
consumer- the consumer to remove- Returns:
- true if this observer contained the specified consumer
-
addWeakListener
Uses aWeakReference, addinglistenerdoes not prevent it from being garbage collected. Adding the same listener a second time has no effect.Note: Dead weak references accumulate until cleaned up, which happens automatically when listeners are added or removed. To trigger cleanup manually without modifying the listener set, call
removeWeakListener(Runnable)with any non-existing listener:// Clean up dead weak references observer.removeWeakListener(() -> {});- Parameters:
listener- the listener- Returns:
- true if this observer did not already contain the specified listener
-
removeWeakListener
Removeslistenerfrom thisObserver- Parameters:
listener- the listener to remove- Returns:
- true if this observer contained the specified listener
-
addWeakConsumer
Uses aWeakReference, addingconsumerdoes not prevent it from being garbage collected. Adding the same consumer a second time has no effect.Note: Dead weak references accumulate until cleaned up, which happens automatically when listeners are added or removed. To trigger cleanup manually without modifying the listener set, call
removeWeakConsumer(Consumer)with any non-existing consumer:// Clean up dead weak references observer.removeWeakConsumer(data -> {});- Parameters:
consumer- the consumer- Returns:
- true if this observer did not already contain the specified consumer
-
removeWeakConsumer
Removesconsumerfrom thisObserver.- Parameters:
consumer- the consumer to remove- Returns:
- true if this observer contained the specified consumer
-
when
Returns a new conditionalObservernotified when this observer instance is triggered with the given value- Parameters:
value- the value on which to trigger the observer- Returns:
- a new conditional
Observer
-
when
Returns a new conditionalObservernotified when this observer instance is triggered with a value satisfying the given predicate- Parameters:
predicate- the predicate on which to trigger the observer- Returns:
- a new conditional
Observer
-
observer
Returns the underlyingObserverto which listener operations are delegated.For
AbstractObserversubclasses this method returnsthis. For wrapper types, this returns the delegate observer.- Returns:
- the
Observerhandling listener management
-