• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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