/// <summary>
        /// Selects the current cipher.
        /// </summary>
        /// <param name="cipher">The cipher to select.</param>
        /// <param name="cipherSettingsObservable">The cipher's settings.</param>
        /// <param name="settingsView">The view to select.</param>
        public void SelectCipher(ICipher cipher, ICipherSettingsViewModel cipherSettingsObservable, ICipherSettingsView settingsView)
        {
            if (cipher == null)
            {
                throw new ArgumentNullException(nameof(cipher));
            }

            if (settingsView == null)
            {
                throw new ArgumentNullException(nameof(settingsView));
            }

            _repository.SetCurrentItem(x => x == cipher);

            ISettingsController settingsController = new SettingsController(cipherSettingsObservable, settingsView);

            settingsController?.LoadView();

            _view.ShowSettings(settingsView);
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="SettingsController"/> class.
 /// </summary>
 /// <param name="cipherSettingsObservable">The cipher's settings.</param>
 /// <param name="cipherSettingsView">The view that is controlled.</param>
 public SettingsController(ICipherSettingsViewModel cipherSettingsObservable, ICipherSettingsView cipherSettingsView)
 {
     _view    = cipherSettingsView ?? throw new ArgumentNullException(nameof(cipherSettingsView));
     Settings = cipherSettingsObservable ?? throw new ArgumentNullException(nameof(cipherSettingsObservable));
     _view.SetController(this);
 }