ProjectAres/PGM/src/main/java/tc/oc/pgm/filters/FilterDispatcher.java

37 lines
1.6 KiB
Java

package tc.oc.pgm.filters;
import java.util.function.Consumer;
public interface FilterDispatcher {
/**
* Register the given {@link FilterListener} to receive notifications of changes to the response
* of the given {@link Filter} to any {@link Filterable} assignable to the given scope.
*
* The listener is immediately notified of the current filter response for all existing filterables.
*/
<F extends Filterable<?>> void onChange(Class<F> scope, Filter filter, FilterListener<? super F> listener);
void onChange(Filter filter, FilterListener<? super Filterable<?>> listener);
/**
* Register the given listener to be notified whenever the response of the given {@link Filter}
* changes from DENY to ALLOW for any {@link Filterable} assignable to the given scope.
*
* The listener is immediately notified of any existing filterables that are currently ALLOWed by the filter.
*/
<F extends Filterable<?>> void onRise(Class<F> scope, Filter filter, Consumer<? super F> listener);
void onRise(Filter filter, Consumer<? super Filterable<?>> listener);
/**
* Register the given listener to be notified whenever the response of the given {@link Filter}
* changes from ALLOW to DENY for any {@link Filterable} assignable to the given scope.
*
* The listener is immediately notified of any existing filterables that are currently DENYed by the filter.
*/
<F extends Filterable<?>> void onFall(Class<F> scope, Filter filter, Consumer<? super F> listener);
void onFall(Filter filter, Consumer<? super Filterable<?>> listener);
}