Example #1
0
        public void Close(EMessageBoxResult result)
        {
            LastResult = result;
            void Finalize()
            {
                Hide();                 //hide window
                if (OnResult != null)
                {
                    //support chaining of windows, like "are you sure?". Prevent double-calling and lost callbacks
                    //MessageBoxResultCallback temp = OnResult.Clone() as MessageBoxResultCallback;
                    MessageBoxResultCallback temp = OnResult; //copy
                    OnResult = null;                          //remove so next window could subscribe
                    temp(LastResult);                         //can still call events without overlap
                }
            }

            ToggleButtonInteractivity(false);             //disable, but don't hide.

            if (animate && transitionOUTAnimator != null)
            {
                transitionOUTAnimator.Animate(windowTransform, Finalize);
            }
            else
            {
                Finalize();
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="window"></param>
        /// <param name="text"></param>
        /// <param name="title"></param>
        /// <param name="messageBoxButton"></param>
        /// <param name="messageBoxImage"></param>
        /// <param name="messageBoxResult"></param>
        /// <returns></returns>
        public static EMessageBoxResult ShowMessageBox(Window window, string text, [NotNull] string title,
                                                       EMessageBoxButton messageBoxButton,
                                                       EMessageBoxImage messageBoxImage, EMessageBoxResult messageBoxResult)
        {
            Debug.Assert(!string.IsNullOrEmpty(text));
            Debug.Assert(!string.IsNullOrEmpty(title));

            MessageBoxButton button;

            switch (messageBoxButton)
            {
            case EMessageBoxButton.Ok:
                button = MessageBoxButton.OK;
                break;

            case EMessageBoxButton.YesNo:
                button = MessageBoxButton.YesNo;
                break;

            case EMessageBoxButton.YesNoCancel:
                button = MessageBoxButton.YesNoCancel;
                break;

            default:
                throw new ApplicationException("Illegal message box button");
            }

            MessageBoxImage image;

            switch (messageBoxImage)
            {
            case EMessageBoxImage.Error:
                image = MessageBoxImage.Error;
                break;

            case EMessageBoxImage.Warning:
                image = MessageBoxImage.Warning;
                break;

            case EMessageBoxImage.Exclamation:
                image = MessageBoxImage.Exclamation;
                break;

            case EMessageBoxImage.Information:
                image = MessageBoxImage.Information;
                break;

            default:
                throw new ApplicationException("Illegal message box image");
            }

            MessageBoxResult result;

            switch (messageBoxResult)
            {
            case EMessageBoxResult.Ok:
                result = MessageBoxResult.OK;
                break;

            case EMessageBoxResult.Yes:
                result = MessageBoxResult.Yes;
                break;

            case EMessageBoxResult.No:
                result = MessageBoxResult.No;
                break;

            case EMessageBoxResult.None:
                result = MessageBoxResult.None;
                break;

            case EMessageBoxResult.Cancel:
                result = MessageBoxResult.Cancel;
                break;

            default:
                throw new ApplicationException("Illegal message box result");
            }

            MessageBoxResult dialogResult = window == null?MessageBox.Show(text, title, button, image, result) :
                                                MessageBox.Show(window, text, title, button, image, result);

            EMessageBoxResult returnResult;

            switch (dialogResult)
            {
            case MessageBoxResult.OK:
                returnResult = EMessageBoxResult.Ok;
                break;

            case MessageBoxResult.Yes:
                returnResult = EMessageBoxResult.Yes;
                break;

            case MessageBoxResult.No:
                returnResult = EMessageBoxResult.No;
                break;

            case MessageBoxResult.Cancel:
                returnResult = EMessageBoxResult.Cancel;
                break;

            case MessageBoxResult.None:
                returnResult = EMessageBoxResult.None;
                break;

            default:
                throw new ApplicationException("Illegal message box result");
            }

            return(returnResult);
        }