private async void SaveKeyBtn_Click(object sender, RoutedEventArgs e)
        {
            if (xForgetRadioButton.IsChecked.Value && UCEncryptionKey.CheckKeyCombination())
            {
                if (Reporter.ToUser(eUserMsgKey.ForgotKeySaveChanges) == Amdocs.Ginger.Common.eUserMsgSelection.Yes)
                {
                    _solution.EncryptionKey = UCEncryptionKey.EncryptionKeyPasswordBox.Password;
                    _solution.SolutionOperations.SaveEncryptionKey();
                    _solution.SolutionOperations.SaveSolution(false);

                    uOkBtn.Visibility      = Visibility.Visible;
                    uSaveKeyBtn.Visibility = Visibility.Collapsed;
                    uCloseBtn.Visibility   = Visibility.Collapsed;

                    xForgetRadioButton.IsEnabled  = false;
                    xReplaceRadioButton.IsEnabled = false;
                    UCEncryptionKey.IsEnabled     = false;
                    validKeyAdded = true;
                    await LoadEncryptedParamtersList();
                }
            }
            else if (xReplaceRadioButton.IsChecked.Value && UCEncryptionKeyPrevious.ValidateKey() && UCEncryptionKey.CheckKeyCombination())
            {
                this.ShowLoader();
                ShowStatusMessage("Updating new encryption key for solution");
                uSaveKeyBtn.Visibility  = Visibility.Collapsed;
                uCloseBtn.Visibility    = Visibility.Collapsed;
                _solution.EncryptionKey = UCEncryptionKey.EncryptionKeyPasswordBox.Password;
                _solution.SolutionOperations.SaveEncryptionKey();
                _solution.SolutionOperations.SaveSolution(false);
                if (WorkSpace.Instance.SolutionRepository == null)
                {
                    WorkSpace.Instance.SolutionRepository = GingerSolutionRepository.CreateGingerSolutionRepository();
                    WorkSpace.Instance.SolutionRepository.Open(_solution.ContainingFolderFullPath);
                    WorkSpace.Instance.Solution = _solution;
                }
                int varReencryptedCount = await HandlePasswordValuesReEncryption(UCEncryptionKeyPrevious.EncryptionKeyPasswordBox.Password);

                this.HideLoader();
                HideStatusMessage();
                if (varReencryptedCount > 0)
                {
                    Reporter.ToUser(eUserMsgKey.StaticInfoMessage, varReencryptedCount + " Variables Re-encrypted using new Encryption key across Solution.\n Please check in all changes to source control");
                }

                xSolutionPasswordsParamtersGrid.Visibility = Visibility.Collapsed;
                validKeyAdded = true;

                _pageGenericWin.Close();
            }
        }
        public ReplaceEncryptionKeyPage()
        {
            InitializeComponent();
            UCEncryptionKeyPrevious.ChangeLabel("Solution Passwords Old Encryption Key");
            UCEncryptionKey.ChangeLabel("Solution Password New Encryption Key");

            xReplaceRadioButton.Click += radioBtn_Click;
            xForgetRadioButton.Click  += radioBtn_Click;

            xSolutionPasswordsParamtersGrid.btnMarkAll.Visibility = Visibility.Collapsed;
            xSolutionPasswordsParamtersGrid.Visibility            = Visibility.Collapsed;
            UCEncryptionKeyPrevious.Visibility = Visibility.Collapsed;
            UCEncryptionKey.Visibility         = Visibility.Collapsed;

            UCEncryptionKeyPrevious.EncryptionKeyPasswordBox.PasswordChanged += PrevEncryptionKeyBox_Changed;
            UCEncryptionKey.EncryptionKeyPasswordBox.PasswordChanged         += EncryptionKeyBox_Changed;
        }
        private async void PrevEncryptionKeyBox_Changed(object sender, RoutedEventArgs e)
        {
            //this inner method checks if user is still typing
            async Task <bool> UserKeepsTyping()
            {
                string txt = UCEncryptionKeyPrevious.EncryptionKeyPasswordBox.Password;
                await Task.Delay(2000);

                return(txt != UCEncryptionKeyPrevious.EncryptionKeyPasswordBox.Password);
            }

            if (await UserKeepsTyping())
            {
                return;
            }

            UCEncryptionKeyPrevious.ValidateKey();
        }
        public bool ShowAsWindow(Solution solution, eWindowShowStyle windowStyle = eWindowShowStyle.Dialog)
        {
            UCEncryptionKey.mSolution         = solution;
            UCEncryptionKeyPrevious.mSolution = solution;
            _solution = solution;

            if (!string.IsNullOrEmpty(solution.EncryptionKey))
            {
                UCEncryptionKeyPrevious.EncryptionKeyPasswordBox.Password = solution.EncryptionKey;
                if (!UCEncryptionKeyPrevious.ValidateKey())
                {
                    UCEncryptionKeyPrevious.EncryptionKeyPasswordBox.Password = "";
                }
            }

            ObservableList <Button> winButtons = new ObservableList <Button>();

            uOkBtn            = new Button();
            uOkBtn.Content    = "Ok";
            uOkBtn.Click     += new RoutedEventHandler(OkBtn_Click);
            uOkBtn.Visibility = Visibility.Collapsed;

            uSaveKeyBtn         = new Button();
            uSaveKeyBtn.Content = "Save Key";
            uSaveKeyBtn.Click  += new RoutedEventHandler(SaveKeyBtn_Click);

            uCloseBtn         = new Button();
            uCloseBtn.Content = "Cancel";
            uCloseBtn.Click  += new RoutedEventHandler(CloseBtn_Click);
            winButtons.Add(uCloseBtn);
            winButtons.Add(uSaveKeyBtn);
            winButtons.Add(uOkBtn);
            loaderElement            = new ImageMakerControl();
            loaderElement.Name       = "xProcessingImage";
            loaderElement.Height     = 30;
            loaderElement.Width      = 30;
            loaderElement.ImageType  = Amdocs.Ginger.Common.Enums.eImageType.Processing;
            loaderElement.Visibility = Visibility.Collapsed;

            GingerCore.General.LoadGenericWindow(ref _pageGenericWin, App.MainWindow, windowStyle, "Replace/Forget Encryption key", this, winButtons, false, "Cancel", CloseBtn_Click, false, loaderElement);
            return(validKeyAdded);
        }