package support.ui.content;
import android.content.Context;
import android.support.annotation.DrawableRes;
import android.support.annotation.StringRes;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import com.anthony.rxlibrary.R;
import butterknife.ButterKnife;
import support.ui.utilities.ViewUtils;
public class DefaultErrorView extends FrameLayout implements ErrorView, View.OnClickListener {
private ImageView imageView;
private TextView titleTextView;
private TextView subtitleTextView;
private OnErrorViewClickListener listener;
public DefaultErrorView(Context context) {
super(context);
initialize(context);
}
private void initialize(Context context) {
View view = LayoutInflater.from(context).inflate(R.layout.support_ui_view_error, this, false);
addView(view);
}
@Override
protected void onAttachedToWindow() {
super.onAttachedToWindow();
setOnClickListener(this);
}
@Override
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
setOnClickListener(null);
listener = null;
}
@Override
public DefaultErrorView buildErrorImageView(@DrawableRes int drawableRes) {
if (imageView() != null) {
imageView().setImageResource(drawableRes);
}
return this;
}
@Override
public DefaultErrorView buildErrorTitle(@StringRes int stringRes) {
return buildErrorTitle(getContext().getString(stringRes));
}
@Override
public DefaultErrorView buildErrorTitle(String title) {
if (titleTextView() != null) {
titleTextView().setText(title);
}
return this;
}
@Override
public DefaultErrorView buildErrorSubtitle(@StringRes int stringRes) {
return buildErrorSubtitle(getContext().getString(stringRes));
}
@Override
public DefaultErrorView buildErrorSubtitle(String subtitle) {
if (subtitleTextView() != null) {
subtitleTextView().setText(subtitle);
}
return this;
}
@Override
public ErrorView shouldDisplayErrorSubtitle(boolean display) {
ViewUtils.setGone(subtitleTextView(), !display);
return this;
}
@Override
public ErrorView shouldDisplayErrorTitle(boolean display) {
ViewUtils.setGone(titleTextView(), !display);
return this;
}
@Override
public ErrorView shouldDisplayErrorImageView(boolean display) {
ViewUtils.setGone(imageView(), !display);
return this;
}
public TextView titleTextView() {
if (titleTextView == null) {
titleTextView = ButterKnife.findById(this, R.id.support_ui_error_title);
}
return titleTextView;
}
public TextView subtitleTextView() {
if (subtitleTextView == null) {
subtitleTextView = ButterKnife.findById(this, R.id.support_ui_error_subtitle);
}
return subtitleTextView;
}
public ImageView imageView() {
if (imageView == null) {
imageView = ButterKnife.findById(this, R.id.support_ui_error_image_view);
}
return imageView;
}
@Override
public void onClick(View v) {
if (listener != null) {
listener.onErrorViewClick(v);
}
}
@Override
public void setOnErrorViewClickListener(OnErrorViewClickListener listener) {
this.listener = listener;
}
}