示例#1
0
        private bool CheckDropTarget(List <Tasks.TaskNodeViewModel> _sourceItems, Tasks.TaskNodeViewModel _targetItem)
        {
            //Check whether the target item is meeting your condition
            bool _isEqual = true;

            /*
             * foreach( Tasks.TaskNodeViewModel vm in _sourceItems )
             *  if(vm.Name == _targetItem.Name)
             *       _isEqual = false;
             */

            // Drop possible if: target==folder and target!=Parent and target!=self
            foreach (Tasks.TaskNodeViewModel vm in _sourceItems)
            {
                if ((vm.Parent == _targetItem) || (vm == _targetItem))
                {
                    _isEqual = false;
                }
            }

            if (_targetItem.IsFolder == false)
            {
                _isEqual = false;
            }


            return(_isEqual);
        }
示例#2
0
        private void OnItemMouseDoubleClick(object sender, MouseButtonEventArgs args)
        {
            if (sender is TreeViewItem)
            {
                if (!((TreeViewItem)sender).IsSelected)
                {
                    return;
                }

                if (sender != null)
                {
                    Tasks.TaskNodeViewModel node = ((TreeViewItem)sender).DataContext as Tasks.TaskNodeViewModel;

                    if (node != null)
                    {
                        // Datei Öffnen
                        try
                        {
                            System.Diagnostics.Process process = new System.Diagnostics.Process();
                            process.EnableRaisingEvents = false;
                            process.StartInfo.FileName  = node.Path_1_Original;
                            process.Start();
                        }
                        catch (Exception ex)
                        {
                            MessageBox.Show("Cant execute " + node.Path_1_Original + " : " + ex.Message);
                        }
                    }
                }
            }
        }
示例#3
0
        private void TreeView_After_DragOver(object sender, DragEventArgs e)
        {
            try
            {
                Point currentPosition = e.GetPosition(TreeView_After);


                if ((Math.Abs(currentPosition.X - _lastMouseDown.X) > 10.0) ||
                    (Math.Abs(currentPosition.Y - _lastMouseDown.Y) > 10.0))
                {
                    // Verify that this is a valid drop and then store the drop target
                    Tasks.TaskNodeViewModel item = GetNearestContainer(e.OriginalSource as UIElement);
                    if (CheckDropTarget(draggedItems, item))
                    {
                        e.Effects = DragDropEffects.Move;
                    }
                    else
                    {
                        e.Effects = DragDropEffects.None;
                    }
                }
                e.Handled = true;
            }
            catch (Exception ex)
            {
                MessageBox.Show("TaskView DragOver: " + ex.Message);
                e.Effects = DragDropEffects.None;
            }
        }
示例#4
0
        /*
         * private void CopyItem(List<Tasks.TaskNodeViewModel> _sourceItems, Tasks.TaskNodeViewModel _targetItem)
         * {
         *
         *  //Asking user wether he want to drop the dragged TreeViewItem here or not
         *  if (MessageBox.Show("Would you like to drop the selected items into " + _targetItem.Name + "", "", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
         *  {
         *      try
         *      {
         *          foreach(Tasks.TaskNodeViewModel vm in _sourceItems)
         *              _targetItem.Children.Add(vm);
         *      }
         *      catch (Exception)
         *      {
         *
         *      }
         *  }
         *
         * }
         */


        private void MoveItem(List <Tasks.TaskNodeViewModel> _sourceItems, Tasks.TaskNodeViewModel _targetItem)
        {
            //Asking user wether he want to drop the dragged TreeViewItem here or not
            if (MessageBox.Show("Would you like to move the selected items into " + _targetItem.Name + "", "", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                try
                {
                    foreach (Tasks.TaskNodeViewModel vm in _sourceItems)
                    {
                        // ___SOURCE
                        if (taskViewParentType == TaskViewParentType.Source) // Update FileListsAfter
                        {
                            Tasks.TaskNodeViewModel newNode = vm.Clone(_targetItem, taskPlannerBase.IDAfterSource++);

                            _targetItem.Children.Add(newNode);

                            foreach (TaskPlanner.FileListEntry entry in tasks.fileLists.SourceFileListAfter)
                            {
                                if (entry.targetNode == vm)
                                {
                                    entry.targetNode = newNode; // Update FileList
                                }
                            }
                        }
                        // ___TARGET
                        else
                        {
                            Tasks.TaskNodeViewModel newNode = vm.Clone(_targetItem, taskPlannerBase.IDAfterTarget++);

                            _targetItem.Children.Add(newNode);

                            foreach (TaskPlanner.FileListEntry entry in tasks.fileLists.TargetFileListAfter)
                            {
                                if (entry.targetNode == vm)
                                {
                                    entry.targetNode = newNode; // Update FileList
                                }
                            }
                        }



                        // Von Original Parent entfernen
                        //foreach (Tasks.TaskNodeViewModel vm in _sourceItems)
                        //{
                        vm.RemoveSelf();
                        //}
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("TaskView MoveItem: " + ex.Message);
                }

                InitializeComponent();
            }
        }
示例#5
0
        private Tasks.TaskNodeViewModel GetNearestContainer(UIElement element)
        {
            // Walk up the element tree to the nearest tree view item.
            TreeViewItem UIContainer = FindParent <TreeViewItem>(element);

            Tasks.TaskNodeViewModel NVContainer = null;

            if (UIContainer != null)
            {
                NVContainer = UIContainer.DataContext as Tasks.TaskNodeViewModel;
            }
            return(NVContainer);
        }
示例#6
0
        private void TreeView_After_Drop(object sender, DragEventArgs e)
        {
            try
            {
                e.Effects = DragDropEffects.None;
                e.Handled = true;

                // Verify that this is a valid drop and then store the drop target
                Tasks.TaskNodeViewModel TargetItem = GetNearestContainer(e.OriginalSource as UIElement);
                if (TargetItem != null && draggedItems != null)
                {
                    _target   = TargetItem;
                    e.Effects = DragDropEffects.Move;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("TaskView Drop: " + ex.Message);
                e.Effects = DragDropEffects.None;
            }
        }
示例#7
0
        private void TreeView_After_MouseMove(object sender, MouseEventArgs e)
        {
            try
            {
                if (e.LeftButton == MouseButtonState.Pressed)
                {
                    UIElement element       = e.OriginalSource as UIElement;
                    bool      bGridSplitter = CheckGridSplitter(element);


                    Point currentPosition = e.GetPosition(TreeView_After);

                    double movedX = 0, movedY = 0;
                    if (!((_lastMouseDown.X == -1) && (_lastMouseDown.Y == -1)))
                    {
                        movedX = Math.Abs(currentPosition.X - _lastMouseDown.X);
                        movedY = Math.Abs(currentPosition.Y - _lastMouseDown.Y);
                    }

                    if ((movedX > const_DragMoveDist) ||
                        (movedY > const_DragMoveDist))
                    {
                        //draggedItem = (Tasks.TaskNodeViewModel)TreeView_After.SelectedItem;
                        if (NVM_TreeView_After_selectedItems.Count > 0)
                        {
                            draggedItems = new List <Tasks.TaskNodeViewModel>();
                            foreach (Tasks.TaskNodeViewModel vm in NVM_TreeView_After_selectedItems.Keys)
                            {
                                draggedItems.Add(vm);
                            }
                        }
                        else
                        {
                            draggedItems = null;
                        }

                        if ((draggedItems != null) && !bGridSplitter)
                        {
                            DragDropEffects finalDropEffect = DragDrop.DoDragDrop(TreeView_After, TreeView_After.SelectedValue,
                                                                                  DragDropEffects.Move);
                            //Checking target is not null and item is dragging(moving)
                            if ((finalDropEffect == DragDropEffects.Move) && (_target != null))
                            {
                                // A Move drop was accepted

                                /*
                                 * bool Correct_drop = true;
                                 * foreach( Tasks.TaskNodeViewModel vm in draggedItems )
                                 *  if(vm.Name == _target.Name)
                                 *      Correct_drop = false;
                                 */

                                //private bool CheckDropTarget(List<Tasks.TaskNodeViewModel> _sourceItems, Tasks.TaskNodeViewModel _targetItem)


                                if (CheckDropTarget(draggedItems, _target))
                                {
                                    MoveItem(draggedItems, _target);
                                    _target      = null;
                                    draggedItems = null;
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("TaskView MouseMove: " + ex.Message);

                draggedItems = null;
            }
        }