1 /* 2 * Copyright (C) 2009 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.videoeditor; 18 19 import android.app.AlertDialog; 20 import android.content.Context; 21 import android.content.DialogInterface; 22 import android.content.DialogInterface.OnCancelListener; 23 import android.content.DialogInterface.OnClickListener; 24 import android.text.Editable; 25 import android.text.InputFilter; 26 import android.text.InputType; 27 import android.text.TextWatcher; 28 import android.view.LayoutInflater; 29 import android.view.View; 30 import android.view.WindowManager; 31 import android.widget.Button; 32 import android.widget.EditText; 33 34 /** 35 * Utility class for creating various alert dialogs. 36 * It contains only static methods and cannot be instantiated. 37 */ 38 public class AlertDialogs { 39 AlertDialogs()40 private AlertDialogs() {} 41 42 /** 43 * Creates an alert dialog box. 44 * 45 * @param context The context 46 * @param title The title string 47 * @param iconId The icon id 48 * @param content The content string 49 * @param positive The positive button text 50 * @param positiveListener The positive listener 51 * @param negative The negative button text 52 * @param negativeListener The negative listener 53 * @param cancelListener The cancel listener 54 * @param cancelable true if cancelable 55 */ createAlert(Context context, String title, int iconId, String content, String positive, OnClickListener positiveListener, String negative, OnClickListener negativeListener, OnCancelListener cancelListener, boolean cancelable)56 public static AlertDialog createAlert(Context context, String title, int iconId, 57 String content, String positive, OnClickListener positiveListener, String negative, 58 OnClickListener negativeListener, OnCancelListener cancelListener, 59 boolean cancelable) { 60 final AlertDialog.Builder builder = new AlertDialog.Builder(context); 61 builder.setTitle(title); 62 if (iconId != 0) { 63 builder.setIcon(context.getResources().getDrawable(iconId)); 64 } 65 builder.setMessage(content); 66 builder.setPositiveButton(positive, positiveListener); 67 builder.setNegativeButton(negative, negativeListener); 68 builder.setOnCancelListener(cancelListener); 69 builder.setCancelable(cancelable); 70 71 final AlertDialog dialog = builder.create(); 72 dialog.setCanceledOnTouchOutside(true); 73 return dialog; 74 } 75 76 /** 77 * Creates a dialog with one edit text. 78 * 79 * @param context The context 80 * @param title The title of the dialog 81 * @param text The text shown in the edit box 82 * @param positiveButtonText The positive button text 83 * @param positiveListener The positive button listener 84 * @param negativeButtonText The negative button text 85 * @param negativeListener The negative button listener 86 * @param cancelListener The cancel listener 87 * @param inputType Input type 88 * @param maxChars The maximum number of characters 89 * @param hint hint text to be shown in the edit box 90 * 91 * @return The created dialog 92 */ createEditDialog(Context context, String title, String text, String positiveButtonText, DialogInterface.OnClickListener positiveListener, String negativeButtonText, DialogInterface.OnClickListener negativeListener, DialogInterface.OnCancelListener cancelListener, int inputType, int maxChars, String hint)93 public static AlertDialog createEditDialog(Context context, String title, String text, 94 String positiveButtonText, DialogInterface.OnClickListener positiveListener, 95 String negativeButtonText, DialogInterface.OnClickListener negativeListener, 96 DialogInterface.OnCancelListener cancelListener, int inputType, int maxChars, 97 String hint) { 98 final AlertDialog.Builder builder = new AlertDialog.Builder(context); 99 final LayoutInflater vi = (LayoutInflater) context.getSystemService( 100 Context.LAYOUT_INFLATER_SERVICE); 101 final View myView = vi.inflate(R.layout.edit_one_dialog_view, null); 102 builder.setView(myView); 103 104 // Set the text or hint if they are available. 105 final EditText textInput = (EditText) myView.findViewById(R.id.text_1); 106 if (title != null) builder.setTitle(title); 107 if (text != null) { 108 textInput.setText(text); 109 textInput.setSelection(0, text.length()); 110 } 111 if (hint != null) textInput.setHint(hint); 112 113 if (maxChars > 0) { 114 final InputFilter[] filters = new InputFilter[1]; 115 filters[0] = new InputFilter.LengthFilter(maxChars); 116 textInput.setFilters(filters); 117 } 118 119 if (inputType != InputType.TYPE_NULL) { 120 textInput.setInputType(inputType); 121 } 122 123 // Setup the positive button listener 124 builder.setPositiveButton(positiveButtonText, positiveListener); 125 builder.setNegativeButton(negativeButtonText, negativeListener); 126 builder.setOnCancelListener(cancelListener); 127 final AlertDialog dialog = builder.create(); 128 dialog.setCanceledOnTouchOutside(true); 129 textInput.setOnFocusChangeListener(new View.OnFocusChangeListener() { 130 131 @Override 132 public void onFocusChange(View v, boolean hasFocus) { 133 if (hasFocus) { 134 dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 135 } 136 } 137 }); 138 textInput.addTextChangedListener(new TextWatcher() { 139 Button mPositiveButton; 140 141 @Override 142 public void onTextChanged(CharSequence s, int start, int before, int count) { 143 } 144 145 @Override 146 public void beforeTextChanged(CharSequence s, int start, int count, int after) { 147 } 148 149 @Override 150 public void afterTextChanged(Editable s) { 151 if (mPositiveButton == null) { 152 mPositiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE); 153 } 154 mPositiveButton.setEnabled(s.toString().trim().length() > 0); 155 } 156 }); 157 158 return dialog; 159 } 160 } 161