package org.fluentlenium.core.components;
/**
* Supports lazy initialization.
*
* @param <T> type of component
*/
public interface LazyComponents<T> {
/**
* Get the lazyness of this object.
*
* @return true if it's lazy, false otherwise.
*/
boolean isLazy();
/**
* Check if the underlying lazy components are initialized.
*
* @return true if lazy components are initialized, false otherwise.
*/
boolean isLazyInitialized();
/**
* Add a lazy components initialization listener.
*
* @param listener lazy components listener
* @return true if the listener was added, false otherwise
*/
boolean addLazyComponentsListener(LazyComponentsListener<T> listener);
/**
* Remove an existing lazy components initialization listener.
*
* @param listener lazy components listener
* @return true if the listener was added, false otherwise
*/
boolean removeLazyComponentsListener(LazyComponentsListener<T> listener);
}