package nucleus.view;
import nucleus.factory.PresenterFactory;
import nucleus.factory.ReflectionPresenterFactory;
import nucleus.presenter.Presenter;
public interface ViewWithPresenter<P extends Presenter> {
/**
* Returns a current presenter factory.
*/
PresenterFactory<P> getPresenterFactory();
/**
* Sets a presenter factory.
* Call this method before onCreate/onFinishInflate to override default {@link ReflectionPresenterFactory} presenter factory.
* Use this method for presenter dependency injection.
*/
void setPresenterFactory(PresenterFactory<P> presenterFactory);
/**
* Returns a current attached presenter.
* This method is guaranteed to return a non-null value between
* onResume/onPause and onAttachedToWindow/onDetachedFromWindow calls
* if the presenter factory returns a non-null value.
*
* @return a currently attached presenter or null.
*/
P getPresenter();
}