AlertDialogWrapper.java
Go to the documentation of this file.
00001 /*
00002  * Software License Agreement (BSD License)
00003  *
00004  * Copyright (c) 2013, Yujin Robot.
00005  *
00006  * All rights reserved.
00007  * Redistribution and use in source and binary forms, with or without
00008  * modification, are permitted provided that the following conditions
00009  * are met:
00010  *
00011  * * Redistributions of source code must retain the above copyright
00012  * notice, this list of conditions and the following disclaimer.
00013  * * Redistributions in binary form must reproduce the above
00014  * copyright notice, this list of conditions and the following
00015  * disclaimer in the documentation and/or other materials provided
00016  * with the distribution.
00017  * * Neither the name of Willow Garage, Inc. nor the names of its
00018  * contributors may be used to endorse or promote products derived
00019  * from this software without specific prior written permission.
00020  *
00021  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00022  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00023  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00024  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00025  * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00026  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00027  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00028  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00030  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00031  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00032  * POSSIBILITY OF SUCH DAMAGE.
00033  */
00034 
00035 package com.github.rosjava.android_remocons.rocon_remocon.dialogs;
00036 
00037 import android.app.Activity;
00038 import android.app.AlertDialog;
00039 import android.content.DialogInterface;
00040 
00046 public class AlertDialogWrapper {
00047     protected int state;
00048     protected AlertDialog dialog;
00049     protected Activity context;
00050     protected boolean enablePositive = true;
00051 
00052     public AlertDialogWrapper(Activity context,
00053                               AlertDialog.Builder builder, String yesButton, String noButton) {
00054         state = 0;
00055         this.context = context;
00056         dialog = builder
00057                 .setPositiveButton(yesButton,
00058                         new DialogInterface.OnClickListener() {
00059                             public void onClick(DialogInterface dialog,
00060                                                 int which) {
00061                                 state = 1;
00062                             }
00063                         })
00064                 .setNegativeButton(noButton,
00065                         new DialogInterface.OnClickListener() {
00066                             public void onClick(DialogInterface dialog,
00067                                                 int which) {
00068                                 state = 2;
00069                             }
00070                         }).create();
00071     }
00072 
00073     public AlertDialogWrapper(Activity context,
00074                               AlertDialog.Builder builder, String okButton) {
00075         state = 0;
00076         this.context = context;
00077         dialog = builder.setNeutralButton(okButton,
00078                 new DialogInterface.OnClickListener() {
00079                     public void onClick(DialogInterface dialog, int which) {
00080                         state = 1;
00081                     }
00082                 }).create();
00083     }
00084 
00085     public void setTitle(String m) {
00086         dialog.setTitle(m);
00087     }
00088 
00089     public void setMessage(String m) {
00090         dialog.setMessage(m);
00091     }
00092 
00093     public boolean show(String m) {
00094         setMessage(m);
00095         return show();
00096     }
00097 
00098     public boolean show() {
00099         state = 0;
00100         context.runOnUiThread(new Runnable() {
00101             public void run() {
00102                 dialog.show();
00103                 dialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(enablePositive);
00104             }
00105         });
00106         // Kind of a hack. Do we know a better way?
00107         while (state == 0) {
00108             try {
00109                 Thread.sleep(1L);
00110             } catch (Exception e) {
00111                 break;
00112             }
00113         }
00114         dismiss();
00115         return state == 1;
00116     }
00117 
00118     public void dismiss() {
00119         if (dialog != null) {
00120             dialog.dismiss();
00121         }
00122     }
00123 }


android_remocons
Author(s): Daniel Stonier, Kazuto Murase
autogenerated on Sat Jun 8 2019 19:32:24