Beispiel #1
0
        private Object RaiseCallback(DragDroperOperation oper, Object data)
        {
            if (_callback != null)
            {
                Object result = _callback(oper, data);

                return(result);
            }

            return(null);
        }
        private Boolean CheckDragDrop(DragDroperOperation oper, Object data_1, Object data_2)
        {
            Boolean result = false;

            if (OnDragDrop != null)
            {
                List <TreeViewItemEx> items    = (List <TreeViewItemEx>)data_1;
                List <TreeViewItemEx> newItems = (List <TreeViewItemEx>)data_2;
                result = OnDragDrop(oper, items, newItems);
            }

            return(result);
        }
Beispiel #3
0
        private Object RaiseCallback(DragDroperOperation oper, Object data)
        {
            if (_callback != null)
            {
                Object result = _callback(oper, data);

                return result;
            }

            return null;
        }
        private Object TreeView_DragDrop(DragDroperOperation oper, Object data)
        {
            switch (oper)
            {
            case DragDroperOperation.Start:
            {
                List <TreeViewItemEx> items = SelectedItems;

                if (items.Count > 0)
                {
                    if (CheckDragDrop(oper, items, null) == true)
                    {
                        return(items);
                    }
                }
            }
            break;

            case DragDroperOperation.Move:
            {
                if (CheckDragDrop(oper, data, null) == true)
                {
                    // Определение элемента, над которым сейчас находится курсор
                    TreeViewItemEx dragOverItem = GetDragOverItem();

                    // Выделение элемента (для подстветки позиции куда перемещается элемент
                    SetDragOverItem(dragOverItem);

                    // Возвращение результата: Можно перемещать данные
                    return(data);
                }
            }
            break;

            case DragDroperOperation.Stop:
            {
                if (CheckDragDrop(oper, data, null) == true)
                {
                    TreeViewItemEx destItem = DragDestItem;

                    if (DragDestItem == null)
                    {
                        destItem = DragOverItem;
                    }

                    if (destItem != null)
                    {
                        // Перемещение элементов на новые позиции (копирование)
                        List <TreeViewItemEx> items    = (List <TreeViewItemEx>)data;
                        List <TreeViewItemEx> newItems = new List <TreeViewItemEx>();

                        foreach (TreeViewItemEx item in items)
                        {
                            TreeViewItemEx newItem = this.Add(destItem, item.Text, item.ImageUri, item.Tag);
                            newItems.Add(newItem);
                        }

                        Boolean isMove = (Keyboarder.IsControl == false);
                        if (isMove)
                        {
                            // Операция копирования не использовалась: Операция перемещения, удаление перемещаемых элементов
                            foreach (TreeViewItemEx item in items)
                            {
                                this.Remove(item);
                            }
                        }

                        // Оповещение приложения об окончании операции
                        if (isMove)
                        {
                            CheckDragDrop(DragDroperOperation.EndMove, items, newItems);
                        }
                        else
                        {
                            CheckDragDrop(DragDroperOperation.EndCopy, items, newItems);
                        }
                    }     // end if (определен получатель операции)
                }         // end if (операция подтверждена приложением)

                // Удаление выделения (использовался в операции DragDrop)
                SetDragOverItem(null);
            }
            break;
            } // end switch (анализ операции)

            return(null);
        }
        private Object TreeView_DragDrop(DragDroperOperation oper, Object data)
        {
            switch (oper)
            {
                case DragDroperOperation.Start:
                    {
                        List<TreeViewItemEx> items = SelectedItems;

                        if (items.Count > 0)
                        {
                            if (CheckDragDrop(oper, items, null) == true)
                                return items;
                        }
                    }
                    break;

                case DragDroperOperation.Move:
                    {
                        if (CheckDragDrop(oper, data, null) == true)
                        {
                            // Определение элемента, над которым сейчас находится курсор
                            TreeViewItemEx dragOverItem = GetDragOverItem();

                            // Выделение элемента (для подстветки позиции куда перемещается элемент
                            SetDragOverItem(dragOverItem);

                            // Возвращение результата: Можно перемещать данные
                            return data;
                        }
                    }
                    break;

                case DragDroperOperation.Stop:
                    {
                        if (CheckDragDrop(oper, data, null) == true)
                        {
                            TreeViewItemEx destItem = DragDestItem;

                            if (DragDestItem == null)
                                destItem = DragOverItem;

                            if (destItem != null)
                            {
                                // Перемещение элементов на новые позиции (копирование)
                                List<TreeViewItemEx> items    = (List<TreeViewItemEx>)data;
                                List<TreeViewItemEx> newItems = new List<TreeViewItemEx>();

                                foreach (TreeViewItemEx item in items)
                                {
                                    TreeViewItemEx newItem = this.Add(destItem, item.Text, item.ImageUri, item.Tag);
                                    newItems.Add(newItem);
                                }

                                Boolean isMove = (Keyboarder.IsControl == false);
                                if (isMove)
                                {
                                    // Операция копирования не использовалась: Операция перемещения, удаление перемещаемых элементов
                                    foreach (TreeViewItemEx item in items)
                                    {
                                        this.Remove(item);
                                    }
                                }

                                // Оповещение приложения об окончании операции
                                if (isMove)
                                    CheckDragDrop(DragDroperOperation.EndMove, items, newItems);
                                else
                                    CheckDragDrop(DragDroperOperation.EndCopy, items, newItems);

                            } // end if (определен получатель операции)
                        } // end if (операция подтверждена приложением)

                        // Удаление выделения (использовался в операции DragDrop)
                        SetDragOverItem(null);
                    }
                    break;

            } // end switch (анализ операции)

            return null;
        }
        private Boolean CheckDragDrop(DragDroperOperation oper, Object data_1, Object data_2)
        {
            Boolean result = false;

            if (OnDragDrop != null)
            {
                List<TreeViewItemEx> items    = (List<TreeViewItemEx>)data_1;
                List<TreeViewItemEx> newItems = (List<TreeViewItemEx>)data_2;
                result = OnDragDrop(oper, items, newItems);
            }

            return result;
        }