package org.wikipedia.descriptions; import android.annotation.TargetApi; import android.content.Context; import android.content.res.TypedArray; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.annotation.AttrRes; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.StyleRes; import android.util.AttributeSet; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import org.wikipedia.R; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; public class DescriptionEditTutorialPageView extends LinearLayout { interface Callback { void onButtonClick(@NonNull DescriptionEditTutorialPageView view); } @BindView(R.id.view_description_edit_tutorial_page_image) ImageView imageView; @BindView(R.id.view_description_edit_tutorial_page_primary_text) TextView primaryTextView; @BindView(R.id.view_description_edit_tutorial_page_secondary_text) TextView secondaryTextView; @BindView(R.id.view_description_edit_tutorial_page_tertiary_text) TextView tertiaryTextView; @BindView(R.id.view_description_edit_tutorial_page_button) TextView button; @Nullable private Callback callback; public DescriptionEditTutorialPageView(Context context) { super(context); init(null, 0, 0); } public DescriptionEditTutorialPageView(Context context, AttributeSet attrs) { super(context, attrs); init(attrs, 0, 0); } public DescriptionEditTutorialPageView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(attrs, defStyleAttr, 0); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public DescriptionEditTutorialPageView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); init(attrs, defStyleAttr, defStyleRes); } public void setCallback(@Nullable Callback callback) { this.callback = callback; } @OnClick(R.id.view_description_edit_tutorial_page_button) void onButtonClick() { if (callback != null) { callback.onButtonClick(this); } } private void init(@Nullable AttributeSet attrs, @AttrRes int defStyleAttr, @StyleRes int defStyleRes) { inflate(getContext(), R.layout.view_description_edit_tutorial_page, this); ButterKnife.bind(this); if (attrs != null) { TypedArray array = getContext().obtainStyledAttributes(attrs, R.styleable.DescriptionEditTutorialPageView, defStyleAttr, defStyleRes); Drawable image = array.getDrawable(R.styleable.DescriptionEditTutorialPageView_image); String primaryText = array.getString(R.styleable.DescriptionEditTutorialPageView_primaryText); String secondaryText = array.getString(R.styleable.DescriptionEditTutorialPageView_secondaryText); String tertiaryText = array.getString(R.styleable.DescriptionEditTutorialPageView_tertiaryText); String buttonText = array.getString(R.styleable.DescriptionEditTutorialPageView_buttonText); imageView.setImageDrawable(image); primaryTextView.setText(primaryText); secondaryTextView.setText(secondaryText); tertiaryTextView.setText(tertiaryText); button.setText(buttonText); array.recycle(); } } }