コード例 #1
0
        void DiagramsListView_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            ObservableDiagramLibraryNode selectedNode = VM.SelectedNode;

            if (null != selectedNode)
            {
                foreach (object item in e.AddedItems)
                {
                    ObservableDiagram od = item as ObservableDiagram;
                    selectedNode.SelectedDiagrams.Add(od);
                }

                foreach (object item in e.RemovedItems)
                {
                    ObservableDiagram od = item as ObservableDiagram;
                    selectedNode.SelectedDiagrams.Remove(od);
                }
            }
        }
コード例 #2
0
ファイル: IntegrationUtils.cs プロジェクト: Aphexus/Chordious
        public static void DiagramLibraryNodeToDragDrop(DependencyObject dragSource, ObservableDiagramLibraryNode diagramLibraryNode, bool useSelectedDiagrams)
        {
            if (null == dragSource)
            {
                throw new ArgumentNullException(nameof(dragSource));
            }

            if (null == diagramLibraryNode)
            {
                throw new ArgumentNullException(nameof(diagramLibraryNode));
            }

            DataObject data = new DataObject();

            data.SetData(typeof(ObservableDiagramLibraryNode), diagramLibraryNode);
            data.SetData(UseSelectedDiagramsFormat, useSelectedDiagrams);

            if (useSelectedDiagrams && diagramLibraryNode.SelectedDiagrams.Count > 0)
            {
                AddImageFormats(data, diagramLibraryNode.SelectedDiagrams[0], 1.0f);
            }

            DragDrop.DoDragDrop(dragSource, data, DragDropEffects.Copy | DragDropEffects.Move);
        }
コード例 #3
0
ファイル: IntegrationUtils.cs プロジェクト: Aphexus/Chordious
        public static void DragDropToDiagramLibraryNode(IDataObject data, ObservableDiagramLibraryNode destinationNode, DiagramLibraryNodeDragDropAction dragDropAction)
        {
            if (null == data)
            {
                throw new ArgumentNullException(nameof(data));
            }

            if (data.GetDataPresent(typeof(ObservableDiagramLibraryNode)) && data.GetData(typeof(ObservableDiagramLibraryNode)) is ObservableDiagramLibraryNode sourceNode)
            {
                bool useSelectedDiagrams = data.GetData(UseSelectedDiagramsFormat) as bool? ?? false;

                if (sourceNode == destinationNode)
                {
                    if (dragDropAction == DiagramLibraryNodeDragDropAction.Copy)
                    {
                        if (useSelectedDiagrams)
                        {
                            // Cloning diagrams within the same collection
                            if (useSelectedDiagrams && sourceNode.CloneSelected.CanExecute(null))
                            {
                                sourceNode.CloneSelected.Execute(null);
                            }
                        }
                    }
                }
                else
                {
                    if (dragDropAction == DiagramLibraryNodeDragDropAction.Copy)
                    {
                        if (useSelectedDiagrams)
                        {
                            // Copy selected diagrams into the destination
                            if (sourceNode.CopySelected.CanExecute(destinationNode?.Name))
                            {
                                sourceNode.CopySelected.Execute(destinationNode?.Name);
                            }
                        }
                        else
                        {
                            // Copy all diagrams into the destination
                            if (sourceNode.CopyNode.CanExecute(null))
                            {
                                sourceNode.CopyNode.Execute(destinationNode?.Name);
                            }
                        }
                    }
                    else if (dragDropAction == DiagramLibraryNodeDragDropAction.Move)
                    {
                        if (useSelectedDiagrams)
                        {
                            // Move all selected diagrams into the destination
                            if (sourceNode.MoveSelected.CanExecute(destinationNode?.Name))
                            {
                                sourceNode.MoveSelected.Execute(destinationNode?.Name);
                            }
                        }
                        else
                        {
                            // Move all diagrams into the destination (merge)
                            if (sourceNode.MergeNode.CanExecute(null))
                            {
                                sourceNode.MergeNode.Execute(destinationNode?.Name);
                            }
                        }
                    }
                }
            }
        }