/* * Copyright © 2016 TIBCO Software,Inc.All rights reserved. * http://community.jaspersoft.com/project/jaspermobile-android * * Unless you have purchased a commercial license agreement from TIBCO Jaspersoft, * the following license terms apply: * * This program is part of TIBCO Jaspersoft Mobile for Android. * * TIBCO Jaspersoft Mobile is free software:you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation,either version 3of the License,or * (at your option)any later version. * * TIBCO Jaspersoft Mobile is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY;without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with TIBCO Jaspersoft Mobile for Android.If not,see * <http://www.gnu.org/licenses/lgpl>. */ package com.jaspersoft.android.jaspermobile.dialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.FragmentManager; import android.support.v7.app.AlertDialog; /** * @author Andrew Tivodar * @since 2.0 */ public class SimpleDialogFragment extends BaseDialogFragment { private final static String POSITIVE_BUTTON_TEXT_ARG = "positive_button_text"; private final static String NEGATIVE_BUTTON_TEXT_ARG = "negative_button_text"; private final static String MESSAGE_ARG = "message"; private final static String TITLE_ARG = "title"; private final static String ICON_RES_ARG = "icon_res"; private String title; private String message; private String positiveButtonText; private String negativeButtonText; private int iconRes; @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity()) .setTitle(title) .setMessage(message); if (iconRes != 0) { dialogBuilder.setIcon(iconRes); } if (positiveButtonText != null) { dialogBuilder.setPositiveButton(positiveButtonText, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { if (mDialogListener != null) { onPositiveClick(); } } }); } if (negativeButtonText != null) { dialogBuilder.setNegativeButton(negativeButtonText, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { if (mDialogListener != null) { onNegativeClick(); } } } ); } Dialog dialog = dialogBuilder.create(); dialog.setCanceledOnTouchOutside(canceledOnTouchOutside); return dialog; } public static SimpleDialogFragmentBuilder createBuilder(Context context, FragmentManager fragmentManager) { return new SimpleDialogFragmentBuilder<SimpleDialogFragment>(context, fragmentManager); } protected void onPositiveClick() { ((SimpleDialogClickListener) mDialogListener).onPositiveClick(requestCode); } protected void onNegativeClick() { ((SimpleDialogClickListener) mDialogListener).onNegativeClick(requestCode); } protected void initDialogParams() { super.initDialogParams(); Bundle args = getArguments(); if (args != null) { if (args.containsKey(POSITIVE_BUTTON_TEXT_ARG)) { positiveButtonText = args.getString(POSITIVE_BUTTON_TEXT_ARG); } if (args.containsKey(NEGATIVE_BUTTON_TEXT_ARG)) { negativeButtonText = args.getString(NEGATIVE_BUTTON_TEXT_ARG); } if (args.containsKey(MESSAGE_ARG)) { message = args.getString(MESSAGE_ARG); } if (args.containsKey(TITLE_ARG)) { title = args.getString(TITLE_ARG); } iconRes = args.getInt(ICON_RES_ARG, 0); } } @Override protected <T extends DialogClickListener> Class<T> getDialogCallbackClass() { return (Class<T>) SimpleDialogClickListener.class; } //--------------------------------------------------------------------- // Dialog Builder //--------------------------------------------------------------------- public static class SimpleDialogFragmentBuilder<T extends SimpleDialogFragment> extends BaseDialogFragmentBuilder { private Context mContext; public SimpleDialogFragmentBuilder(Context context, FragmentManager fragmentManager) { super(fragmentManager); this.mContext = context; } public SimpleDialogFragmentBuilder<T> setTitle(String title) { args.putString(TITLE_ARG, title); return this; } public SimpleDialogFragmentBuilder<T> setTitle(int recourseId) { String title = mContext.getResources().getString(recourseId); args.putString(TITLE_ARG, title); return this; } public SimpleDialogFragmentBuilder<T> setMessage(String message) { args.putString(MESSAGE_ARG, message); return this; } public SimpleDialogFragmentBuilder<T> setMessage(int recourseId) { String message = mContext.getResources().getString(recourseId); args.putString(MESSAGE_ARG, message); return this; } public SimpleDialogFragmentBuilder<T> setPositiveButtonText(String positiveButtonText) { args.putString(POSITIVE_BUTTON_TEXT_ARG, positiveButtonText); return this; } public SimpleDialogFragmentBuilder<T> setPositiveButtonText(int recourseId) { String positiveButtonText = mContext.getResources().getString(recourseId); args.putString(POSITIVE_BUTTON_TEXT_ARG, positiveButtonText); return this; } public SimpleDialogFragmentBuilder<T> setNegativeButtonText(String negativeButtonText) { args.putString(NEGATIVE_BUTTON_TEXT_ARG, negativeButtonText); return this; } public SimpleDialogFragmentBuilder<T> setNegativeButtonText(int recourseId) { String negativeButtonText = mContext.getResources().getString(recourseId); args.putString(NEGATIVE_BUTTON_TEXT_ARG, negativeButtonText); return this; } public SimpleDialogFragmentBuilder<T> setIcon(int recourseId) { args.putInt(ICON_RES_ARG, recourseId); return this; } @Override protected BaseDialogFragment build() { return new SimpleDialogFragment(); } } //--------------------------------------------------------------------- // Dialog Callback //--------------------------------------------------------------------- public interface SimpleDialogClickListener extends DialogClickListener { public void onPositiveClick(int requestCode); public void onNegativeClick(int requestCode); } }