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); }
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); }
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); }
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); }
private void CollectionChangedHandler(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { ConnectorCollection.Add(new IPluginInformation(((ConnectorVisual)e.NewItems[0]).Model)); } }
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); }
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); }
public void NewFile() { NodeCollection.Clear(); ConnectorCollection.Clear(); Children.Clear(); radialMenu.Dispose(); radialMenu = null; }
public void NewFile() { NodeCollection.Clear(); ConnectorCollection.Clear(); Children.Clear(); if (radialMenu != null) { radialMenu.Dispose(); } radialMenu = null; selectionNode = null; }
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 }
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); } }
/// <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(); }
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); }
/// <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); }
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 }
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); }
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); }
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; }
//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; } }
public void OnClearCommand(object param) { NodeCollection.Clear(); ConnectorCollection.Clear(); GroupCollection.Clear(); }
// 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); }
/// <summary> /// Default connector /// </summary> public Connector() { attachedConnectors = new ConnectorCollection(); }
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; } } } }
/* * 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; } }
/// <summary> /// Constructs a connector, passing its location /// </summary> /// <param name="p"></param> public Connector(DiagramPoint p) { attachedConnectors = new ConnectorCollection(); Point = p; }
/// <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(); }
/// <summary> /// Summarizes the initialization used by the constructors /// </summary> private void Init() { rectangle = new Rectangle(0, 0, 100, 70); connectors = new ConnectorCollection(); }
public static void SetCustomConnectors(DependencyObject obj, ConnectorCollection value) { obj.SetValue(CustomConnectorsProperty, value); }
public static void SetCustomConnectors(DependencyObject obj, ConnectorCollection value) { obj.SetValue(CustomConnectorsProperty, value); }