package com.foxykeep.datadroidpoc.dialogs;
import com.foxykeep.datadroidpoc.R;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
public class ErrorDialogFragment extends DialogFragment {
public interface OnCancelListener {
public void onCancel();
}
private static final String FRAGMENT_TAG = "com.foxykeep.datadroidpoc.dialogs.errorDialog";
private static final String BUNDLE_TITLE = "title";
private static final String BUNDLE_MESSAGE = "message";
private OnClickListener mOnClickListener;
private OnCancelListener mOnCancelListener;
private static ErrorDialogFragment newInstance(String title, String message,
OnClickListener onClickListener, OnCancelListener onCancelListener) {
ErrorDialogFragment dialogFragment = new ErrorDialogFragment();
dialogFragment.mOnClickListener = onClickListener;
Bundle args = new Bundle();
args.putString(BUNDLE_TITLE, title);
args.putString(BUNDLE_MESSAGE, message);
dialogFragment.setArguments(args);
return dialogFragment;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Bundle args = getArguments();
Builder b = new Builder(getActivity());
b.setTitle(args.getString(BUNDLE_TITLE));
b.setMessage(args.getString(BUNDLE_MESSAGE));
b.setIcon(android.R.drawable.ic_dialog_alert);
setCancelable(true);
b.setNeutralButton(getActivity().getString(android.R.string.ok), mOnClickListener);
return b.create();
}
@Override
public void onCancel(DialogInterface dialog) {
if (mOnCancelListener != null) {
mOnCancelListener.onCancel();
}
}
public static class ErrorDialogFragmentBuilder {
private FragmentActivity mActivity;
private String mTitle;
private String mMessage;
private OnClickListener mOnClickListener;
private OnCancelListener mOnCancelListener;
public ErrorDialogFragmentBuilder(FragmentActivity activity) {
mActivity = activity;
mTitle = activity.getString(R.string.dialog_error_title);
}
public ErrorDialogFragmentBuilder setTitle(int resId) {
mTitle = mActivity.getString(resId);
return this;
}
public ErrorDialogFragmentBuilder setTitle(String text) {
mTitle = text;
return this;
}
public ErrorDialogFragmentBuilder setMessage(int resId) {
mMessage = mActivity.getString(resId);
return this;
}
public ErrorDialogFragmentBuilder setMessage(String text) {
mMessage = text;
return this;
}
public ErrorDialogFragmentBuilder setOnClickListener(OnClickListener onClickListener) {
mOnClickListener = onClickListener;
return this;
}
public ErrorDialogFragmentBuilder setOnCancelListener(OnCancelListener onCancelListener) {
mOnCancelListener = onCancelListener;
return this;
}
public void show() {
FragmentManager fragmentManager = mActivity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment prev = fragmentManager.findFragmentByTag(FRAGMENT_TAG);
if (prev != null) {
fragmentTransaction.remove(prev);
}
fragmentTransaction.addToBackStack(null);
ErrorDialogFragment.newInstance(mTitle, mMessage, mOnClickListener, mOnCancelListener)
.show(fragmentManager, FRAGMENT_TAG);
}
}
public static void dismiss(FragmentActivity activity) {
FragmentManager fragmentManager = activity.getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
Fragment prev = fragmentManager.findFragmentByTag(FRAGMENT_TAG);
if (prev != null) {
fragmentTransaction.remove(prev);
}
fragmentTransaction.commit();
}
}