com.javielinux.dialogs.AlertDialogFragment.java Source code

Java tutorial

Introduction

Here is the source code for com.javielinux.dialogs.AlertDialogFragment.java

Source

/*
 * Copyright 2012 Javier Prez Pacheco and Francisco Daz Rodriguez
 * TweetTopics 2.0
 * javielinux@gmail.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.javielinux.dialogs;

import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import com.javielinux.tweettopics2.R;

import java.util.List;

public class AlertDialogFragment extends DialogFragment {

    public static final String KEY_ALERT_TITLE = "title";
    public static final String KEY_ALERT_TITLE_TEXT = "title_text";
    public static final String KEY_ALERT_MESSAGE = "message";
    public static final String KEY_ALERT_ARRAY_ITEMS = "array_items";
    public static final String KEY_ALERT_ARRAY_STRING_ITEMS = "array_items_string";
    public static final String KEY_ALERT_POSITIVE_LABEL = "positive_label";
    public static final String KEY_ALERT_NEGATIVE_LABEL = "negative_label";
    public static final String KEY_ALERT_NEUTRAL_LABEL = "neutral_label";
    public static final String KEY_ALERT_HAS_POSITIVE_BUTTON = "has_positive_button";
    public static final String KEY_ALERT_HAS_NEGATIVE_BUTTON = "has_negative_button";
    public static final String KEY_ALERT_HAS_NEUTRAL_BUTTON = "has_neutral_button";
    public static final String KEY_ALERT_CANCELABLE = "cancelable";

    public void setAlertButtonListener(AlertButtonListener alertButtonListener) {
        this.alertButtonListener = alertButtonListener;
    }

    public interface AlertButtonListener {
        void OnAlertButtonOk();

        void OnAlertButtonCancel();

        void OnAlertButtonNeutral();

        void OnAlertItems(int which);
    }

    private AlertButtonListener alertButtonListener;

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        int title = 0;
        if (getArguments().containsKey(KEY_ALERT_TITLE))
            title = getArguments().getInt(KEY_ALERT_TITLE);

        String titleTxt = null;
        if (getArguments().containsKey(KEY_ALERT_TITLE_TEXT))
            titleTxt = getArguments().getString(KEY_ALERT_TITLE_TEXT);

        int message = 0;
        if (getArguments().containsKey(KEY_ALERT_MESSAGE))
            message = getArguments().getInt(KEY_ALERT_MESSAGE);

        int arrayItems = 0;
        if (getArguments().containsKey(KEY_ALERT_ARRAY_ITEMS))
            arrayItems = getArguments().getInt(KEY_ALERT_ARRAY_ITEMS);

        List<String> arrayItemString = null;
        if (getArguments().containsKey(KEY_ALERT_ARRAY_STRING_ITEMS))
            arrayItemString = getArguments().getStringArrayList(KEY_ALERT_ARRAY_STRING_ITEMS);

        int positiveLabel = R.string.alert_dialog_ok;
        if (getArguments().containsKey(KEY_ALERT_POSITIVE_LABEL))
            positiveLabel = getArguments().getInt(KEY_ALERT_POSITIVE_LABEL);

        int negativeLabel = R.string.alert_dialog_cancel;
        if (getArguments().containsKey(KEY_ALERT_NEGATIVE_LABEL))
            negativeLabel = getArguments().getInt(KEY_ALERT_NEGATIVE_LABEL);

        int neutralLabel = R.string.alert_dialog_close;
        if (getArguments().containsKey(KEY_ALERT_NEUTRAL_LABEL))
            neutralLabel = getArguments().getInt(KEY_ALERT_NEUTRAL_LABEL);

        boolean hasPositiveButton = true;
        if (getArguments().containsKey(KEY_ALERT_HAS_POSITIVE_BUTTON))
            hasPositiveButton = getArguments().getBoolean(KEY_ALERT_HAS_POSITIVE_BUTTON);

        boolean hasNegativeButton = true;
        if (getArguments().containsKey(KEY_ALERT_HAS_NEGATIVE_BUTTON))
            hasNegativeButton = getArguments().getBoolean(KEY_ALERT_HAS_NEGATIVE_BUTTON);

        boolean hasNeutralButton = false;
        if (getArguments().containsKey(KEY_ALERT_HAS_NEUTRAL_BUTTON))
            hasNeutralButton = getArguments().getBoolean(KEY_ALERT_HAS_NEUTRAL_BUTTON);

        boolean cancelable = true;
        if (getArguments().containsKey(KEY_ALERT_CANCELABLE))
            cancelable = getArguments().getBoolean(KEY_ALERT_CANCELABLE);

        AlertDialog.Builder alert = new AlertDialog.Builder(getActivity());
        if (title > 0) {
            alert.setTitle(title);
        }
        if (titleTxt != null) {
            alert.setTitle(titleTxt);
        }
        if (message > 0) {
            alert.setMessage(message);
        }
        if (arrayItems > 0) {
            alert.setItems(arrayItems, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (alertButtonListener != null)
                        alertButtonListener.OnAlertItems(which);
                }
            });
        }
        if (arrayItemString != null) {
            CharSequence[] charSequences = new CharSequence[arrayItemString.size()];
            int count = 0;
            for (String item : arrayItemString) {
                charSequences[count] = item;
                count++;
            }
            alert.setItems(charSequences, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    if (alertButtonListener != null)
                        alertButtonListener.OnAlertItems(which);
                }
            });
        }
        if (hasPositiveButton) {
            alert.setPositiveButton(positiveLabel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (alertButtonListener != null)
                        alertButtonListener.OnAlertButtonOk();
                }
            });
        }
        if (hasNegativeButton) {
            alert.setNegativeButton(negativeLabel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (alertButtonListener != null)
                        alertButtonListener.OnAlertButtonCancel();
                }
            });
        }
        if (hasNeutralButton) {
            alert.setNeutralButton(neutralLabel, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialogInterface, int i) {
                    if (alertButtonListener != null)
                        alertButtonListener.OnAlertButtonNeutral();
                }
            });
        }
        alert.setCancelable(cancelable);
        return alert.create();
    }
}