Esempio n. 1
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Бросание модели над коллекцией моделей
            /// </summary>
            /// <param name="model">Модель</param>
            /// <param name="item">Коллекция</param>
            /// <param name="args">Аргументы события</param>
            /// <returns>Статус обработки события</returns>
            //---------------------------------------------------------------------------------------------------------
            public Boolean DropModelOverCollectionModel(ICubeXModel model, TreeViewItem item, DragEventArgs args)
            {
                ICubeXCollectionModel collection_model = item.DataContext as ICubeXCollectionModel;

                // Если коллекция поддерживает данную модель
                if (collection_model != null && collection_model.IsSupportModel(model as ICubeXModelOwned))
                {
                    // Проверка на поддержку операции добавления
                    ICubeXCollectionSupportAdd operation_add = item.DataContext as ICubeXCollectionSupportAdd;
                    if (operation_add != null)
                    {
                        if (args.Effects == DragDropEffects.Move)
                        {
                            ICubeXModelOwned model_owned = model as ICubeXModelOwned;

                            SetGroupProperties(model_owned, operation_add.IModels[0] as ICubeXModelOwned);

                            operation_add.AddExistingModel(model_owned);
                        }
                        else
                        {
                            if (args.Effects == DragDropEffects.Copy)
                            {
                                ICubeXModelOwned model_owned = model.Clone() as ICubeXModelOwned;

                                SetGroupProperties(model_owned, operation_add.IModels[0] as ICubeXModelOwned);

                                operation_add.AddExistingModel(model_owned);
                            }
                        }
                    }

                    return(true);
                }

                return(false);
            }
Esempio n. 2
0
            //---------------------------------------------------------------------------------------------------------
            /// <summary>
            /// Бросание модели над другой моделью
            /// </summary>
            /// <param name="model">Модель</param>
            /// <param name="item">Модель</param>
            /// <param name="args">Аргументы события</param>
            /// <returns>Статус обработки события</returns>
            //---------------------------------------------------------------------------------------------------------
            public Boolean DropModelOverModel(ICubeXModel model, TreeViewItem item, DragEventArgs args)
            {
                // Элемент находится над моделей
                ICubeXModelOwned model_over = item.DataContext as ICubeXModelOwned;

                if (model_over != null)
                {
                    // Сначала проверяем возможность вставки в конкретное место
                    ICubeXCollectionSupportInsert operation_insert = model_over.IOwner as ICubeXCollectionSupportInsert;
                    if (operation_insert != null && operation_insert.IsSupportModel(model as ICubeXModelOwned))
                    {
                        if (args.Effects == DragDropEffects.Move)
                        {
                            ICubeXModelOwned model_owned = model as ICubeXModelOwned;

                            SetGroupProperties(model_owned, model_over);

                            operation_insert.InsertAfterModel(model_over, model_owned);
                        }
                        else
                        {
                            if (args.Effects == DragDropEffects.Copy)
                            {
                                ICubeXModelOwned model_owned = model.Clone() as ICubeXModelOwned;

                                SetGroupProperties(model_owned, model_over);

                                operation_insert.InsertAfterModel(model_over, model_owned);
                            }
                        }
                    }
                    else
                    {
                        // Проверяем возможность простого добавления
                        ICubeXCollectionSupportAdd operation_add = model_over.IOwner as ICubeXCollectionSupportAdd;
                        if (operation_add != null && operation_add.IsSupportModel(model as ICubeXModelOwned))
                        {
                            if (args.Effects == DragDropEffects.Move)
                            {
                                ICubeXModelOwned model_owned = model as ICubeXModelOwned;

                                SetGroupProperties(model_owned, model_over);

                                operation_add.AddExistingModel(model_owned);
                            }
                            else
                            {
                                if (args.Effects == DragDropEffects.Copy)
                                {
                                    ICubeXModelOwned model_owned = model.Clone() as ICubeXModelOwned;

                                    SetGroupProperties(model_owned, model_over);

                                    operation_add.AddExistingModel(model_owned);
                                }
                            }
                        }
                    }
                }

                return(false);
            }