/// <summary>
        /// Handles the Click event of OkButton object.
        /// </summary>
        private void okButton_Click(object sender, EventArgs e)
        {
            // update undo manager level
            _undoManager.UndoLevel = (int)undoLevelNumericUpDown.Value;

            // if compressed data storage in memory must be used
            if (compressedVintasoftImageInMemoryRadioButton.Checked)
            {
                if (!(_dataStorage is CompressedImageStorageInMemory))
                {
                    _dataStorage = new CompressedImageStorageInMemory();
                }
            }
            // if compressed data storage on disk must be used
            else if (compressedVintasoftImageOnDiskRadioButton.Checked)
            {
                CompressedImageStorageOnDisk prevDataStorage =
                    _dataStorage as CompressedImageStorageOnDisk;

                // if data storage is changed
                if (prevDataStorage == null ||
                    !prevDataStorage.StoragePath.Equals(storagePathTextBox.Text, StringComparison.InvariantCultureIgnoreCase))
                {
                    _dataStorage = new CompressedImageStorageOnDisk(storagePathTextBox.Text);
                }
            }
            else
            {
                _dataStorage = null;
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="UndoManagerSettingsForm"/> class.
        /// </summary>
        /// <param name="undoManager">The undo manager.</param>
        /// <param name="dataStorage">The data storage, where data are stored.</param>
        public UndoManagerSettingsForm(
            UndoManager undoManager,
            IDataStorage dataStorage)
        {
            InitializeComponent();

            _undoManager = undoManager;
            _dataStorage = dataStorage;

            undoLevelNumericUpDown.Value = _undoManager.UndoLevel;

            storageGroupBox.Enabled = false;

            Type   type        = this.GetType();
            string storagePath = Path.GetDirectoryName(type.Assembly.Location);

            storagePath = Path.Combine(storagePath, "Undo");
            if (!Directory.Exists(storagePath))
            {
                Directory.CreateDirectory(storagePath);
            }


            if (dataStorage is CompressedImageStorageInMemory)
            {
                compressedVintasoftImageInMemoryRadioButton.Checked = true;
            }
            else if (dataStorage is CompressedImageStorageOnDisk)
            {
                storageGroupBox.Enabled = true;
                compressedVintasoftImageOnDiskRadioButton.Checked = true;
                CompressedImageStorageOnDisk dataStorageOnDisk = (CompressedImageStorageOnDisk)dataStorage;
                storagePath = dataStorageOnDisk.StoragePath;
            }
            else
            {
                vintasoftImageInMemoryRadioButton.Checked = true;
            }

            storagePathTextBox.Text = storagePath;
        }