package org.wikipedia.page; import android.app.Dialog; import android.content.DialogInterface; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; import org.wikipedia.readinglist.AddToReadingListDialog; public class ExclusiveBottomSheetPresenter { private static final String BOTTOM_SHEET_FRAGMENT_TAG = "bottom_sheet_fragment"; private Dialog currentDialog; public void showAddToListDialog(@NonNull FragmentManager fm, @NonNull PageTitle title, @NonNull AddToReadingListDialog.InvokeSource source) { show(fm, AddToReadingListDialog.newInstance(title, source, null)); } public void showAddToListDialog(@NonNull FragmentManager fm, @NonNull PageTitle title, @NonNull AddToReadingListDialog.InvokeSource source, @Nullable DialogInterface.OnDismissListener listener) { show(fm, AddToReadingListDialog.newInstance(title, source, listener)); } public void show(@NonNull FragmentManager manager, @NonNull DialogFragment dialog) { dismiss(manager); dialog.show(manager, BOTTOM_SHEET_FRAGMENT_TAG); } public void show(@NonNull FragmentManager manager, @NonNull Dialog dialog) { dismiss(manager); currentDialog = dialog; currentDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialogInterface) { currentDialog = null; } }); currentDialog.show(); } public void dismiss(@NonNull FragmentManager manager) { DialogFragment dialog = (DialogFragment) manager.findFragmentByTag(BOTTOM_SHEET_FRAGMENT_TAG); if (dialog != null) { dialog.dismiss(); } if (currentDialog != null) { currentDialog.setOnDismissListener(null); currentDialog.dismiss(); } currentDialog = null; } }