/*
AlertDialogFragment.java
Copyright (c) 2016 NTT DOCOMO,INC.
Released under the MIT license
http://opensource.org/licenses/mit-license.php
*/
package org.deviceconnect.android.manager.setting;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.content.DialogInterface;
import android.os.Bundle;
/**
* AlertDialogを表示するためのDialogFragment.
*
* @author NTT DOCOMO, INC.
*/
public class AlertDialogFragment extends DialogFragment {
/**
* タグのキーを定義します.
*/
private static final String KEY_TAG = "tag";
/**
* タイトルのキーを定義します.
*/
private static final String KEY_TITLE = "title";
/**
* メッセージのキーを定義します.
*/
private static final String KEY_MESSAGE = "message";
/**
* Positiveボタンのキーを定義します.
*/
private static final String KEY_POSITIVE = "yes";
/**
* Negativeボタンのキーを定義します.
*/
private static final String KEY_NEGATIVE = "no";
/**
* ボタン無しでAlertDialogを作成します.
* @param tag タグ
* @param title タイトル
* @param message メッセージ
* @return AlertDialogFragmentのインスタンス
*/
public static AlertDialogFragment create(final String tag, final String title, final String message) {
return create(tag, title, message, null, null);
}
/**
* PositiveボタンのみでAlertDialogを作成します.
* @param tag タグ
* @param title タイトル
* @param message メッセージ
* @param positive positiveボタン名
* @return AlertDialogFragmentのインスタンス
*/
public static AlertDialogFragment create(final String tag, final String title,
final String message, final String positive) {
return create(tag, title, message, positive, null);
}
/**
* ボタン有りでAlertDialogを作成します.
* @param tag タグ
* @param title タイトル
* @param message メッセージ
* @param positive positiveボタン名
* @param negative negativeボタン名
* @return AlertDialogFragmentのインスタンス
*/
public static AlertDialogFragment create(final String tag,
final String title, final String message,
final String positive, final String negative) {
Bundle args = new Bundle();
args.putString(KEY_TAG, tag);
args.putString(KEY_TITLE, title);
args.putString(KEY_MESSAGE, message);
if (positive != null) {
args.putString(KEY_POSITIVE, positive);
}
if (negative != null) {
args.putString(KEY_NEGATIVE, negative);
}
AlertDialogFragment dialog = new AlertDialogFragment();
dialog.setArguments(args);
return dialog;
}
@Override
public Dialog onCreateDialog(final Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getArguments().getString(KEY_TITLE));
builder.setMessage(getArguments().getString(KEY_MESSAGE));
if (getArguments().getString(KEY_POSITIVE) != null) {
builder.setPositiveButton(getArguments().getString(KEY_POSITIVE),
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
try {
((OnAlertDialogListener) getActivity()).onPositiveButton(getArguments().getString(KEY_TAG));
} catch (Exception e) {
return;
}
}
});
}
if (getArguments().getString(KEY_NEGATIVE) != null) {
builder.setNegativeButton(getArguments().getString(KEY_NEGATIVE),
new DialogInterface.OnClickListener() {
@Override
public void onClick(final DialogInterface dialog, final int which) {
try {
((OnAlertDialogListener) getActivity()).onNegativeButton(getArguments().getString(KEY_TAG));
} catch (Exception e) {
return;
}
}
});
}
return builder.create();
}
@Override
public void onCancel(final DialogInterface dialog) {
try {
((OnAlertDialogListener) getActivity()).onNegativeButton(getArguments().getString(KEY_TAG));
} catch (Exception e) {
return;
}
}
/**
* ボタンが押下された時のイベントを通知するリスナー.
*/
public interface OnAlertDialogListener {
/**
* Positiveボタンが押下された場合に呼び出します.
* @param tag タグ
*/
void onPositiveButton(String tag);
/**
* Negativeボタんが押下された場合に呼び出します.
* @param tag タグ
*/
void onNegativeButton(String tag);
}
}