コード例 #1
0
 public NetworkDiagramVM()
 {
     DefaultConnectorType = ConnectorType.Line;
     PortVisibility       = PortVisibility.Visible;
     Nodes           = new NodeCollection();
     Connectors      = new ConnectorCollection();
     Groups          = new GroupCollection();
     PageSettings    = new PageSettings();
     HorizontalRuler = new Ruler();
     VerticalRuler   = new Ruler()
     {
         Orientation = Orientation.Vertical
     };
     Constraints           |= GraphConstraints.Undoable;
     AnnotationConstraints |= AnnotationConstraints.Selectable | AnnotationConstraints.Draggable | AnnotationConstraints.Editable | AnnotationConstraints.Resizable;
     SelectedItems          = new SelectorViewModel();
     SnapSettings           = new SnapSettings()
     {
         SnapConstraints = SnapConstraints.ShowLines | SnapConstraints.SnapToLines,
         SnapToObject    = SnapToObject.All,
     };
     DragEnterCommand = new DelegateCommand(OnDragEnterCommand);
     DragOverCommand  = new DelegateCommand(OnDragOverCommand);
     ItemAddedCommand = new DelegateCommand(OnItemAddedCommand);
     DropCommand      = new DelegateCommand(OnDropCommand);
 }
コード例 #2
0
        public override object Convert(object value)
        {
            if (value == null)
            {
                return(value);
            }
            MVEntry mventry = Utils.FindMVEntries(LookupAttributeName, value as string, 1).FirstOrDefault();

            if (mventry != null)
            {
                if (this.ExtractValueFromAttribute.Equals("[DN]"))
                {
                    ConnectorCollection col = mventry.ConnectedMAs[MAName].Connectors;
                    if (col != null && col.Count.Equals(1))
                    {
                        value = mventry.ConnectedMAs[MAName].Connectors.ByIndex[0].DN.ToString();
                    }
                }
                else
                {
                    value = mventry[ExtractValueFromAttribute].IsPresent ? mventry[ExtractValueFromAttribute].Value : null;
                }
            }
            return(value);
        }
コード例 #3
0
        public DiagramVM()
        {
            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();

            PortVisibility = PortVisibility.Visible;

            anno = new NodePortViewModel()
            {
                UnitHeight = 10, UnitWidth = 10,
            };

            NodeViewModel node = new NodeViewModel()
            {
                OffsetX    = 500,
                OffsetY    = 250,
                UnitHeight = 100,
                UnitWidth  = 100,
                Ports      = new PortCollection()
                {
                    anno,
                },
            };

            (Nodes as NodeCollection).Add(node);
        }
コード例 #4
0
 public LogicCircuitDiagramVM()
 {
     PortVisibility       = PortVisibility.Visible;
     DefaultConnectorType = ConnectorType.Orthogonal;
     Nodes           = new NodeCollection();
     Connectors      = new ConnectorCollection();
     HorizontalRuler = new Ruler();
     VerticalRuler   = new Ruler()
     {
         Orientation = Orientation.Vertical
     };
     Constraints  |= GraphConstraints.Undoable | GraphConstraints.AllowPan | GraphConstraints.Bridging;
     SelectedItems = new SelectorViewModel()
     {
         SelectorConstraints = SelectorConstraints.Default & ~SelectorConstraints.Resizer,
     };
     PageSettings = new PageSettings();
     SnapSettings = new SnapSettings()
     {
         SnapConstraints = SnapConstraints.ShowLines,
         SnapToObject    = SnapToObject.All,
     };
     DragEnterCommand = new DelegateCommand(OnDragEnterCommand);
     DragOverCommand  = new DelegateCommand(OnDragOverCommand);
     ItemAddedCommand = new DelegateCommand(OnItemAddedCommand);
     DropCommand      = new DelegateCommand(OnDropCommand);
 }
コード例 #5
0
 private void CollectionChangedHandler(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
 {
     if (e.NewItems != null)
     {
         ConnectorCollection.Add(new IPluginInformation(((ConnectorVisual)e.NewItems[0]).Model));
     }
 }
コード例 #6
0
        public DiagramVM()
        {
            Connectors = new ConnectorCollection();
            Nodes      = new NodeCollection();

            this.ScrollSettings = new ScrollSettings();

            ViewCommand   = new Command(OnView);
            CenterCommand = new Command(OnCenter);

            NodeViewModel node1 = Addnode(200, 200, "ViewNode", "Rectangle", "NodeStyle");
            NodeViewModel node2 = Addnode(400, 400, "ViewNode", "Rectangle", "NodeStyle");

            node3 = Addnode(1200, 900, "Node3", "Ellipse", "ViewNodeStyle");
            node4 = Addnode(1400, 1800, "Node4", "Ellipse", "CenterNodeStyle");

            ConnectorViewModel cvm = new ConnectorViewModel()
            {
                SourceNode = node1,
                TargetNode = node2
            };

            (Connectors as ConnectorCollection).Add(cvm);

            //ConnectorViewModel cvm1 = new ConnectorViewModel()
            //{
            //    SourceNode = node3,
            //    TargetNode = node4
            //};
            //(Connectors as ConnectorCollection).Add(cvm1);
        }
コード例 #7
0
        public DiagramVM()
        {
            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();

            NodeViewModel node = new NodeViewModel();

            node.Shape = new RectangleGeometry()
            {
                Rect = new System.Windows.Rect(100, 100, 100, 100)
            };
            node.ShapeStyle = App.Current.Resources["NodeStyle"] as Style;
            node.UnitHeight = 100;
            node.UnitWidth  = 100;
            node.OffsetX    = 300;
            node.OffsetY    = 500;
            (Nodes as NodeCollection).Add(node);


            NodeViewModel node1 = new NodeViewModel();

            node1.Shape = new EllipseGeometry()
            {
                RadiusX = 100, RadiusY = 100
            };
            node1.ShapeStyle = App.Current.Resources["NodeStyle"] as Style;
            node1.UnitHeight = 100;
            node1.UnitWidth  = 100;
            node1.OffsetX    = 500;
            node1.OffsetY    = 500;
            (Nodes as NodeCollection).Add(node1);

            SelectButtonCommand = new Command(OnSelectedButton);
        }
コード例 #8
0
 public void NewFile()
 {
     NodeCollection.Clear();
     ConnectorCollection.Clear();
     Children.Clear();
     radialMenu.Dispose();
     radialMenu = null;
 }
コード例 #9
0
 public void NewFile()
 {
     NodeCollection.Clear();
     ConnectorCollection.Clear();
     Children.Clear();
     if (radialMenu != null)
     {
         radialMenu.Dispose();
     }
     radialMenu    = null;
     selectionNode = null;
 }
コード例 #10
0
        public ConstraintsDiagramVM()
        {
            // Initializing Properties for DiagramViewModel

            SelectedItems = new SelectorViewModel()
            {
                SelectorConstraints = SelectorConstraints.Default | SelectorConstraints.HideDisabledResizer,
            };

            HorizontalRuler = new Ruler();

            VerticalRuler = new Ruler()
            {
                Orientation = Orientation.Vertical
            };

            SnapSettings = new SnapSettings()
            {
                SnapToObject    = SnapToObject.All,
                SnapConstraints = SnapConstraints.All,
            };

            ItemSelectedCommand = new Command(OnItemSelected);
            first = true;

            #region Nodes and Connectors

            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();

            CreateNode(90, "Rectangle", "Selection = False", "Selection");
            CreateNode(290, "Ellipse", "Dragging = False", "Drag");
            CreateNode(490, "Heptagon", "Delete = False", "Delete");
            CreateNode(690, "Cylinder", "Rotate = False", "Rotate");
            CreateNode(890, "Plus", "TextEdit = False", "Edit");
            CreateNode(1090, "Diamond", "Resizing = False", "Resize");
            CreateNodeforLabel("Rectangle", "Node");
            CreateNodeforLabel("Rectangle", "Connector");

            CreateConnector(new Point(40, 500), new Point(190, 600), "Selection = False", "Selection");
            CreateConnector(new Point(240, 500), new Point(390, 600), "Dragging = True", "Drag");
            CreateConnector(new Point(440, 500), new Point(590, 600), "Delete = False", "Delete");
            CreateConnector(new Point(640, 500), new Point(790, 600), "EndThumb = False", "EndThumb");
            CreateConnector(new Point(840, 500), new Point(990, 600), "EndDraggable = False", "EndDraggable");
            CreateConnector(new Point(1040, 500), new Point(1190, 600), "SegmentThumb = False", "SegmentThumb");

            #endregion
        }
コード例 #11
0
        protected SwitchShape(SerializationInfo info, StreamingContext context) : base(info, context)
        {
            m_switchCount = info.GetInt32("m_switchCount");


            m_leftConnector           = (Connector)info.GetValue("m_leftConnector", typeof(Connector));
            m_leftConnector.BelongsTo = this;
            Connectors.Add(m_leftConnector);

            m_switchConnectors = (ConnectorCollection)info.GetValue("m_switchConnectors", typeof(ConnectorCollection));
            foreach (Connector connector in m_switchConnectors)
            {
                connector.BelongsTo = this;
                Connectors.Add(connector);
            }
        }
コード例 #12
0
        /// <summary>
        /// This method is used to execute new command
        /// </summary>
        /// <param name="obj"></param>
        private void OnNew(object obj)
        {
            if (this.HasChanges)
            {
                MessageBoxResult messageBoxResult = MessageBox.Show(
                    "Do you want to save the Diagram?",
                    "SfDiagram",
                    MessageBoxButton.YesNo);
                if (messageBoxResult == MessageBoxResult.Yes)
                {
                    this.OnSave(null);
                }
            }

            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();
        }
コード例 #13
0
        public DiagramVM()
        {
            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();

            this.SelectedItems = new SelectorViewModel();

            NodeViewModel node = new NodeViewModel()
            {
                OffsetX    = 500,
                OffsetY    = 250,
                UnitHeight = 100,
                UnitWidth  = 100,
            };

            (Nodes as NodeCollection).Add(node);
        }
コード例 #14
0
        /// <summary>
        /// Constructs a connection between the two given points
        /// </summary>
        /// <param name="from">the starting point of the connection</param>
        /// <param name="to">the end-point of the connection</param>
        public Connection(DiagramPoint from, DiagramPoint to)
        {
            Connector connector1, connector2;

            Connectors = new ConnectorCollection();

            this.from                  = new Connector(from.Copy());
            this.from.Name             = "From";
            this.from.LocationChanged += Connector_LocationChanged;
            connector1                 = this.from;
            Connectors.Add(connector1);

            this.to                    = new Connector(to.Copy());
            this.To.Name               = "To";
            connector2                 = this.to;
            this.to.LocationChanged   += Connector_LocationChanged;
            this.To.AttachedToChanged += To_AttachedToChanged;
            Connectors.Add(connector2);
        }
コード例 #15
0
        public ConstraintsViewModel(DemoControl demo)
        {
            View = demo;

            // Initializing Properties for DiagramViewModel

            SelectedItems = new SelectorViewModel()
            {
                SelectorConstraints = SelectorConstraints.Default | SelectorConstraints.HideDisabledResizer,
            };

            ItemSelectedCommand = new DelegateCommand(OnItemSelected);
            ItemAddedCommand    = new DelegateCommand(OnItemAddedCommand);
            first = true;

            #region Nodes and Connectors

            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();

            CreateNode(90, "Rectangle", "Selection = False", "Selection");
            CreateNode(290, "Ellipse", "Dragging = False", "Drag");
            CreateNode(490, "Heptagon", "Delete = False", "Delete");
            CreateNode(690, "Cylinder", "Rotate = False", "Rotate");
            CreateNode(890, "Plus", "TextEdit = False", "Edit");
            CreateNode(1090, "Diamond", "Resizing = False", "Resize");
            CreateNodeforLabel("Rectangle", "Node");
            CreateNodeforLabel("Rectangle", "Connector");

            CreateConnector(new Point(40, 500), new Point(190, 600), "Selection = False", "Selection");
            CreateConnector(new Point(240, 500), new Point(390, 600), "Dragging = True", "Drag");
            CreateConnector(new Point(440, 500), new Point(590, 600), "Delete = False", "Delete");
            CreateConnector(new Point(640, 500), new Point(790, 600), "EndThumb = False", "EndThumb");
            CreateConnector(new Point(840, 500), new Point(990, 600), "EndDraggable = False", "EndDraggable");
            CreateConnector(new Point(1040, 500), new Point(1190, 600), "SegmentThumb = False", "SegmentThumb");

            #endregion
        }
コード例 #16
0
        public DiagramVM()
        {
            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();

            anno = new AnnotationEditorViewModel()
            {
                Content = "Annoatation",
            };

            NodeViewModel node = new NodeViewModel()
            {
                OffsetX     = 500,
                OffsetY     = 250,
                UnitHeight  = 100,
                UnitWidth   = 100,
                Annotations = new AnnotationCollection()
                {
                    anno,
                },
            };

            (Nodes as NodeCollection).Add(node);
        }
コード例 #17
0
 public DiagramVM()
 {
     Nodes         = new NodeCollection();
     Connectors    = new ConnectorCollection();
     Groups        = new GroupCollection();
     SelectedItems = new SelectorViewModel();
     SnapSettings  = new SnapSettings()
     {
         SnapToObject = SnapToObject.All, SnapConstraints = SnapConstraints.All
     };
     HorizontalRuler = new Syncfusion.UI.Xaml.Diagram.Controls.Ruler()
     {
         Orientation = System.Windows.Controls.Orientation.Horizontal
     };
     VerticalRuler = new Syncfusion.UI.Xaml.Diagram.Controls.Ruler()
     {
         Orientation = System.Windows.Controls.Orientation.Vertical
     };
     PageSettings         = new PageSettings();
     PortVisibility       = PortVisibility.MouseOverOnConnect;
     DefaultConnectorType = ConnectorType.Orthogonal;
     Constraints          = GraphConstraints.Default | GraphConstraints.Undoable;
     ItemAddedCommand     = new DelegateCommand(OnItemAdded);
 }
コード例 #18
0
        private void InitialPath()
        {
            Connector           connector1 = this.from, connector2 = this.to;
            int                 x = 0, y = 0;
            ConnectorCollection connectors = new ConnectorCollection();

            connectors.Add(this.from);

            #region  对上

            if (connector1.ConnectorDirection == ConnectorDirection.Down && connector2.ConnectorDirection == ConnectorDirection.Up)
            {
                if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y >= connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y + 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = (connector1.Point.X + connector2.Point.X) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y -= 30 + connector1.Point.Y - connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region  对左

            else if (connector1.ConnectorDirection == ConnectorDirection.Down && connector2.ConnectorDirection == ConnectorDirection.Left)
            {
                if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X >= connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y < connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y + 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region  对右

            else if (connector1.ConnectorDirection == ConnectorDirection.Down && connector2.ConnectorDirection == ConnectorDirection.Right)
            {
                if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X <= connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y < connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y + 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region  对下

            else if (connector1.ConnectorDirection == ConnectorDirection.Down && connector2.ConnectorDirection == ConnectorDirection.Down)
            {
                if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector2.Point.Y + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y < connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y + 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y + 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector1.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y -= 10 + (connector1.Point.Y - connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 右对上

            else if (connector1.ConnectorDirection == ConnectorDirection.Right && connector2.ConnectorDirection == ConnectorDirection.Up)
            {
                if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X + 10 >= connector2.Point.X)
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y < connector2.Point.Y)
                {
                    x = connector2.Point.X;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 右对右

            else if (connector1.ConnectorDirection == ConnectorDirection.Right && connector2.ConnectorDirection == ConnectorDirection.Right)
            {
                x = Math.Max(connector1.Point.X + 10, connector2.Point.X + 20);
                y = connector1.Point.Y;
                connectors.Add(new Connector(new DiagramPoint(x, y)));

                y = connector2.Point.Y;
                connectors.Add(new Connector(new DiagramPoint(x, y)));
            }

            #endregion

            #region 右对下

            else if (connector1.ConnectorDirection == ConnectorDirection.Right && connector2.ConnectorDirection == ConnectorDirection.Down)
            {
                if (connector1.Point.Y < connector2.Point.Y)
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y == connector2.Point.Y)
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector1.Point.Y + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.X + 10 < connector2.Point.X)
                {
                    x = connector2.Point.X;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 右对左

            else if (connector1.ConnectorDirection == ConnectorDirection.Right && connector2.ConnectorDirection == ConnectorDirection.Left)
            {
                if (connector1.Point.X + 10 >= connector2.Point.X)
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else
                {
                    x = connector1.Point.X + 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region  对上

            else if (connector1.ConnectorDirection == ConnectorDirection.Up && connector2.ConnectorDirection == ConnectorDirection.Up)
            {
                x = connector1.Point.X;
                y = Math.Min(connector1.Point.Y - 10, connector2.Point.Y - 20);
                connectors.Add(new Connector(new DiagramPoint(x, y)));

                x = connector2.Point.X;
                connectors.Add(new Connector(new DiagramPoint(x, y)));
            }

            #endregion

            #region  对右

            else if (connector1.ConnectorDirection == ConnectorDirection.Up && connector2.ConnectorDirection == ConnectorDirection.Right)
            {
                if (connector1.Point.Y > connector2.Point.Y && connector1.Point.X > connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y > connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y <= connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y - 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region  对下

            else if (connector1.ConnectorDirection == ConnectorDirection.Up && connector2.ConnectorDirection == ConnectorDirection.Down)
            {
                if (connector1.Point.Y > connector2.Point.Y && connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y - 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = (connector1.Point.X + connector2.Point.X) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region  对左

            else if (connector1.ConnectorDirection == ConnectorDirection.Up && connector2.ConnectorDirection == ConnectorDirection.Left)
            {
                if (connector1.Point.Y > connector2.Point.Y && connector1.Point.X < connector2.Point.X)
                {
                    x = connector1.Point.X;
                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y > connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y <= connector2.Point.Y)
                {
                    x = connector1.Point.X;
                    y = connector1.Point.Y - 10;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 左对上

            else if (connector1.ConnectorDirection == ConnectorDirection.Left && connector2.ConnectorDirection == ConnectorDirection.Up)
            {
                if (connector1.Point.Y < connector2.Point.Y && connector1.Point.X - 10 >= connector2.Point.X)
                {
                    x = connector2.Point.X;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y < connector2.Point.Y)
                {
                    x = connector1.Point.X - 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.Y > connector2.Point.Y)
                {
                    x = connector1.Point.X - 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y - 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 左对右

            else if (connector1.ConnectorDirection == ConnectorDirection.Left && connector2.ConnectorDirection == ConnectorDirection.Right)
            {
                if (connector1.Point.X - 10 >= connector2.Point.X)
                {
                    x = (connector1.Point.X + connector2.Point.X) / 2;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else
                {
                    x = connector1.Point.X - 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = (connector1.Point.Y + connector2.Point.Y) / 2;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 左对下

            else if (connector1.ConnectorDirection == ConnectorDirection.Left && connector2.ConnectorDirection == ConnectorDirection.Down)
            {
                if (connector1.Point.Y > connector2.Point.Y && connector1.Point.X > connector2.Point.X)
                {
                    x = connector2.Point.X;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
                else if (connector1.Point.X != connector2.Point.X)
                {
                    x = connector1.Point.X - 10;
                    y = connector1.Point.Y;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    y = connector2.Point.Y + 20;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));

                    x = connector2.Point.X;
                    connectors.Add(new Connector(new DiagramPoint(x, y)));
                }
            }

            #endregion

            #region 左对左

            else if (connector1.ConnectorDirection == ConnectorDirection.Left && connector2.ConnectorDirection == ConnectorDirection.Left)
            {
                x = Math.Min(connector1.Point.X - 10, connector2.Point.X - 20);
                y = connector1.Point.Y;
                connectors.Add(new Connector(new DiagramPoint(x, y)));

                y = connector2.Point.Y;
                connectors.Add(new Connector(new DiagramPoint(x, y)));
            }

            #endregion

            connectors.Add(this.to);
            Connectors = connectors;
        }
コード例 #19
0
ファイル: MainWindow.xaml.cs プロジェクト: dmonjeau/wpf-demos
        //Connects the Hexagon arrangment Nodes.
        private void CreateConnection()
        {
            int                 increment           = 0;
            int                 altenate            = 0;
            NodeCollection      nodecollection      = diagram.Nodes as NodeCollection;
            ConnectorCollection connectorcollection = diagram.Connectors as ConnectorCollection;

            for (int j = 1; j < 101; j++)
            {
                for (int i = 0; i < 100; i++)
                {
                    if ((i + increment + 1) % 100 != 0)
                    {
                        ConnectorViewModel cv1 = new ConnectorViewModel()
                        {
                            SourceNode = nodecollection.ToList()[i + increment],
                            TargetNode = nodecollection.ToList()[i + 1 + increment],
                        };
                        connectorcollection.Add(cv1);
                    }
                    if (j == 1 && i == 0)
                    {
                        ConnectorViewModel cv1 = new ConnectorViewModel()
                        {
                            SourceNode = nodecollection.ToList()[i],
                            TargetNode = nodecollection.ToList()[i + 101],
                        };
                        connectorcollection.Add(cv1);
                    }
                    if (j != 1)
                    {
                        if (i == 0)
                        {
                            if (!((increment + 100) > 9900))
                            {
                                ConnectorViewModel cv1 = new ConnectorViewModel()
                                {
                                    SourceNode = nodecollection.ToList()[i + increment],
                                    TargetNode = nodecollection.ToList()[i + 1 + (increment + 100)],
                                };
                                connectorcollection.Add(cv1);
                            }
                        }
                        else
                        {
                            altenate += 1;
                            if (altenate == 2 || altenate == 5)
                            {
                                if (altenate == 2)
                                {
                                    ConnectorViewModel cv1 = new ConnectorViewModel()
                                    {
                                        SourceNode = nodecollection.ToList()[i + increment],
                                        TargetNode = nodecollection.ToList()[i + 1 + (increment - 100)],
                                    };
                                    connectorcollection.Add(cv1);
                                }
                                else
                                {
                                    ConnectorViewModel cv1 = new ConnectorViewModel()
                                    {
                                        SourceNode = nodecollection.ToList()[i + increment],
                                        TargetNode = nodecollection.ToList()[i - 1 + (increment - 100)],
                                    };
                                    connectorcollection.Add(cv1);
                                }
                            }
                            if (altenate == 5)
                            {
                                altenate  = 0;
                                altenate += 1;
                            }
                        }
                    }
                }
                increment += 100;
                altenate   = 0;
            }
        }
コード例 #20
0
 public void OnClearCommand(object param)
 {
     NodeCollection.Clear();
     ConnectorCollection.Clear();
     GroupCollection.Clear();
 }
コード例 #21
0
        // Constructor
        public DiagramVM()
        {
            //Adding ItemAddedCommand, DropCommand, SelectorChangedCommand, SelectorChangedCommand
            ItemAddedCommand       = new DelegateCommand(OnItemAddedCommand);
            DropCommand            = new DelegateCommand(OnDropCommand);
            SelectorChangedCommand = new DelegateCommand(OnSelectorChangedCommand);
            ItemDeletingCommand    = new DelegateCommand(OnItemDeletingCommand);
            //Removing quick commands, rotators from selector.
            this.SelectedItems = new SelectorViewModel()
            {
                SelectorConstraints = SelectorConstraints.Default & ~(SelectorConstraints.QuickCommands | SelectorConstraints.Rotator),
            };

            //Adding vertical and horizontal rulers.
            VerticalRuler = new Syncfusion.UI.Xaml.Diagram.Controls.Ruler()
            {
                Orientation = System.Windows.Controls.Orientation.Vertical,
            };

            HorizontalRuler = new Syncfusion.UI.Xaml.Diagram.Controls.Ruler()
            {
                Orientation = System.Windows.Controls.Orientation.Vertical,
            };

            //Adding gridlines to diagram.
            SnapSettings = new SnapSettings()
            {
                SnapConstraints = SnapConstraints.All,
            };

            //Defining default connector type as line.
            DefaultConnectorType = ConnectorType.Line;

            //Initialize nodes, groups and connectors collection
            Nodes      = new NodeCollection();
            Connectors = new ConnectorCollection();
            Groups     = new GroupCollection();

            //Adding Office Theme to the diagram
            DiagramTheme theme = new OfficeTheme();

            this.Theme = theme;

            //Creating car nodes and adding nodes into nodes collection.
            NodeViewModel car = CreateNodes(150, 40, 500, 200, "Car");

            (this.Nodes as NodeCollection).Add(car);

            NodeViewModel carInfo = CreateNodes(150, 20, 500, 230, "Car Info");

            (this.Nodes as NodeCollection).Add(carInfo);

            NodeViewModel carDetails = CreateNodes(150, 20, 500, 250, "Car Details");

            (this.Nodes as NodeCollection).Add(carDetails);

            //Creating group for Car related nodes and adding group to GroupsCollection.
            GroupViewModel CarGroup = new GroupViewModel()
            {
                Nodes = new NodeCollection()
                {
                    car,
                    carInfo,
                    carDetails,
                },
            };

            (this.Groups as GroupCollection).Add(CarGroup);

            //Creating body parts nodes and adding nodes into nodes collection.
            NodeViewModel BodyParts = CreateNodes(150, 40, 300, 500, "Body Parts");

            (this.Nodes as NodeCollection).Add(BodyParts);

            NodeViewModel BodyPartsInfo = CreateNodes(150, 20, 300, 530, "Body Parts Info");

            (this.Nodes as NodeCollection).Add(BodyPartsInfo);

            //Creating group for body parts related nodes and adding group to GroupsCollection.
            GroupViewModel BodyPartsGroup = new GroupViewModel()
            {
                Nodes = new NodeCollection()
                {
                    BodyParts,
                    BodyPartsInfo,
                },
            };

            (this.Groups as GroupCollection).Add(BodyPartsGroup);

            //Creating nodes for other parts related nodes and adding nodes to NodesCollection.
            NodeViewModel OtherParts = CreateNodes(150, 40, 500, 500, "Other Parts");

            (this.Nodes as NodeCollection).Add(OtherParts);

            NodeViewModel OtherPartsInfo = CreateNodes(150, 20, 500, 530, "Others Parts Info");

            (this.Nodes as NodeCollection).Add(OtherPartsInfo);

            //Creating group for other parts related nodes and adding nodes to GroupsCollection.
            GroupViewModel OtherPartsGroup = new GroupViewModel()
            {
                Nodes = new NodeCollection()
                {
                    OtherParts,
                    OtherPartsInfo,
                },
            };

            (this.Groups as GroupCollection).Add(OtherPartsGroup);

            //Creating nodes for engine parts related nodes and adding nodes to NodesCollection.
            NodeViewModel Engine = CreateNodes(150, 40, 700, 500, "Engine Parts");

            (this.Nodes as NodeCollection).Add(Engine);

            NodeViewModel EngineInfo = CreateNodes(150, 20, 700, 530, "Engine Parts Info");

            (this.Nodes as NodeCollection).Add(EngineInfo);

            GroupViewModel EngineGroup = new GroupViewModel()
            {
                Nodes = new NodeCollection()
                {
                    Engine,
                    EngineInfo,
                },
            };

            (this.Groups as GroupCollection).Add(EngineGroup);

            //Creating connectors.
            ConnectorViewModel CarToBodyParts  = CreateConnector(BodyPartsGroup, CarGroup);
            ConnectorViewModel CarToOtherParts = CreateConnector(OtherPartsGroup, CarGroup);
            ConnectorViewModel CarToEngine     = CreateConnector(EngineGroup, CarGroup);

            //Adding connector to the collection.
            (this.Connectors as ConnectorCollection).Add(CarToBodyParts);
            (this.Connectors as ConnectorCollection).Add(CarToOtherParts);
            (this.Connectors as ConnectorCollection).Add(CarToEngine);
        }
コード例 #22
0
 /// <summary>
 /// Default connector
 /// </summary>
 public Connector()
 {
     attachedConnectors = new ConnectorCollection();
 }
コード例 #23
0
        public void DeserializeNetwork(string filePath)
        {
            NewFile();

            // Create an reader
            using (var reader = new XmlTextReader(filePath))
            {
                reader.MoveToContent();

                var enumString = reader.GetAttribute("GraphFlowDirection");

                if (enumString != null)
                {
                    ImportFlowDirection =
                        (GraphFlowDirections)Enum.Parse(typeof(GraphFlowDirections), enumString, true);
                }


                reader.ReadToDescendant("Nodes");

                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                    case XmlNodeType.Element:

                        if (reader.Name != null)
                        {
                            var type = Type.GetType(reader.Name);

                            if (type == null)
                            {
                                try     // try to find type in entry assembly
                                {
                                    var assembly = Assembly.GetEntryAssembly();
                                    type = assembly.GetTypes().First(t => t.FullName == reader.Name);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex);
                                }

                                try     // try to find type in ExternalNodeTypes
                                {
                                    type = ExternalNodeTypes.ToArray().First(t => t.FullName == reader.Name);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine(ex);
                                }
                            }


                            if (type != null)
                            {
                                if (type.IsSubclassOf(typeof(Node)))
                                {
                                    var node = (Node)Activator.CreateInstance(type, this);
                                    node.DeserializeNetwork(reader);
                                    NodeCollection.Add(node);
                                }
                                else if (type == typeof(Connector))
                                {
                                    Node startNode = null;
                                    Node endNode   = null;

                                    var value = reader.GetAttribute("StartNode");
                                    if (value != null)
                                    {
                                        startNode =
                                            NodeCollection.FirstOrDefault(node => node.Guid == new Guid(value));
                                    }

                                    value = reader.GetAttribute("EndNode");
                                    if (value != null)
                                    {
                                        endNode = NodeCollection.FirstOrDefault(node => node.Guid == new Guid(value));
                                    }

                                    value = reader.GetAttribute("StartIndex");
                                    var startIndex = Convert.ToInt32(value);

                                    value = reader.GetAttribute("EndIndex");
                                    var endIndex = Convert.ToInt32(value);


                                    if (startNode != null && endNode != null)
                                    {
                                        var startPort = startNode.OutputPorts[startIndex];
                                        var endPort   = endNode.InputPorts[endIndex];

                                        if (startPort != null && endPort != null)
                                        {
                                            var connector = new Connector(this, startPort, endPort);
                                            ConnectorCollection.Add(connector);
                                        }
                                    }
                                }
                            }
                        }

                        break;

                    case XmlNodeType.Text:

                        break;

                    case XmlNodeType.XmlDeclaration:
                    case XmlNodeType.ProcessingInstruction:

                        break;

                    case XmlNodeType.Comment:

                        break;

                    case XmlNodeType.EndElement:

                        break;
                    }
                }
            }
        }
コード例 #24
0
        /*
         * public void DoDynamicAnimation(object sender, MouseButtonEventArgs args)
         * {
         *  for (var i = 0; i < 36; ++i)
         *  {
         *      // var e = new Button { Width = 50, Height = 16, Content="Test" };
         *
         *      //var e = new Ellipse { Width = 16, Height = 16, Fill = SystemColors.HighlightBrush };
         *      //var e = new Ellipse { Width = 6, Height = 6, Fill=Brushes.HotPink };
         *
         *      var e = new SliderNode(this) {Left = Mouse.GetPosition(this).X, Top = Mouse.GetPosition(this).Y};
         *
         *      // var e = new TextBlock { Text = "Test" };
         *      // var e = new Slider { Width = 100 };
         *
         *      // var e = new ProgressBar { Width = 100 , Height =10, Value=i };
         *
         *      // var e = =new DataGrid{Width=100, Height=100};
         *      // var e = new TextBox { Text = "Hallo" };
         *      // var e = new Label { Content = "Halllo" };
         *      // var e = new RadioButton { Content="dfsdf" };
         *
         *      //Canvas.SetLeft(e, Mouse.GetPosition(this).X);
         *      //Canvas.SetTop(e, Mouse.GetPosition(this).Y);
         *
         *      var tg = new TransformGroup();
         *      var translation = new TranslateTransform(30, 0);
         *      var translationName = "myTranslation" + translation.GetHashCode();
         *      RegisterName(translationName, translation);
         *      tg.Children.Add(translation);
         *      tg.Children.Add(new RotateTransform(i*10));
         *      e.RenderTransform = tg;
         *
         *      NodeCollection.Add(e);
         *      Children.Add(e);
         *
         *      var anim = new DoubleAnimation(3, 250, new Duration(new TimeSpan(0, 0, 0, 2, 0)))
         *      {
         *          EasingFunction = new PowerEase {EasingMode = EasingMode.EaseOut}
         *      };
         *
         *      var s = new Storyboard();
         *      Storyboard.SetTargetName(s, translationName);
         *      Storyboard.SetTargetProperty(s, new PropertyPath(TranslateTransform.YProperty));
         *      var storyboardName = "s" + s.GetHashCode();
         *      Resources.Add(storyboardName, s);
         *
         *      s.Children.Add(anim);
         *
         *      s.Completed +=
         *          (sndr, evtArgs) =>
         *          {
         *              //panel.Children.Remove(e);
         *              Resources.Remove(storyboardName);
         *              UnregisterName(translationName);
         *          };
         *      s.Begin();
         *  }
         * }
         */


        public void VplControl_KeyUp(object sender, KeyEventArgs e)
        {
            switch (e.Key)
            {
            case Key.Delete:

                foreach (var node in SelectedNodes)
                {
                    node.Delete();
                }

                SelectedNodes.Clear();
                break;

            case Key.C:
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    tempCollection = new TrulyObservableCollection <Node>();


                    foreach (var node in SelectedNodes)
                    {
                        tempCollection.Add(node);
                    }
                }
            }
            break;

            case Key.V:
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    if (tempCollection == null)
                    {
                        return;
                    }
                    if (tempCollection.Count == 0)
                    {
                        return;
                    }

                    var bBox = Node.GetBoundingBoxOfNodes(tempCollection.ToList());

                    var copyPoint  = new Point(bBox.Left + bBox.Size.Width / 2, bBox.Top + bBox.Size.Height / 2);
                    var pastePoint = Mouse.GetPosition(this);

                    var delta = Point.Subtract(pastePoint, copyPoint);

                    SelectedNodes.Clear();

                    var alreadyClonedConnectors = new List <Connector>();
                    var copyConnections         = new List <CopyConnection>();

                    // copy nodes from clipboard to canvas
                    foreach (var node in tempCollection)
                    {
                        var newNode = node.Clone();

                        newNode.Left += delta.X;
                        newNode.Top  += delta.Y;

                        newNode.Left = Convert.ToInt32(newNode.Left);
                        newNode.Top  = Convert.ToInt32(newNode.Top);

                        NodeCollection.Add(newNode);

                        copyConnections.Add(new CopyConnection {
                                NewNode = newNode, OldNode = node
                            });
                    }

                    foreach (var cc in copyConnections)
                    {
                        var counter = 0;

                        foreach (var conn in cc.OldNode.InputPorts)
                        {
                            foreach (var connector in conn.ConnectedConnectors)
                            {
                                if (!alreadyClonedConnectors.Contains(connector))
                                {
                                    Connector newConnector = null;

                                    // start and end node are contained in selection
                                    if (tempCollection.Contains(connector.StartPort.ParentNode))
                                    {
                                        var cc2 =
                                            copyConnections.FirstOrDefault(
                                                i => Equals(i.OldNode, connector.StartPort.ParentNode));

                                        if (cc2 != null)
                                        {
                                            newConnector = new Connector(this, cc2.NewNode.OutputPorts[0],
                                                                         cc.NewNode.InputPorts[counter]);
                                        }
                                    }
                                    // only end node is contained in selection
                                    else
                                    {
                                        newConnector = new Connector(this, connector.StartPort,
                                                                     cc.NewNode.InputPorts[counter]);
                                    }

                                    if (newConnector != null)
                                    {
                                        alreadyClonedConnectors.Add(connector);
                                        ConnectorCollection.Add(newConnector);
                                    }
                                }
                            }
                            counter++;
                        }
                    }
                }
            }
            break;

            case Key.G:
            {
                if (Keyboard.Modifiers == ModifierKeys.Control)
                {
                    GroupNodes();
                }
            }
            break;

            case Key.S:
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    SaveFile();
                }
            }
            break;

            case Key.O:
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    OpenFile();
                }
            }
            break;

            case Key.A:
            {
                if (Keyboard.IsKeyDown(Key.LeftCtrl) || Keyboard.IsKeyDown(Key.RightCtrl))
                {
                    SelectedNodes.Clear();

                    foreach (var node in NodeCollection)
                    {
                        node.IsSelected = true;
                        SelectedNodes.Add(node);
                    }
                }
            }
            break;
            }
        }
コード例 #25
0
 /// <summary>
 /// Constructs a connector, passing its location
 /// </summary>
 /// <param name="p"></param>
 public Connector(DiagramPoint p)
 {
     attachedConnectors = new ConnectorCollection();
     Point = p;
 }
コード例 #26
0
 /// <summary>
 /// This method is used to execute new command
 /// </summary>
 /// <param name="obj"></param>
 private void OnNew(object obj)
 {
     Nodes      = new NodeCollection();
     Connectors = new ConnectorCollection();
 }
コード例 #27
0
 /// <summary>
 /// Summarizes the initialization used by the constructors
 /// </summary>
 private void Init()
 {
     rectangle  = new Rectangle(0, 0, 100, 70);
     connectors = new ConnectorCollection();
 }
コード例 #28
0
		public static void SetCustomConnectors(DependencyObject obj, ConnectorCollection value)
		{
			obj.SetValue(CustomConnectorsProperty, value);
		}
コード例 #29
0
 public static void SetCustomConnectors(DependencyObject obj, ConnectorCollection value)
 {
     obj.SetValue(CustomConnectorsProperty, value);
 }