blob: 6246d422820ee4bd71d44b3716463496f16462e1 [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.ui.modaldialog;
import androidx.annotation.NonNull;
import org.chromium.base.Callback;
import org.chromium.ui.modelutil.PropertyModel;
/**
* A default implementation of Controller which dismisses the dialog when a button is clicked.
*
* The result of the dialog is passed back via a Callback.
*/
public class SimpleModalDialogController implements ModalDialogProperties.Controller {
private final ModalDialogManager mModalDialogManager;
private Callback<Integer> mActionCallback;
/**
* @param modalDialogManager the dialog manager where the dialog will be shown.
* @param action a callback which will be run with the result of the confirmation.
*/
public SimpleModalDialogController(
ModalDialogManager modalDialogManager, @NonNull Callback<Integer> action) {
mModalDialogManager = modalDialogManager;
mActionCallback = action;
}
@Override
public void onClick(PropertyModel model, int buttonType) {
if (buttonType == ModalDialogProperties.ButtonType.POSITIVE) {
mModalDialogManager.dismissDialog(model, DialogDismissalCause.POSITIVE_BUTTON_CLICKED);
} else {
mModalDialogManager.dismissDialog(model, DialogDismissalCause.NEGATIVE_BUTTON_CLICKED);
}
}
@Override
public void onDismiss(PropertyModel model, int dismissalCause) {
Callback<Integer> action = mActionCallback;
mActionCallback = null;
action.onResult(dismissalCause);
}
}