package architect.commons.view; import android.content.Context; import android.util.AttributeSet; import android.widget.RelativeLayout; import javax.inject.Inject; import architect.view.HasPresenter; import mortar.ViewPresenter; /** * @author Lukasz Piliszczuk - lukasz.pili@gmail.com */ public abstract class PresentedRelativeLayout<T extends ViewPresenter> extends RelativeLayout implements HasPresenter<T> { @Inject protected T presenter; public PresentedRelativeLayout(Context context) { super(context); init(context, null, -1); } public PresentedRelativeLayout(Context context, AttributeSet attrs) { super(context, attrs); init(context, attrs, -1); } public PresentedRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context, attrs, defStyleAttr); } protected void init(Context context, AttributeSet attrs, int defStyleAttr) { } @Override protected void onAttachedToWindow() { super.onAttachedToWindow(); presenter.takeView(this); } @Override protected void onDetachedFromWindow() { presenter.dropView(this); super.onDetachedFromWindow(); } @Override public T getPresenter() { return presenter; } }