ca.odell.glazedlists.event

Class GraphDependenciesListEventPublisher

Implemented Interfaces:
ListEventPublisher

public final class GraphDependenciesListEventPublisher
extends java.lang.Object
implements ListEventPublisher

Manager for distributing ListEvents to ListEventListeners. Because ListEvents must be forwarded in a safe order, the GraphDependenciesListEventPublisher manages dependencies between ListEventListeners and EventLists. Therefore any ListEventListener that fires ListEvents from within the ListEventListener.listChanged(ListEvent) method shall share the GraphDependenciesListEventPublisher with its source EventList.
Author:
Jesse Wilson

Constructor Summary

GraphDependenciesListEventPublisher()
Creates a GraphDependenciesListEventPublisher.

Method Summary

void
addDependency(EventList<E> dependency, ListEventListener<E> listener)
Requires that the specified EventList be updated before the specified ListEventListener which depends on it.
void
clearRelatedListener(Object subject, Object relatedListener)
void
clearRelatedSubject(Object listener)
boolean
dependenciesSatisfied(ca.odell.glazedlists.event.GraphDependenciesListEventPublisher.DependentListener dependentListener)
boolean
dependenciesSatisfied(ListEventListener<E> listener)
Returns true if the specified ListEventListener's required dependencies have been satisfied.
void
removeDependency(EventList<E> dependency, ListEventListener<E> listener)
Removes the specified EventList as a dependency for the specified ListEventListener.
void
setRelatedListener(Object subject, Object relatedListener)
void
setRelatedSubject(Object listener, Object relatedSubject)

Constructor Details

GraphDependenciesListEventPublisher

public GraphDependenciesListEventPublisher()

Method Details

addDependency

public void addDependency(EventList<E> dependency,
                          ListEventListener<E> listener)
Requires that the specified EventList be updated before the specified ListEventListener which depends on it. Dependencies are automatically managed by most EventLists, so this method shall only be used for EventLists that have indirect dependencies.
Specified by:
addDependency in interface ListEventPublisher

clearRelatedListener

public void clearRelatedListener(Object subject,
                                 Object relatedListener)
Specified by:
clearRelatedListener in interface ListEventPublisher

clearRelatedSubject

public void clearRelatedSubject(Object listener)
Specified by:
clearRelatedSubject in interface ListEventPublisher

dependenciesSatisfied

public boolean dependenciesSatisfied(ca.odell.glazedlists.event.GraphDependenciesListEventPublisher.DependentListener dependentListener)

dependenciesSatisfied

public boolean dependenciesSatisfied(ListEventListener<E> listener)
Returns true if the specified ListEventListener's required dependencies have been satisfied.

A dependency has been satisfied if it has been notified of the current event, either directly or indirectly.

A dependency is required if it is dependent on the event's cause, either directly or indirectly.

This method is currently broken. If an EventList fails to forward any events, it may cause a source EventList to be unsatisfied.


removeDependency

public void removeDependency(EventList<E> dependency,
                             ListEventListener<E> listener)
Removes the specified EventList as a dependency for the specified ListEventListener. This ListEventListener will continue to receive ListEvents, but there will be no dependency tracking when such events are fired.
Specified by:
removeDependency in interface ListEventPublisher

setRelatedListener

public void setRelatedListener(Object subject,
                               Object relatedListener)
Specified by:
setRelatedListener in interface ListEventPublisher

setRelatedSubject

public void setRelatedSubject(Object listener,
                              Object relatedSubject)
Specified by:
setRelatedSubject in interface ListEventPublisher

Glazed Lists, Copyright © 2003-2006 publicobject.com, O'Dell Engineering.
Documentation build by pbuilder at 2007-12-21 23:49