private static Arc GetArcObjectFromPnmlElement(PetriNet petriNet, XElement pnmlElement) { Arc arc = new Arc(); arc.ID = pnmlElement.Attribute("id").Value; string startElementID = pnmlElement.Attribute("source").Value; string endElementID = pnmlElement.Attribute("target").Value; arc.StartElement = petriNet.Elements.FirstOrDefault(element => element.ID == startElementID); arc.EndElement = petriNet.Elements.FirstOrDefault(element => element.ID == endElementID); if (pnmlElement.Element("graphics") != null) { if (pnmlElement.Element("graphics").Element("dimension") != null) { arc.SetGraphicsMetadataItem("graphics.dimension.@x", int.Parse(pnmlElement.Element("graphics").Element("dimension").Attribute("x").Value)); arc.SetGraphicsMetadataItem("graphics.dimension.@y", int.Parse(pnmlElement.Element("graphics").Element("dimension").Attribute("y").Value)); } } return arc; }
private XElement ConvertArcToPnmlElement(Arc arc) { var arcElement = new XElement("arc"); arc.ID = arc.ID ?? Guid.NewGuid().ToString().Substring(0, 8); arcElement.SetAttributeValue("id", arc.ID); arcElement.SetAttributeValue("source", arc.StartElement.ID); arcElement.SetAttributeValue("target", arc.EndElement.ID); var inscriptionElement = new XElement("inscription"); var textElement = new XElement("text", string.Empty); inscriptionElement.Add(textElement); arcElement.Add(inscriptionElement); AppendMetadataToPnmlElement(arcElement, arc.GraphicsMetadata); return arcElement; }
private void ConnectSelectedWidgets() { Arc arc = new Arc(SelectedWidgets[0].Element, SelectedWidgets[1].Element); do { arc.ID = "arc" + ElementIDProvider.GetNextID("arc"); } while (Widgets.Exists(widget => widget.Element != null && widget.Element.ID == arc.ID)); ArcWidget arcWidget = new ArcWidget(arc); Widgets.Add(arcWidget); HandleWidgetsChanged(); RedrawCanvas(); UpdateControlAvailability(); }