using System;
using System.Windows.Input;
using Prism.Commands;

namespace Valg.EVA.Skanning.UserInterfaceElements.MessageBox
{
    public interface IMessageBox
    {
        bool ShowWindowWhenNoParentWindow(string messageBoxTitle, string messageBoxMessage, string possibleSolutionMessage, MessageBoxType messageBoxType, Exception errorException = null, DelegateCommand cancelCommand = null);

        void Initialize(string messageBoxTitle, string messageBoxMessage, string possibleSolutionMessage, MessageBoxType messageBoxType, Exception[] errorException = null, DelegateCommand cancelCommand = null,
            ICommand[] solutionCommands = null);

        void Initialize(string messageBoxTitle, string messageBoxMessage, string[] possibleSolutionMessages, MessageBoxType messageBoxType, Exception[] errorException = null, DelegateCommand cancelCommand = null);

        void Initialize(string messageBoxTitle, string messageBoxMessage, MessageBoxType messageBoxType, DelegateCommand cancelCommand = null);

        void Initialize(string messageBoxTitle, string messageBoxMessage, MessageBoxType messageBoxType, DelegateCommand confirmCommand, DelegateCommand cancelCommand);

        void CloseWindow();
    }
}
