public RemoveLinkMenuItem Create(LinkControl link, NodeControl toNode) { BindOppositeNodeCaptionTextChangeNotifier(toNode); SetHeader(toNode.Caption.Text); link.RemoveAssociatedElements += Remove; this.link = link; return this; }
protected void BindOppositeNodeCaptionTextChangeNotifier(NodeControl toNode) { oppositeNodeCaptionTextChangeNotifier = new PropertyChangeNotifier(toNode.Caption, "Text"); oppositeNodeCaptionTextChangeNotifier.ValueChanged += delegate(object sender, EventArgs e) { oppositeNodeCaptionTextChangeHandler(); }; }
protected void AddLink(Point linkPosition, NodeControl nodeControl) { log.Debug("Now adding user link, first link control is: " + nodeControl.Caption.Text); var linkControl = new LinkControl().Create(); linkControl.BindNode1(nodeControl); linkControl.BindPoint2MouseMove(Canvas); Canvas.Children.Add(linkControl.TheLine); new MouseDrop<NodeControl>().Create(Cursors.Pen, (Point linkPosition2, NodeControl nodeControl2) => AddLinkFinal(linkControl, new Tuple<NodeControl, NodeControl>(nodeControl, nodeControl2)), () => AddLinkCancel(linkControl) ).Drop(Canvas); }
protected void UserAddItem(Point nodePosition, Canvas canvas) { var nodeControl = new NodeControl(); if (nodeControl.UserRename(this)) { canvas.Children.Add(nodeControl); Canvas.SetLeft(nodeControl, nodePosition.X); Canvas.SetTop(nodeControl, nodePosition.Y); } }
protected void TestGenerateLargeDocument(int count, int countOfLinks) { ClearContent(); log.Debug(() => "Now generating document: count of nodes: " + count + "; count of links: " + countOfLinks); var nodes = new List<NodeControl>(count); var random = new Random(); for (int i = 0; i < count; ++i) { //log.Debug(() => "Node #" + i + "..."); var node = new NodeControl(i.ToString()); nodes.Add(node); Canvas.Children.Add(node); node.UpdateLayout(); Canvas.SetLeft(node, random.NextDouble() * (Canvas.Width - node.ActualWidth)); Canvas.SetTop(node, random.NextDouble() * (Canvas.Height - node.ActualHeight)); } for (int i = 0; i < countOfLinks; ++i) { //log.Debug(() => "Link #" + i + "..."); var index1 = random.Next(count); var index2 = random.Next(count); if (index1 != index2) { var link = new LinkControl().Create(); var node1 = nodes[index1]; var node2 = nodes[index2]; Canvas.Children.Add(link.TheLine); link.BindNode1(node1); link.BindNode2(node2); } } }
protected void WriteNode(XElement elements, NodeControl node) { var element = node.SaveToElement(); node.SetValue(IdProperty, GetNewId(node)); element.SetIdAttribute(GetExistingId(node)); elements.Add(element); }
public static NodeControl Create(XElement element) { var result = new NodeControl(); result.LoadFromElement(element); return result; }