protected void RenameColumn()
        {
            if (lvDynamicColumns.SelectedItems.Count == 1)
            {
                var dynamicColumnRow = (MainDataSet.DynamicColumnsRow)lvDynamicColumns.SelectedItems[0].Tag;

                var oldTitle = dynamicColumnRow.Title;

                var formClass = new FormEditDynamicColumn
                {
                    ViewsManager               = _views,
                    ID                         = dynamicColumnRow.ID,
                    Title                      = dynamicColumnRow.Title,
                    DynamicColumnType          = (DynamicColumnType)dynamicColumnRow.Type,
                    DisableColumnTypeSelection = true,
                    lblType                    = { Visible = false },
                    cmbType                    = { Visible = false }
                };

                if (formClass.ShowDialog() == DialogResult.OK)
                {
                    _views.MainForm.adapterDocuments.RenameDynamicColumn(dynamicColumnRow.Title, formClass.Title, dynamicColumnRow.ID, true);
                    _views.MainForm.adapterReviewMLDocumentsNew.RenameDynamicColumn(dynamicColumnRow.Title, formClass.Title, dynamicColumnRow.ID, false);

                    dynamicColumnRow.Title = formClass.Title;

                    _views.MainForm.adapterDynamicColumns.Update(dynamicColumnRow);
                    _views.MainForm.adapterDynamicColumns.Fill(_views.MainForm.datasetMain.DynamicColumns);

                    ///////////////////////////////////////////////////////////////////////////////

                    if (formClass.DynamicColumnType == DynamicColumnType.Category)
                    {
                        var svmColumnName = oldTitle + " (SVM)";
                        var svmColumn     = _views.MainForm.adapterDocuments.GetExtraColumnsCollection().FirstOrDefault(x => String.Compare(x.Name, svmColumnName, StringComparison.InvariantCultureIgnoreCase) == 0);
                        if (svmColumn != null)
                        {
                            _views.MainForm.adapterDocuments.RenameExtraColumn(svmColumn.Name, formClass.Title + " (SVM)", true);
                            _views.MainForm.adapterReviewMLDocumentsNew.RenameExtraColumn(svmColumn.Name, formClass.Title + " (SVM)", false);
                        }
                    }

                    ///////////////////////////////////////////////////////////////////////////////

                    FillColumnsList(formClass.ID);

                    _needReloadDocuments = true;
                }
            }
        }
        protected void AddColumn()
        {
            var formClass = new FormEditDynamicColumn();

            formClass.ViewsManager = _views;
            formClass.Title        = "New Column";

            if (formClass.ShowDialog() == DialogResult.OK)
            {
                var newColumn         = _views.MainForm.adapterDocuments.AddDynamicColumn(formClass.Title, formClass.DynamicColumnType, true);
                var newColumnReviewML = _views.MainForm.adapterReviewMLDocumentsNew.AddDynamicColumn(formClass.Title, formClass.DynamicColumnType, false);

                if (formClass.DynamicColumnType == DynamicColumnType.Category)
                {
                    _views.MainForm.adapterDocuments.AddExtraColumn(formClass.Title + " (SVM)", "INTEGER", true);
                    _views.MainForm.adapterReviewMLDocumentsNew.AddExtraColumn(formClass.Title + " (SVM)", "INTEGER", false);
                }

                ///////////////////////////////////////////////////////////////////////////////

                var order = _views.MainForm.datasetMain.DynamicColumns.Count(x => x.RowState != DataRowState.Deleted) + 1;

                _views.MainForm.adapterDynamicColumns.Insert(formClass.Title, (int)formClass.DynamicColumnType, order, String.Empty);
                _views.MainForm.adapterDynamicColumns.Fill(_views.MainForm.datasetMain.DynamicColumns);

                var newRow = _views.MainForm.datasetMain.DynamicColumns.FirstOrDefault(x => x.Title == formClass.Title);
                if (newRow != null)
                {
                    newColumn.DynamicColumnID         = newRow.ID;
                    newColumnReviewML.DynamicColumnID = newRow.ID;

                    FillColumnsList(newRow.ID);
                }
                else
                {
                    throw new Exception("Failed to add column");
                }
            }
        }
        protected void CloneColumn()
        {
            if (lvDynamicColumns.SelectedItems.Count != 1)
            {
                return;
            }

            var sourceDynamicColumnRow = (MainDataSet.DynamicColumnsRow)lvDynamicColumns.SelectedItems[0].Tag;
            var sourceColumnTitle      = sourceDynamicColumnRow.Title;
            var sourceColumnID         = sourceDynamicColumnRow.ID;

            var formClass = new FormEditDynamicColumn
            {
                ViewsManager               = _views,
                Title                      = sourceDynamicColumnRow.Title + " copy",
                DynamicColumnType          = (DynamicColumnType)sourceDynamicColumnRow.Type,
                DisableColumnTypeSelection = true
            };

            if (formClass.ShowDialog() == DialogResult.OK)
            {
                var newColumn         = _views.MainForm.adapterDocuments.AddDynamicColumn(formClass.Title, formClass.DynamicColumnType, true);
                var newColumnReviewML = _views.MainForm.adapterReviewMLDocumentsNew.AddDynamicColumn(formClass.Title, formClass.DynamicColumnType, false);

                ///////////////////////////////////////////////////////////////////////////////

                var order = _views.MainForm.datasetMain.DynamicColumns.Count(x => x.RowState != DataRowState.Deleted) + 1;

                var colProps = sourceDynamicColumnRow.IsPropertiesNull() ? String.Empty : sourceDynamicColumnRow.Properties;
                _views.MainForm.adapterDynamicColumns.Insert(formClass.Title, (int)formClass.DynamicColumnType, order, colProps);
                _views.MainForm.adapterDynamicColumns.Fill(_views.MainForm.datasetMain.DynamicColumns);

                var newRow = _views.MainForm.datasetMain.DynamicColumns.FirstOrDefault(x => x.Title == formClass.Title);
                if (newRow != null)
                {
                    newColumn.DynamicColumnID         = newRow.ID;
                    newColumnReviewML.DynamicColumnID = newRow.ID;

                    ///////////////////////////////////////////////////////////////////////////////

                    if (formClass.DynamicColumnType == DynamicColumnType.Category)
                    {
                        CloneCategories(sourceColumnID, sourceColumnTitle, newRow.ID, formClass.Title);
                    }

                    CloneColumnRegExps(sourceColumnID, newRow.ID);
                    CloneColumnScript(sourceColumnID, newRow.ID);
                    CloneColumnPython(sourceColumnID, newRow.ID);

                    ///////////////////////////////////////////////////////////////////////////////

                    FillColumnsList(newRow.ID);

                    _needReloadDocuments = true;
                }
                else
                {
                    throw new Exception("Failed to clone column");
                }
            }
        }