package org.intermine.app.dialog; /* * Copyright (C) 2015 InterMine * * This code may be freely distributed and modified under the * terms of the GNU Lesser General Public Licence. This should * be distributed with the code. See the LICENSE file for more * information or http://www.gnu.org/copyleft/lesser.html. * */ import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; import android.content.DialogInterface; import android.os.Bundle; import org.intermine.app.R; import org.intermine.app.util.Strs; public class AlertDialogFragment extends DialogFragment { protected static final String DIALOG_ID_KEY = "dialog_id"; private static final String MESSAGE_KEY = "message"; private int mDialogId; protected OnDialogDismissedListener listener; public static AlertDialogFragment newInstance(int id, String message) { AlertDialogFragment dialog = new AlertDialogFragment(); Bundle args = new Bundle(); args.putInt(DIALOG_ID_KEY, id); args.putString(MESSAGE_KEY, message); dialog.setArguments(args); return dialog; } @Override public void onAttach(Activity activity) { super.onAttach(activity); listener = (OnDialogDismissedListener) activity; } @Override public void onDetach() { super.onDetach(); listener = null; } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { Bundle bundle = getArguments(); String message = null; if (null != bundle) { message = bundle.getString(MESSAGE_KEY); mDialogId = getArguments().getInt(DIALOG_ID_KEY); } if (Strs.isNullOrEmpty(message)) { message = getString(R.string.default_error_message); } AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setMessage(message).setNeutralButton(android.R.string.ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { listener.onDialogDismissed(getDialogId()); dialog.dismiss(); } }); return builder.create(); } @Override public void onCancel(DialogInterface dialog) { listener.onDialogDismissed(getDialogId()); super.onCancel(dialog); } public int getDialogId() { return mDialogId; } public interface OnDialogDismissedListener { void onDialogDismissed(int id); } }