package com.joanfuentes.hintcaseassets.extracontentholders;
import android.content.Context;
import android.support.v7.view.ContextThemeWrapper;
import android.support.v7.widget.AppCompatButton;
import android.view.View;
import android.view.ViewGroup;
import com.joanfuentes.hintcase.HintCase;
public class SimpleButtonContentHolder extends ExtraContentHolder {
private int width;
private int height;
private int[] rules;
private CharSequence text;
private int buttonStyleId;
private boolean closeHintOnClick;
private OnClickButtonListener onClickButtonListener;
SimpleButtonContentHolder() {
this.closeHintOnClick = false;
}
@Override
public View getView(Context context, final HintCase hintCase, ViewGroup parent) {
AppCompatButton button;
if (buttonStyleId != 0) {
ContextThemeWrapper contextThemeWrapper = new ContextThemeWrapper(context, buttonStyleId);
button = new AppCompatButton(contextThemeWrapper);
} else {
button = new AppCompatButton(context);
}
button.setText(text);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onClickButtonListener != null) {
onClickButtonListener.onClick();
}
if (closeHintOnClick) {
hintCase.hide();
}
}
});
button.setLayoutParams(getParentLayoutParams(width, height, rules));
return button;
}
public static class Builder {
private SimpleButtonContentHolder buttonBlock;
private Context context;
public Builder(Context context) {
this.context = context;
buttonBlock = new SimpleButtonContentHolder();
buttonBlock.width = ViewGroup.LayoutParams.WRAP_CONTENT;
buttonBlock.height = ViewGroup.LayoutParams.WRAP_CONTENT;
buttonBlock.rules = new int[0];
}
public Builder setWidth(int width) {
buttonBlock.width = width;
return this;
}
public Builder setHeight(int height) {
buttonBlock.height = height;
return this;
}
public Builder setRules(int... rules) {
buttonBlock.rules = rules;
return this;
}
public Builder setButtonText(CharSequence text) {
buttonBlock.text = text;
return this;
}
public Builder setButtonText(int resId) {
buttonBlock.text = context.getString(resId);
return this;
}
public Builder setButtonStyle(int resId) {
buttonBlock.buttonStyleId = resId;
return this;
}
public Builder setOnClick(OnClickButtonListener listener) {
buttonBlock.onClickButtonListener = listener;
return this;
}
public Builder setCloseHintCaseOnClick(boolean closeHintOnClick) {
buttonBlock.closeHintOnClick = closeHintOnClick;
return this;
}
public SimpleButtonContentHolder build() {
return buttonBlock;
}
}
public interface OnClickButtonListener {
void onClick();
}
}