/// <summary>
        /// Executes the action.
        /// </summary>
        /// <param name="actionCode">The action code.</param>
        /// <param name="shift">if set to <c>true</c> [shift].</param>
        /// <param name="control">if set to <c>true</c> [control].</param>
        /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
        /// <exception cref="System.ArgumentOutOfRangeException">the actionCode - null</exception>
        private bool?ExecuteAction(UltraGridAction actionCode, bool shift, bool control)
        {
            switch (actionCode)
            {
            case UltraGridAction.ToggleEditMode:
                return(this.ActiveCell.ToggleEditMode());

            case UltraGridAction.ToggleDropdown:
                return(this.ActiveCell.ToggleDropDown());

            case UltraGridAction.UndoCell:
                return(this.ActiveCell?.CancelUpdate());

            case UltraGridAction.UndoRow:
                return(this.ActiveRow.CancelUpdate());

            case UltraGridAction.CloseDropdown:
                return(this.ActiveCell.HideDropDown());

            case UltraGridAction.EnterEditMode:
                return(this.ActiveCell.EnterEditMode());

            case UltraGridAction.EnterEditModeAndDropdown:
                return(this.ActiveCell.ShowDropDown());

            case UltraGridAction.ExpandRow:
                return(this.ActiveRow.Expand());

            case UltraGridAction.DeleteRows:
                return(this.DeleteSelectedRows());

            case UltraGridAction.DeactivateCell:
                return(this.InactiveCell());

            case UltraGridAction.ActivateCell:
                return(this.SetActiveCell());

            case UltraGridAction.CollapseRow:
                return(this.ActiveRow.Collapse());

            case UltraGridAction.ToggleCheckbox:
                return(this.ActiveCell.ToggleCheckBox());

            case UltraGridAction.ExitEditMode:
                return(this.ActiveCell.ExitEditMode());

            case UltraGridAction.CommitRow:
                return(this.ActiveRow.CommitRow());

            case UltraGridAction.Copy:
                return(this.ExecuteCopyCellsActions());

            case UltraGridAction.Cut:
                return(this.ExecuteCutCellsActions());

            case UltraGridAction.DeleteCells:
                return(this.ExecuteDeleteCellsActions());

            case UltraGridAction.Paste:
                return(this.ExecutePasteCellsActions());

            case UltraGridAction.Undo:
                return(this.ExecuteUndoCellsActions());

            case UltraGridAction.Redo:
                return(this.ExecuteRedoCellsActions());

            default:
                throw new ArgumentOutOfRangeException(nameof(actionCode), actionCode, null);
            }
        }
 /// <summary>
 /// Performs the action.
 /// </summary>
 /// <param name="actionCode">The action code.</param>
 /// <param name="shift">if set to <c>true</c> [shift].</param>
 /// <param name="control">if set to <c>true</c> [control].</param>
 /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns>
 public virtual bool PerformAction(UltraGridAction actionCode, bool shift = false, bool control = false)
 {
     return(this.ExecuteAction(actionCode, shift, control) ?? false);
 }