//-------------------------------------------------------------------------- public GraphNodeDataLink(GraphReferenceItem item) : base(item) { LinkNoEvent = GraphReferenceItem.WrappedItem?.GraphNode; GraphReferenceItem.PropertyChanged += (e, args) => { if (args.PropertyName == "WrappedItem") { Link = GraphReferenceItem.WrappedItem?.GraphNode; } else if (args.PropertyName == "TextBrush") { RaisePropertyChangedEvent("FontBrush"); } else if (args.PropertyName == "Name") { RaisePropertyChangedEvent("Title"); } else if (args.PropertyName == "IsVisible") { RaisePropertyChangedEvent("Link"); } }; if (GraphReferenceItem.Parent is StructItem && GraphReferenceItem.ReferenceDef.UseParentDescription) { GraphReferenceItem.Parent.PropertyChanged += (e, args) => { if (args.PropertyName == "Description") { RaisePropertyChangedEvent("Title"); } else if (args.PropertyName == "TextBrush") { RaisePropertyChangedEvent("FontBrush"); } }; } foreach (var controlPoint in GraphReferenceItem.ControlPoints) { ControlPoints.Add(new LinkControlPoint(this, controlPoint)); } PropertyChanged += (e, args) => { if (args.PropertyName == "Node") { if (Link != null) { Link.ParentNodes.Add(Node); } } }; }
public override DataItem CreateData(UndoRedoManager undoRedo) { var item = new GraphReferenceItem(this, undoRedo); foreach (var att in Attributes) { var attItem = att.CreateData(undoRedo); item.Attributes.Add(attItem); } return(item); }
public override DataItem LoadData(XElement element, UndoRedoManager undoRedo) { var key = element.Attribute(DataDefinition.MetaNS + "RefKey")?.Value?.ToString(); if (key == null) { key = element.Attribute("RefKey")?.Value?.ToString(); } GraphReferenceItem item = null; if (!element.HasElements) { item = new GraphReferenceItem(this, undoRedo); item.GuidToResolve = element.Value?.ToString(); item.m_LinkType = LinkType.Reference; } else if (key != null && Definitions.ContainsKey(key)) { var def = Definitions[key]; item = new GraphReferenceItem(this, undoRedo); item.ChosenDefinition = def; var loaded = def.LoadData(element, undoRedo) as GraphNodeItem; item.WrappedItem = loaded; } else { item = CreateData(undoRedo) as GraphReferenceItem; } foreach (var att in Attributes) { var el = element.Attribute(att.Name); DataItem attItem = null; if (el != null) { attItem = att.LoadData(new XElement(el.Name, el.Value.ToString()), undoRedo); } else { attItem = att.CreateData(undoRedo); } item.Attributes.Add(attItem); } var controlPoints = element.Attribute(DataDefinition.MetaNS + "ControlPoints")?.Value; if (controlPoints != null) { var points = controlPoints.Split('|'); foreach (var point in points) { var split = point.Split(','); var x = double.Parse(split[0]); var y = double.Parse(split[1]); var flip = split.Length == 3 ? bool.Parse(split[2]) : false; item.ControlPoints.Add(new GraphReferenceControlPoint(item, new System.Windows.Point(x, y), flip)); } } return(item); }