package com.laowch.githubtrends.ui; import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.v4.app.DialogFragment; /** * Created by laowch on 4/15/14. */ public class ConfirmDialog extends DialogFragment implements DialogInterface.OnClickListener { private final static String EXTRA_TITLE = "extra_title"; private final static String EXTRA_MESSAGE = "extra_message"; private final static String EXTRA_POSITIVE_TEXT = "extra_positive_text"; private final static String EXTRA_NEGATIVE_TEXT = "extra_negative_text"; public final static int HIDE_BUTTON = -1; private IConfirmDialogListener confirmDialogListener; private INegativeClickListener negativeClickListener; public static ConfirmDialog newInstance(final String pTitle, final String pMessage) { return newInstance(pTitle, pMessage, 0, 0); } public static ConfirmDialog newInstance(final String pTitle, final String pMessage, final int positiveText, final int negativeText) { ConfirmDialog dialog = new ConfirmDialog(); Bundle bundle = new Bundle(); bundle.putString(EXTRA_TITLE, pTitle); bundle.putString(EXTRA_MESSAGE, pMessage); bundle.putInt(EXTRA_POSITIVE_TEXT, positiveText); bundle.putInt(EXTRA_NEGATIVE_TEXT, negativeText); dialog.setArguments(bundle); return dialog; } public ConfirmDialog() { } public void setConfirmDialogListener(IConfirmDialogListener pConfirmDialogListener) { this.confirmDialogListener = pConfirmDialogListener; } public void setNegativeClickListener(INegativeClickListener negativeClickListener) { this.negativeClickListener = negativeClickListener; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setTitle(getArguments().getString(EXTRA_TITLE)); builder.setMessage(getArguments().getString(EXTRA_MESSAGE)); final int negativeText = getArguments().getInt(EXTRA_NEGATIVE_TEXT, 0); final int positiveText = getArguments().getInt(EXTRA_POSITIVE_TEXT, 0); if (positiveText != HIDE_BUTTON) { builder.setPositiveButton(positiveText == 0 ? android.R.string.ok : positiveText, this); } if (negativeText != HIDE_BUTTON) { builder.setNegativeButton(negativeText == 0 ? android.R.string.cancel : negativeText, this); } return builder.create(); } @Override public void onClick(final DialogInterface pDialog, final int pWhich) { switch (pWhich) { case DialogInterface.BUTTON_NEGATIVE: if (this.negativeClickListener != null) { this.negativeClickListener.onNegativeButtonClick(); } break; case DialogInterface.BUTTON_POSITIVE: if (this.confirmDialogListener != null) { this.confirmDialogListener.onConfirm(); } break; default: break; } } public static interface IConfirmDialogListener { public void onConfirm(); } public static interface INegativeClickListener { public void onNegativeButtonClick(); } }