private void LoaderSaverProviderCallback(ProviderCallbackType callbackType, string message)
        {
            switch (callbackType)
            {
            case ProviderCallbackType.ShowControl:
                TopContent = _currentLoaderSaverProvider.ShowControl;
                return;

            case ProviderCallbackType.ShowSpinner:
                Application.Current.Dispatcher.Invoke(() => { TopContent = StaticClasses.GetSpinner(message); });
                return;

            case ProviderCallbackType.End:
                // TopContent = null;
                if (_currentLoaderSaverProvider.Result)
                {
                    switch (_currentMultiCommand)
                    {
                    case "loadRender":
                        InitPost();
                        ShowRender();
                        break;
                    }
                }

                _currentMultiCommand = string.Empty;
                ActionFire.Invoke("MAIN_WINDOW_VIEWMODEL-SET_BOTTOM_STRING",
                                  _currentLoaderSaverProvider.ResultString);

                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, null);
            }
        }
        private void ColorPickProviderCallback(ProviderCallbackType providerCallbackType, string message)
        {
            switch (providerCallbackType)
            {
            case ProviderCallbackType.ShowControl:
                ShowControl = _colorPickProvider.ShowControl;
                _providerCallback.Invoke(ProviderCallbackType.ShowControl, string.Empty);
                break;

            case ProviderCallbackType.End:
                if (_colorPickProvider.Result)
                {
                    var color = _colorPickProvider.ResultColor;
                    _gradientModel = GetGradientModel(_gradientPickView);
                    _gradientModel.ChangeColor(_gradientId, color);
                }

                _gradientPickView = new GradientPickView(_gradientModel, GradientPickCallback);
                ShowControl       = _gradientPickView;
                _providerCallback.Invoke(ProviderCallbackType.ShowControl, string.Empty);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(providerCallbackType), providerCallbackType, null);
            }
        }
        private void ColorPickProviderCallback(ProviderCallbackType callbackType, string message)
        {
            switch (callbackType)
            {
            case ProviderCallbackType.ShowControl:
                TopContent = _currentColorPickProvider.ShowControl;
                return;

            case ProviderCallbackType.ShowSpinner:
                TopContent = StaticClasses.GetSpinner(message);
                return;

            case ProviderCallbackType.End:
                TopContent = null;
                if (!_currentColorPickProvider.Result)
                {
                    _currentColorPickProvider = null;
                    return;
                }

                if (_currentSelectedColorIndex == -1)
                {
                    SetBackColor(_currentColorPickProvider.ResultColor);
                }
                else if (_currentSelectedColorIndex == -2)
                {
                    var resultColor = _currentColorPickProvider.ResultColor;
                    _postModel.GradientModel.ChangeColor(1, resultColor);
                    _currentColorPickProvider    = null;
                    _currentGradientPickProvider =
                        new GradientPickProvider(GradientPickProviderCallback, _postModel.GradientModel);
                    _currentGradientPickProvider.Exec();
                }
                else
                {
                    SetColor(_currentColorPickProvider.ResultColor);
                }

                _currentColorPickProvider = null;
                ShowRender();
                return;

            default:
                throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, null);
            }
        }
        private void GradientPickProviderCallback(ProviderCallbackType callbackType, string message)
        {
            switch (callbackType)
            {
            case ProviderCallbackType.ShowControl:
                TopContent = _currentGradientPickProvider.ShowControl;
                break;

            case ProviderCallbackType.ShowSpinner:
                TopContent = StaticClasses.GetSpinner(message);
                break;

            case ProviderCallbackType.End:
                TopContent = null;
                if (_currentGradientPickProvider.Result)
                {
                    switch (_currentGradientPickProvider.GradientMode)
                    {
                    case GradientMode.Edit:
                        _postModel.GradientModel = _currentGradientPickProvider.ResultGradientModel.Copy();
                        break;

                    case GradientMode.Select:
                        _postModel.GradientValues[_currentSelectedColorIndex] =
                            _currentGradientPickProvider.ResultValue;
                        break;

                    default:
                        throw new ArgumentOutOfRangeException();
                    }
                }

                _currentGradientPickProvider = null;
                _currentSelectedColorIndex   = -1;
                ShowRender();
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(callbackType), callbackType, null);
            }
        }