//Create and add Connector private ConnectorViewModel AddConnector(NodeViewModel sourceNode, NodeViewModel targetNode, ConnectorPort targetPort, ConnectorViewModel targetConnector, Point sourcepoint, string content, Thickness margin) { ConnectorViewModel connector = new ConnectorViewModel(); connector.Ports = new ObservableCollection <IConnectorPort>(); //To Represent Annotation Properties connector.Annotations = new ObservableCollection <IAnnotation>() { new TextAnnotationViewModel() { Text = content, Length = 0, Margin = margin, ReadOnly = true, RotationReference = RotationReference.Page, } }; if (targetNode == null) { if (!Point.Equals(sourcepoint, new Point(0, 0))) { connector.SourcePoint = sourcepoint; } else { connector.SourceNode = sourceNode; } connector.TargetPort = targetPort; connector.TargetConnector = targetConnector; } else { connector.SourceNode = sourceNode; connector.TargetNode = targetNode; connector.TargetConnector = targetConnector; } (Connectors as ICollection <ConnectorViewModel>).Add(connector); //Selectable Constraints used to enable/disable the ConnectorViewModel Selection. connector.Constraints = connector.Constraints & ~ConnectorConstraints.Selectable; return(connector); }
//Create Nodes and Connetors private void CreateNodesAndConnectors() { //Create and Add node which is source reference for center connector. It will not be visible NodeViewModel emptyNode = AddNode(20, 85, 60, 290, null, false, "TextNodesViewTemplate"); //Create and Add node for HIGH PETROL CONSUMPTION IN BIKE Node NodeViewModel highPetrolConsumptionNode = AddNode(65, 160, 860, 290, "HIGH PETROL\nCONSUMPTION IN BIKE", true, "HighPetrolConsumptionViewTemplate"); //Create and Add node for MACHINERY Node NodeViewModel machineryNode = AddNode(20, 85, 200, 70, "MACHINERY", false, "TextNodesViewTemplate"); //Create and Add node for METHOD Node NodeViewModel methodNode = AddNode(20, 85, 410, 70, "METHOD", false, "TextNodesViewTemplate"); //Create and Add node for PEOPLE Node NodeViewModel peopleNode = AddNode(20, 85, 620, 70, "PEOPLE", false, "TextNodesViewTemplate"); //Create and Add node for MATERIAL Node NodeViewModel materialNode = AddNode(20, 85, 180, 510, "MATERIAL", false, "TextNodesViewTemplate"); //Create and Add node for MEASUREMENT Node NodeViewModel measurmentNode = AddNode(20, 95, 390, 510, "MEASUREMENT", false, "TextNodesViewTemplate"); //Create and Add node for ENVIRONMENT Node NodeViewModel enviromentNode = AddNode(20, 95, 610, 510, "ENVIRONMENT", false, "TextNodesViewTemplate"); //Create lineconnector from emptyNode to highPetrolConsumptionNode ConnectorViewModel mainConnector = AddConnector(emptyNode, highPetrolConsumptionNode, null, null, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //create multiple ports in the mainConnector ConnectorPort machineryConnectorEndPort = AddPort(mainConnector, 0.25); ConnectorPort materialConnectorEndPort = AddPort(mainConnector, 0.28); ConnectorPort methodConnectorEndPort = AddPort(mainConnector, 0.58); ConnectorPort measurmentConnectorEndPort = AddPort(mainConnector, 0.60); ConnectorPort peopleConnectorEndPort = AddPort(mainConnector, 0.90); ConnectorPort enviromentConnectorPort = AddPort(mainConnector, 0.93); //Create connection between machineryNode and machineryConnectorEndPort ConnectorViewModel machineryConnector = AddConnector(machineryNode, null, machineryConnectorEndPort, mainConnector, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Create connection between materialNode and materialConnectorEndPort ConnectorViewModel materialConnector = AddConnector(materialNode, null, materialConnectorEndPort, mainConnector, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Create connection between methodNode and methodConnectorEndPort ConnectorViewModel methodConnector = AddConnector(methodNode, null, methodConnectorEndPort, mainConnector, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Create connection between measurmentNode and measurmentConnectorEndPort ConnectorViewModel measurmentConnector = AddConnector(measurmentNode, null, measurmentConnectorEndPort, mainConnector, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Create connection between peopleNode and peopleConnectorEndPort ConnectorViewModel peopleConnector = AddConnector(peopleNode, null, peopleConnectorEndPort, mainConnector, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Create connection between enviromentNode and enviromentConnectorPort ConnectorViewModel enviromentConnector = AddConnector(enviromentNode, null, enviromentConnectorPort, mainConnector, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Create end point port for Worn-Out Pistons connector ConnectorPort WornOutPistonsPort = AddPort(machineryConnector, 0.25); //Create connector for Worn-Out Pistons ConnectorViewModel WornOutPistonsConnector = AddConnector(null, null, WornOutPistonsPort, machineryConnector, new Point(70, 133), "Worn-out Pistons", new Thickness(50, 15, 0, 0)); //Create end point port for Wrong Tire Pressure Connector ConnectorPort WrongTirePressurePort = AddPort(machineryConnector, 0.54); //Create connector for Wrong Tire Pressure ConnectorViewModel WrongTirePressureConnector = AddConnector(null, null, WrongTirePressurePort, machineryConnector, new Point(80, 193), "Wrong Tire Pressure", new Thickness(55, 15, 0, 0)); //Create end point port for Fast Driving Connector ConnectorPort FastDrivingPort = AddPort(methodConnector, 0.25); //Create connector for Fast Driving ConnectorViewModel FastDrivingConnector = AddConnector(null, null, FastDrivingPort, methodConnector, new Point(305, 133), "Fast Driving", new Thickness(35, 15, 0, 0)); //Create end point port for Wrong Gear Connector ConnectorPort WrongGearPort = AddPort(methodConnector, 0.54); //Create connector for Wrong Gear ConnectorViewModel WrongGearConnector = AddConnector(null, null, WrongGearPort, methodConnector, new Point(330, 193), "Wrong Gear", new Thickness(35, 15, 0, 0)); //Create end point port for Maintenance Habit Connector ConnectorPort MaintenanceHabitPort = AddPort(peopleConnector, 0.55); //Create connector for Maintenance Habit ConnectorViewModel MaintenanceHabitConnector = AddConnector(null, null, MaintenanceHabitPort, peopleConnector, new Point(510, 193), "Maintenance Habit", new Thickness(50, 15, 0, 0)); //Create end point port for No Owner Manual Connector ConnectorPort NoOwnerManualConnectorPort = AddPort(MaintenanceHabitConnector, 0.77); //Create connector for No Owner Manual ConnectorViewModel NoOwnerManualConnector = AddConnector(null, null, NoOwnerManualConnectorPort, MaintenanceHabitConnector, new Point(600, 155), "No Owner Manual", new Thickness(0, 0, 20, 10)); //Create end point port for Poor Quality Petrol Connector ConnectorPort PoorQualityPetrolPort = AddPort(materialConnector, 0.73); //Create connector for Poor Quality Petrol ConnectorViewModel PoorQualityPetrolConnector = AddConnector(null, null, PoorQualityPetrolPort, materialConnector, new Point(75, 345), "Poor Quality Petrol", new Thickness(50, 15, 0, 0)); //Create end point port for FastDrivingConnector ConnectorPort IncorrectLubricantPort = AddPort(materialConnector, 0.26); //Create connector for Incorrect Lubricant ConnectorViewModel IncorrectLubricantConnector = AddConnector(null, null, IncorrectLubricantPort, materialConnector, new Point(70, 443), "Incorrect Lubricant", new Thickness(50, 15, 0, 0)); //Create end point port for Wrong Oil Connector ConnectorPort WrongOilPort = AddPort(IncorrectLubricantConnector, 0.73); //Create connector for Wrong Oil ConnectorViewModel WrongOilConnector = AddConnector(null, null, WrongOilPort, WrongGearConnector, new Point(145, 410), "Wrong Oil", new Thickness(0, 0, 10, 10)); //Create end point port for Reset Odometer Connector ConnectorPort ResetOdometerPort = AddPort(measurmentConnector, 0.6); //Create connector for Reset Odometer ConnectorViewModel ResetOdometerConnector = AddConnector(null, null, ResetOdometerPort, measurmentConnector, new Point(300, 373), "Do not Reset\nOdometer Properly", new Thickness(50, 25, 0, 0)); //Create end point port for Extreme Weather Conditions Connector ConnectorPort ExtremeWeatherConditionsPort = AddPort(enviromentConnector, 0.6); //Create connector for Extreme Weather Conditions ConnectorViewModel ExtremeWeatherConditionsConnector = AddConnector(null, null, ExtremeWeatherConditionsPort, enviromentConnector, new Point(520, 373), "Extreme Weather\nConditions", new Thickness(45, 25, 0, 0)); }
// Create Nodes,Ports and Connections private void CreateNodesandConnections() { // Create Nodes NodeViewModel node1 = AddNode(50, 100, 100, 50, label: "Employee"); NodeViewModel node2 = AddNode(50, 100, 300, 50, label: "Team Lead"); NodeViewModel node3 = AddNode(50, 100, 500, 50, label: "Dashboard"); NodeViewModel node4 = AddNode(50, 100, 700, 50, label: "Manager"); NodeViewModel node8 = AddNode(50, 100, 100, 500); NodeViewModel node9 = AddNode(50, 100, 300, 500); NodeViewModel node10 = AddNode(50, 100, 500, 500); NodeViewModel node11 = AddNode(50, 100, 700, 500); // Connect Nodes and Ports ConnectorViewModel connector3 = Connect(node1, node8, label1: "c3", style: App.Current.MainWindow.Resources["GetGrayLineStyle"] as Style); ConnectorViewModel connector4 = Connect(node2, node9, label1: "c4", style: App.Current.MainWindow.Resources["GetGrayLineStyle"] as Style); ConnectorViewModel connector5 = Connect(node3, node10, label1: "c5", style: App.Current.MainWindow.Resources["GetGrayLineStyle"] as Style); ConnectorViewModel connector6 = Connect(node4, node11, label1: "c6", style: App.Current.MainWindow.Resources["GetGrayLineStyle"] as Style); NodeViewModel node5 = AddNode(180, 10, 300, 250, style: App.Current.MainWindow.Resources["GetNodeStyle"] as Style); NodeViewModel node6 = AddNode(25, 10, 500, 250, style: App.Current.MainWindow.Resources["GetNodeStyle"] as Style); NodeViewModel node7 = AddNode(48, 10, 700, 348, style: App.Current.MainWindow.Resources["GetNodeStyle"] as Style); NodeViewModel node26 = AddNode(240, 10, 100, 278, style: App.Current.MainWindow.Resources["GetNodeStyle"] as Style); // Create Ports to the Nodes and Connectors NodePort port1 = addPort(node5, 0, 0.053); NodePort port111 = addPort(node5, 1, 0.5); NodePort port12 = addPort(node5, 1, 0.938); NodePort port2 = addPort(node6, 0, 0.5); NodePort port3 = addPort(node7, 0, 0.1); NodePort port10 = addPort(node7, 0, 0.91); NodePort port11 = addPort(node26, 1, 0.049); NodePort port7 = addPort(node26, 1, 0.97); node5.Ports = new ObservableCollection <INodePort>() { port1, port111, port12 }; node6.Ports = new ObservableCollection <INodePort>() { port2 }; node7.Ports = new ObservableCollection <INodePort>() { port3, port10 }; node26.Ports = new ObservableCollection <INodePort>() { port11, port7 }; ConnectorViewModel connector1 = Connect(node5, node6, headport: port111, tailport: port2, label2: "Check Employee availability and task status", style: App.Current.MainWindow.Resources["GetBlueLineStyle"] as Style, margin: new Thickness(0, 20, 0, 0)); ConnectorViewModel connector2 = Connect(node5, node7, headport: port12, tailport: port3, label2: "Forward Leave Request", style: App.Current.MainWindow.Resources["GetBlueLineStyle"] as Style, margin: new Thickness(0, 10, 0, 0)); ConnectorViewModel connector7 = Connect(node26, node5, headport: port11, tailport: port1, label2: "Leave Request", style: App.Current.MainWindow.Resources["GetBlueLineStyle"] as Style, margin: new Thickness(0, 10, 0, 0)); ConnectorPort port5 = addPort(connector4, 0.78); ConnectorPort port6 = addPort(connector4, 0.73); connector4.Ports = new ObservableCollection <IConnectorPort>() { port5, port6 }; ConnectorViewModel connector8 = Connect(null, node26, tailport: port7, connector: connector4, connectorheadport: port5, label2: "Leave Approval", style: App.Current.MainWindow.Resources["GetLineDashStyle"] as Style, margin: new Thickness(0, 10, 0, 0)); ConnectorViewModel connector10 = Connect(node7, null, headport: port10, connector: connector4, connectortailport: port6, label2: "No Objection", style: App.Current.MainWindow.Resources["GetLineDashStyle"] as Style, margin: new Thickness(0, 10, 0, 0)); }
// Add Connector private ConnectorViewModel Connect(NodeViewModel headnode, NodeViewModel tailnode, NodePort headport = null, NodePort tailport = null, ConnectorViewModel connector = null, ConnectorPort connectorheadport = null, ConnectorPort connectortailport = null, String label1 = null, String label2 = null, Style style = null, Thickness margin = new Thickness()) { ConnectorViewModel Connectorviewmodel = new ConnectorViewModel(); Connectorviewmodel.ZIndex = -1; Connectorviewmodel.SourceNode = headnode; Connectorviewmodel.TargetNode = tailnode; //To Represent Annotation Properties Connectorviewmodel.Annotations = new ObservableCollection <IAnnotation>() { new AnnotationEditorViewModel() { Content = label2, WrapText = TextWrapping.Wrap, UnitWidth = 150, Margin = margin, ReadOnly = true, } }; if (headport != null) { Connectorviewmodel.SourcePort = headport; } else { Connectorviewmodel.SourcePort = connectorheadport; } if (tailport != null) { Connectorviewmodel.TargetPort = tailport; } else { Connectorviewmodel.TargetPort = connectortailport; } if (tailnode != null) { Connectorviewmodel.SourceConnector = connector; } else { Connectorviewmodel.TargetConnector = connector; } Connectorviewmodel.TargetDecoratorStyle = App.Current.MainWindow.Resources["DecoratorStyle"] as Style; if ((label1 == "c3") || (label1 == "c4") || (label1 == "c5") || (label1 == "c6")) { Connectorviewmodel.TargetDecorator = null; Connectorviewmodel.TargetDecoratorStyle = null; } if (style != null) { Connectorviewmodel.ConnectorGeometryStyle = style; } (Connectors as ObservableCollection <ConnectorViewModel>).Add(Connectorviewmodel); return(Connectorviewmodel); }
//Create Node and Connection private void Nodeviewmodel() { int height = 20; int width = 75; //Node Creation NodeViewModel n1 = AddNode(50, 100, 50, 320, null); NodeViewModel n2 = AddNode(75, 180, 900, 320, ""); NodeViewModel n3 = AddNode(height, width, 150, 100, "MACHINERY"); NodeViewModel n4 = AddNode(height, width, 400, 100, "METHOD"); NodeViewModel n5 = AddNode(height, width, 650, 100, "PEOPLE"); NodeViewModel n6 = AddNode(height, width, 150, 540, "MATERIAL"); NodeViewModel n7 = AddNode(height, width, 400, 540, "MEASUREMENT"); NodeViewModel n8 = AddNode(height, width, 650, 540, "ENVIRONMENT"); //Create lineconnector from node to node Connector line = addlineconnector(n1, n2, null, null, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Fixed a port in a lineconnector ConnectorPort p1 = addport(line, 0.25); ConnectorPort p2 = addport(line, 0.28); ConnectorPort p3 = addport(line, 0.58); ConnectorPort p4 = addport(line, 0.60); ConnectorPort p5 = addport(line, 0.90); ConnectorPort p6 = addport(line, 0.93); //Add lineconnector from Node to Port Connector c1 = addlineconnector(n3, null, p1, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); Connector c2 = addlineconnector(n6, null, p2, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); Connector c3 = addlineconnector(n4, null, p3, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); Connector c4 = addlineconnector(n7, null, p4, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); Connector c5 = addlineconnector(n5, null, p5, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); Connector c6 = addlineconnector(n8, null, p6, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorPort m1 = addport(c1, 0.25); Connector mp1 = addlineconnector(null, null, m1, c1, new Point(65, 162), "Worn-out Pistons", new Thickness(55, 15, 0, 0)); ConnectorPort m2 = addport(c1, 0.54); Connector mp2 = addlineconnector(null, null, m2, c1, new Point(80, 225), "Wrong Tire Pressure", new Thickness(65, 15, 0, 0)); ConnectorPort m3 = addport(c3, 0.25); Connector mp3 = addlineconnector(null, null, m3, c3, new Point(310, 162), "Fast Driving", new Thickness(40, 15, 0, 0)); ConnectorPort m4 = addport(c3, 0.54); Connector mp4 = addlineconnector(null, null, m4, c3, new Point(330, 224), "Wrong Gear", new Thickness(40, 15, 0, 0)); ConnectorPort m5 = addport(c5, 0.55); Connector mp5 = addlineconnector(null, null, m5, c5, new Point(510, 224), "Maintenance Habit", new Thickness(60, 15, 0, 0)); ConnectorPort m6 = addport(mp5, 0.80); Connector mp6 = addlineconnector(null, null, m6, mp5, new Point(625, 185), "No Owner Manual", new Thickness(0, 0, 10, 10)); ConnectorPort m7 = addport(c2, 0.73); Connector mp7 = addlineconnector(null, null, m7, c2, new Point(95, 375), "Poor Quality Petrol", new Thickness(60, 15, 0, 0)); ConnectorPort m8 = addport(c2, 0.26); Connector mp8 = addlineconnector(null, null, m8, c2, new Point(60, 474), "Incorrect Lubricant", new Thickness(60, 15, 0, 0)); ConnectorPort m9 = addport(mp8, 0.73); Connector mp9 = addlineconnector(null, null, m9, mp4, new Point(130, 435), "Wrong Oil", new Thickness(0, 0, 10, 10)); ConnectorPort m10 = addport(c4, 0.6); Connector mp10 = addlineconnector(null, null, m10, c4, new Point(300, 403), "Do not Reset\nOdometer Properly", new Thickness(60, 25, 0, 0)); ConnectorPort m11 = addport(c6, 0.6); Connector mp11 = addlineconnector(null, null, m11, c6, new Point(520, 403), "Extreme Weather\nConditions", new Thickness(55, 25, 0, 0)); }
/// <summary> /// Adding Connector /// </summary> /// <param name="headnode"></param> /// <param name="tailnode"></param> /// <param name="headport"></param> /// <param name="tailport"></param> /// <param name="connector"></param> /// <param name="connectorheadport"></param> /// <param name="connectortailport"></param> /// <param name="label1"></param> /// <param name="label2"></param> /// <param name="style"></param> /// <returns></returns> private ConnectorViewModel Connect(NodeViewModel headnode, NodeViewModel tailnode, NodePort headport = null, NodePort tailport = null, ConnectorViewModel connector = null, ConnectorPort connectorheadport = null, ConnectorPort connectortailport = null, String label1 = null, String label2 = null, Style style = null, Thickness margin = new Thickness()) { ConnectorViewModel conn = new ConnectorViewModel(); conn.SourceNode = headnode; conn.TargetNode = tailnode; if (label2 != null) { conn.Annotations = new ObservableCollection <IAnnotation>() { new AnnotationEditorViewModel() { Content = new TextBlock() { Text = label2, FontWeight = FontWeights.Normal, FontSize = 13, FontStyle = FontStyle.Normal, }, Margin = margin, ViewTemplate = this.Resources["viewtemplate"] as DataTemplate, EditTemplate = this.Resources["edittemplate"] as DataTemplate } }; } if (headport != null) { conn.SourcePort = headport; } else { conn.SourcePort = connectorheadport; } if (tailport != null) { conn.TargetPort = tailport; } else { conn.TargetPort = connectortailport; } if (tailnode != null) { conn.SourceConnector = connector; } else { conn.TargetConnector = connector; } conn.TargetDecoratorStyle = this.Resources["DecoratorStyle"] as Style; if ((label1 == "c3") || (label1 == "c4") || (label1 == "c5") || (label1 == "c6")) { conn.TargetDecorator = null; conn.TargetDecoratorStyle = null; } if (style != null) { conn.ConnectorGeometryStyle = style; } conn.Constraints = conn.Constraints & ~ConnectorConstraints.Selectable; diagramcontrol.DefaultConnectorType = ConnectorType.Line; (diagramcontrol.Connectors as ICollection <ConnectorViewModel>).Add(conn); return(conn); }
//Add LineConnector private Connector addlineconnector(NodeViewModel headnode, NodeViewModel tailnode, ConnectorPort port, Connector connect, Point sourcepoint, string label, Thickness margin) { Connector line = new Connector(); line.TargetDecoratorStyle = this.Resources["DecoratorStyle"] as Style; line.Ports = new ObservableCollection <IConnectorPort>(); //To Represent Annotation Properties line.Annotations = new ObservableCollection <IAnnotation>() { new AnnotationEditorViewModel() { Content = label, //ViewTemplate = this.Resources["viewtemplate"] as DataTemplate, ViewTemplate = XamlReader.Load(IshikawaDiagramTemplate.vTemplate) as DataTemplate, Length = 0, Margin = margin, WrapText = TextWrapping.NoWrap, ReadOnly = true, } }; if (tailnode == null) { if (!Point.Equals(sourcepoint, new Point(0, 0))) { line.SourcePoint = sourcepoint; } else { line.SourceNode = headnode; } line.ConnectorGeometryStyle = this.Resources["style1"] as Style; line.TargetPort = port; line.TargetConnector = connect; } else { line.ConnectorGeometryStyle = this.Resources["connectorstyle"] as Style; line.SourceNode = headnode; line.TargetNode = tailnode; line.TargetConnector = connect; } (diagramcontrol.Connectors as ICollection <IConnector>).Add(line); line.Constraints = line.Constraints & ~ConnectorConstraints.Selectable; return(line); }
//Create Node and Connection private void Ishikawadiagrammodel() { //Node Creation int height = 20; int width = 75; NodeViewModel n1 = AddNode(height, width, 60, 290, null); NodeViewModel n2 = AddNode2(height + 45, width + 75, 860, 290, "HIGH PETROL\nCONSUMPTION IN BIKE"); TitleNode n3 = AddNode(height, width, 200, 70, "MACHINERY"); TitleNode n4 = AddNode(height, width, 410, 70, "METHOD"); TitleNode n5 = AddNode(height, width, 620, 70, "PEOPLE"); TitleNode n6 = AddNode(height, width, 180, 510, "MATERIAL"); TitleNode n7 = AddNode(height, width, 390, 510, "MEASUREMENT"); TitleNode n8 = AddNode(height, width, 610, 510, "ENVIRONMENT"); //Create lineconnector from node to node ConnectorViewModel line = addlineconnector(n1, n2, null, null, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); //Fixed a port in a lineconnector ConnectorPort p1 = addport(line, 0.25); ConnectorPort p2 = addport(line, 0.28); ConnectorPort p3 = addport(line, 0.58); ConnectorPort p4 = addport(line, 0.60); ConnectorPort p5 = addport(line, 0.90); ConnectorPort p6 = addport(line, 0.93); //Create lineconnector from Node to Port ConnectorViewModel c1 = addlineconnector(n3, null, p1, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorViewModel c2 = addlineconnector(n6, null, p2, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorViewModel c3 = addlineconnector(n4, null, p3, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorViewModel c4 = addlineconnector(n7, null, p4, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorViewModel c5 = addlineconnector(n5, null, p5, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorViewModel c6 = addlineconnector(n8, null, p6, line, new Point(0, 0), "", new Thickness(0, 0, 0, 0)); ConnectorPort m1 = addport(c1, 0.25); ConnectorViewModel mp1 = addlineconnector(null, null, m1, c1, new Point(70, 133), "Worn-out Pistons", new Thickness(50, 15, 0, 0)); ConnectorPort m2 = addport(c1, 0.54); ConnectorViewModel mp2 = addlineconnector(null, null, m2, c1, new Point(80, 193), "Wrong Tire Pressure", new Thickness(55, 15, 0, 0)); ConnectorPort m3 = addport(c3, 0.25); ConnectorViewModel mp3 = addlineconnector(null, null, m3, c3, new Point(305, 133), "Fast Driving", new Thickness(35, 15, 0, 0)); ConnectorPort m4 = addport(c3, 0.54); ConnectorViewModel mp4 = addlineconnector(null, null, m4, c3, new Point(330, 193), "Wrong Gear", new Thickness(35, 15, 0, 0)); ConnectorPort m5 = addport(c5, 0.55); ConnectorViewModel mp5 = addlineconnector(null, null, m5, c5, new Point(510, 193), "Maintenance Habit", new Thickness(50, 15, 0, 0)); ConnectorPort m6 = addport(mp5, 0.77); ConnectorViewModel mp6 = addlineconnector(null, null, m6, mp5, new Point(600, 155), "No Owner Manual", new Thickness(0, 0, 20, 10)); ConnectorPort m7 = addport(c2, 0.73); ConnectorViewModel mp7 = addlineconnector(null, null, m7, c2, new Point(75, 345), "Poor Quality Petrol", new Thickness(50, 15, 0, 0)); ConnectorPort m8 = addport(c2, 0.26); ConnectorViewModel mp8 = addlineconnector(null, null, m8, c2, new Point(70, 443), "Incorrect Lubricant", new Thickness(50, 15, 0, 0)); ConnectorPort m9 = addport(mp8, 0.73); ConnectorViewModel mp9 = addlineconnector(null, null, m9, mp4, new Point(145, 410), "Wrong Oil", new Thickness(0, 0, 10, 10)); ConnectorPort m10 = addport(c4, 0.6); ConnectorViewModel mp10 = addlineconnector(null, null, m10, c4, new Point(300, 373), "Do not Reset\nOdometer Properly", new Thickness(50, 25, 0, 0)); ConnectorPort m11 = addport(c6, 0.6); ConnectorViewModel mp11 = addlineconnector(null, null, m11, c6, new Point(520, 373), "Extreme Weather\nConditions", new Thickness(45, 25, 0, 0)); }
//Add lineConnector private ConnectorViewModel addlineconnector(NodeViewModel headnode, NodeViewModel tailnode, ConnectorPort port, ConnectorViewModel connect, Point sourcepoint, string label, Thickness margin) { ConnectorViewModel line = new ConnectorViewModel(); line.TargetDecoratorStyle = this.Resources["DecoratorStyle"] as Style; line.Ports = new ObservableCollection <IConnectorPort>(); //To Represent Annotation Properties line.Annotations = new ObservableCollection <IAnnotation>() { new AnnotationEditorViewModel() { Content = label, ViewTemplate = Application.Current.MainWindow.Resources["viewtemplate"] as DataTemplate, Length = 0, Margin = margin, WrapText = TextWrapping.NoWrap, ReadOnly = true, RotationReference = RotationReference.Page } }; if (tailnode == null) { if (!Point.Equals(sourcepoint, new Point(0, 0))) { line.SourcePoint = sourcepoint; } else { line.SourceNode = headnode; } //Set ConnectorViewModel Style line.ConnectorGeometryStyle = this.Resources["style1"] as Style; line.TargetPort = port; line.TargetConnector = connect; } else { line.ConnectorGeometryStyle = this.Resources["connectorstyle"] as Style; line.SourceNode = headnode; line.TargetNode = tailnode; line.TargetConnector = connect; } (diagramcontrol.Connectors as ICollection <ConnectorViewModel>).Add(line); //Selectable Constraints used to enable/disable the ConnectorViewModel Selection. line.Constraints = line.Constraints & ~ConnectorConstraints.Selectable; return(line); }
private Connector addlineconnector(NodeViewModel headnode, NodeViewModel tailnode, ConnectorPort port, Connector connect, Point sourcepoint, string label, Thickness margin) { Connector line = new Connector(); line.TargetDecoratorStyle = this.Resources["DecoratorStyle"] as Style; line.Ports = new ObservableCollection <IConnectorPort>(); line.Annotations = new ObservableCollection <IAnnotation>() { new AnnotationEditorViewModel() { Content = new TextBlock() { Text = label, Foreground = new SolidColorBrush(Colors.Black), FontSize = 14, FontFamily = new FontFamily("Segoe"), FontWeight = FontWeights.Normal, }, ViewTemplate = this.Resources["viewtemplate"] as DataTemplate, Offset = new Point(0, 0), Margin = margin, WrapText = TextWrapping.NoWrap, ReadOnly = true, } }; if (tailnode == null) { if (!Point.Equals(sourcepoint, new Point(0, 0))) { line.SourcePoint = sourcepoint; } else { line.SourceNode = headnode; } line.ConnectorGeometryStyle = this.Resources["style1"] as Style; line.TargetPort = port; line.TargetConnector = connect; } else { line.ConnectorGeometryStyle = this.Resources["connectorstyle"] as Style; line.SourceNode = headnode; line.TargetNode = tailnode; line.TargetConnector = connect; } (diagramcontrol.Connectors as ICollection <IConnector>).Add(line); line.Constraints = line.Constraints & ~ConnectorConstraints.Selectable; return(line); }
// Add Connector private ConnectorViewModel Connect(NodeViewModel headnode, NodeViewModel tailnode, NodePort headport = null, NodePort tailport = null, ConnectorViewModel connector = null, ConnectorPort connectorheadport = null, ConnectorPort connectortailport = null, String label1 = null, String label2 = null, Style style = null, Thickness margin = new Thickness()) { ConnectorViewModel conn = new ConnectorViewModel(); conn.SourceNode = headnode; conn.TargetNode = tailnode; if (label2 != null) { //To Represent Annotation Property conn.Annotations = new ObservableCollection <IAnnotation>() { new AnnotationEditorViewModel() { Content = label2, WrapText = TextWrapping.Wrap, UnitWidth = 150, Margin = margin, ReadOnly = true, ViewTemplate = XamlReader.Load(SequenceDiagramTemplate.vTemplate) as DataTemplate, EditTemplate = XamlReader.Load(SequenceDiagramTemplate.eTemplate) as DataTemplate, //ViewTemplate=this.Resources["viewtemplate1"] as DataTemplate, //EditTemplate=this.Resources["edittemplate"] as DataTemplate } }; } if (headport != null) { conn.SourcePort = headport; } else { conn.SourcePort = connectorheadport; } if (tailport != null) { conn.TargetPort = tailport; } else { conn.TargetPort = connectortailport; } if (tailnode != null) { conn.SourceConnector = connector; } else { conn.TargetConnector = connector; } conn.TargetDecoratorStyle = this.Resources["DecoratorStyle"] as Style; if ((label1 == "c3") || (label1 == "c4") || (label1 == "c5") || (label1 == "c6")) { conn.TargetDecorator = null; conn.TargetDecoratorStyle = null; } if (style != null) { conn.ConnectorGeometryStyle = style; } //Constraints used to enable/disable connector selection conn.Constraints = conn.Constraints & ~ConnectorConstraints.Selectable; diagramcontrol.DefaultConnectorType = ConnectorType.Line; (diagramcontrol.Connectors as ICollection <ConnectorViewModel>).Add(conn); return(conn); }