public void ShrinkAllWidths() { foreach (CanvasItemData item in itemsList) { NodeCanvasItem classitem = item.Item as NodeCanvasItem; if (classitem != null) { classitem.Width = Math.Min(classitem.GetAbsoluteContentWidth(), 350); } } LayoutChanged(this, EventArgs.Empty); }
/// <summary> /// создание объекта из передаваемого типа /// </summary> public static NodeCanvasItem CreateItemFromType(INode ct) { if (ct == null) { return(null); } NodeCanvasItem item = new NodeCanvasItem(ct, NodeLowDetails); item.Initialize(); return(item); }
/// <summary> /// Returns an canvas node by its node name. /// </summary> public CanvasItem GetNodeCanvasItem(string nodeName) { foreach (CanvasItemData item in itemsList) { NodeCanvasItem node = item.Item as NodeCanvasItem; if (node != null) { if (node.GetNodeData.Name.Equals(nodeName, StringComparison.OrdinalIgnoreCase)) { return(node); } } } return(null); }
public void ExpandAll(bool type) { foreach (CanvasItemData item in itemsList) { NodeCanvasItem classitem = item.Item as NodeCanvasItem; if (classitem != null) { if (type) { classitem.ContentCollapseAll(false); } else { classitem.Collapsed = false; } } } LayoutChanged(this, EventArgs.Empty); }
public void DrawToGraphics(Graphics graphics) { List <Route> routes; List <NodeCanvasItem> itemFocused = new List <NodeCanvasItem>(); // отрисовываем ноды foreach (CanvasItemData item in itemsList) { NodeCanvasItem node = item.Item as NodeCanvasItem; if (node != null && item.Focused) // выбранные ноды отрисуем после соединяющих линий { itemFocused.Add(node); } else { item.Item.DrawToGraphics(graphics); } } // отрисовываем соединяющие линии DrawRoutes(graphics, itemFocused, out routes); // отрисовать выбранные ноды поверх линий foreach (NodeCanvasItem item in itemFocused) { item.DrawToGraphics(graphics); } // дорисовываем линии на ноде (для эстетики) foreach (Route route in routes) { if (route.StartShape != null && ((NodeCanvasItem)route.From).Collapsed == false) { RouteStartShape shape = (RouteStartShape)route.StartShape; shape = new RouteStartShape(Color.FromArgb(200, 255, 69, 0)); shape.Draw(graphics, route, false); } } }
public void RemoveCanvasItem(CanvasItem item) { if (item == null) { return; } itemsList.Remove(itemsData[item]); Stack <Route> routesToRemove = new Stack <Route>(); foreach (Route r in diagramRouter.Routes) { if (r.From == item || r.To == item) { routesToRemove.Push(r); } } foreach (Route r in routesToRemove) { diagramRouter.RemoveRoute(r); } diagramRouter.RemoveItem(item); NodeCanvasItem classItem = item as NodeCanvasItem; if (classItem != null) { nodesToData.Remove(classItem.GetNodeData); } itemsData.Remove(item); LayoutChanged(this, EventArgs.Empty); }
/// <summary> /// добавление новой ноды /// </summary> /// <param name="item"></param> public void AddCanvasItem(CanvasItem item, CanvasItem itemAt = null) { NodeCanvasItem classItem = item as NodeCanvasItem; if (classItem != null) { classItem.OffsetPointTo(); } diagramRouter.AddItem(item); CanvasItemData itemData = new CanvasItemData(item, SizeGripMouseEntered, SizeGripMouseLeft); itemsData[item] = itemData; if (classItem != null) { nodesToData.Add(classItem.GetNodeData, item); foreach (CanvasItemData ci in itemsList) { NodeCanvasItem cci = ci.Item as NodeCanvasItem; if (cci != null) { //Route r = null; foreach (LinkTo link in cci.GetNodeData.LinkedToNodes) { if (link.NameTo == classItem.GetNodeData.Name) { // link: from >>> to Route r = diagramRouter.AddRoute(cci, classItem, link.ContentLine); r.EndShape = new RouteInheritanceShape(); r.StartShape = new RouteStartShape(); } } //if (r != null) {} foreach (LinkTo link in classItem.GetNodeData.LinkedToNodes) { if (link.NameTo == cci.GetNodeData.Name) { // link: from >>> to Route r = diagramRouter.AddRoute(classItem, cci, link.ContentLine); r.EndShape = new RouteInheritanceShape(); r.StartShape = new RouteStartShape(); } } //if (r != null && r.EndShape == null) {} } } } // добавление ноды в лист if (itemAt != null) { LinkedListNode <CanvasItemData> find = itemsList.Find(itemsData[itemAt]); if (find != null) { itemsList.AddBefore(find, itemData); } else { itemsList.AddLast(itemData); } } else { itemsList.AddLast(itemData); } item.RedrawNeeded += HandleRedraw; item.LayoutChanged += HandleItemLayoutChange; item.PositionChanging += HandleItemPositionChange; item.SizeChanging += HandleItemSizeChange; }