package com.gettingmobile.goodnews.widget; import android.view.View; import android.widget.ImageView; import android.widget.TextView; import com.gettingmobile.android.app.actions.Action; import com.gettingmobile.goodnews.Activity; import com.gettingmobile.goodnews.Application; import com.gettingmobile.goodnews.R; public class MessageBar implements View.OnClickListener, View.OnLongClickListener { public static final int HIDE = 0; public static final int INFO = 1; public static final int WARNING = 2; private final Activity activity; private final View msgBar; private final ImageView msgIcon; private final TextView msgText; private Action<Application> clickAction = null; private Action<Application> longClickAction = null; public MessageBar(Activity activity) { msgBar = activity.findViewById(R.id.msg_bar); if (msgBar != null) { msgIcon = (ImageView) msgBar.findViewById(R.id.msg_icon); msgText = (TextView) msgBar.findViewById(R.id.msg); final View closeButton = msgBar.findViewById(R.id.close); closeButton.setOnClickListener(this); msgBar.setOnClickListener(this); msgBar.setLongClickable(true); msgBar.setOnLongClickListener(this); } else { msgIcon = null; msgText = null; } this.activity = activity; } public void setClickAction(Action<Application> action) { this.clickAction = action; } public void setLongClickAction(Action<Application> action) { this.longClickAction = action; } protected void show(int type) { if (msgBar != null) { if (type > 0) { final int icon; final int color; if (type == WARNING) { icon = R.drawable.ic_msg_warning; color = R.color.background_warning; } else { icon = R.drawable.ic_msg_info; color = R.color.background_info; } if (msgIcon != null) { msgIcon.setImageResource(icon); } msgBar.setBackgroundColor(activity.getResources().getColor(color)); } msgBar.setVisibility(type > 0 ? View.VISIBLE : View.GONE); } } public void showMessage(int type, CharSequence msg) { if (msgText != null) { msgText.setText(msg); show(type); } } public void showWarning(CharSequence msg) { showMessage(WARNING, msg); } public void showMessage(int type, int msgId) { showMessage(type, activity.getText(msgId)); } public void showInfo(int msgId) { showMessage(INFO, msgId); } public void dismiss() { show(HIDE); } @Override public void onClick(View view) { if (view.getId() == R.id.close) { show(HIDE); } else if (view.getId() == R.id.msg_bar && clickAction != null) { clickAction.onFired(activity); } } @Override public boolean onLongClick(View view) { return view.getId() == R.id.msg_bar && longClickAction != null && longClickAction.onFired(activity); } }