package org.wikipedia.readinglist; import android.content.Context; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import org.apache.commons.lang3.StringUtils; import org.wikipedia.R; import org.wikipedia.views.TextInputDialog; import java.util.List; public final class ReadingListTitleDialog { public interface Callback { void onSuccess(@NonNull CharSequence text); } public static TextInputDialog readingListTitleDialog(@NonNull Context context, @NonNull final String initialTitle, @NonNull final List<String> otherTitles, @Nullable final Callback callback) { return TextInputDialog.newInstance(context, new TextInputDialog.Callback() { @Override public void onShow(@NonNull TextInputDialog dialog) { dialog.setHint(R.string.reading_list_name_hint); dialog.setText(initialTitle); dialog.selectAll(); } @Override public void onTextChanged(@NonNull CharSequence text, @NonNull TextInputDialog dialog) { String title = text.toString().trim(); if (StringUtils.isEmpty(title)) { dialog.setError(dialog.getContext().getString(R.string.reading_list_entry_empty)); dialog.setPositiveButtonEnabled(false); } else if (otherTitles.contains(title)) { dialog.setError(dialog.getContext().getString(R.string.reading_list_title_exists, title)); dialog.setPositiveButtonEnabled(false); } else { dialog.setError(null); dialog.setPositiveButtonEnabled(true); } } @Override public void onSuccess(@NonNull CharSequence text) { if (callback != null) { callback.onSuccess(text.toString().trim()); } } @Override public void onCancel() { } }); } private ReadingListTitleDialog() { } }