/* * Copyright (C) 2009 The Android Open Source Project * * 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.example.android.videoeditor; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface.OnCancelListener; import android.content.DialogInterface.OnClickListener; import android.text.Editable; import android.text.InputFilter; import android.text.InputType; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.WindowManager; import android.widget.Button; import android.widget.EditText; /** * Utility class for creating various alert dialogs. * It contains only static methods and cannot be instantiated. */ public class AlertDialogs { private AlertDialogs() {} /** * Creates an alert dialog box. * * @param context The context * @param title The title string * @param iconId The icon id * @param content The content string * @param positive The positive button text * @param positiveListener The positive listener * @param negative The negative button text * @param negativeListener The negative listener * @param cancelListener The cancel listener * @param cancelable true if cancelable */ public static AlertDialog createAlert(Context context, String title, int iconId, String content, String positive, OnClickListener positiveListener, String negative, OnClickListener negativeListener, OnCancelListener cancelListener, boolean cancelable) { final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle(title); if (iconId != 0) { builder.setIcon(context.getResources().getDrawable(iconId)); } builder.setMessage(content); builder.setPositiveButton(positive, positiveListener); builder.setNegativeButton(negative, negativeListener); builder.setOnCancelListener(cancelListener); builder.setCancelable(cancelable); final AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(true); return dialog; } /** * Creates a dialog with one edit text. * * @param context The context * @param title The title of the dialog * @param text The text shown in the edit box * @param positiveButtonText The positive button text * @param positiveListener The positive button listener * @param negativeButtonText The negative button text * @param negativeListener The negative button listener * @param cancelListener The cancel listener * @param inputType Input type * @param maxChars The maximum number of characters * @param hint hint text to be shown in the edit box * * @return The created dialog */ public static AlertDialog createEditDialog(Context context, String title, String text, String positiveButtonText, OnClickListener positiveListener, String negativeButtonText, OnClickListener negativeListener, OnCancelListener cancelListener, int inputType, int maxChars, String hint) { final AlertDialog.Builder builder = new AlertDialog.Builder(context); final LayoutInflater vi = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE); final View myView = vi.inflate(R.layout.edit_one_dialog_view, null); builder.setView(myView); // Set the text or hint if they are available. final EditText textInput = (EditText) myView.findViewById(R.id.text_1); if (title != null) builder.setTitle(title); if (text != null) { textInput.setText(text); textInput.setSelection(0, text.length()); } if (hint != null) textInput.setHint(hint); if (maxChars > 0) { final InputFilter[] filters = new InputFilter[1]; filters[0] = new InputFilter.LengthFilter(maxChars); textInput.setFilters(filters); } if (inputType != InputType.TYPE_NULL) { textInput.setInputType(inputType); } // Setup the positive button listener builder.setPositiveButton(positiveButtonText, positiveListener); builder.setNegativeButton(negativeButtonText, negativeListener); builder.setOnCancelListener(cancelListener); final AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(true); textInput.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); } } }); textInput.addTextChangedListener(new TextWatcher() { Button mPositiveButton; @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { if (mPositiveButton == null) { mPositiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE); } mPositiveButton.setEnabled(s.toString().trim().length() > 0); } }); return dialog; } }