using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using AIStudio.Wpf.DiagramDesigner.Geometrys; namespace AIStudio.Wpf.DiagramDesigner { public class BlockDesignerItemTempLink { public List Items { get; set; } = new List(); public RectangleBase GetBounds(bool includePorts = false) { return Items.FirstOrDefault().GetBounds(); } public List Connectors { get { List connectors = new List(); if (Items.FirstOrDefault().TopConnector != null) { connectors.Add(Items.FirstOrDefault().TopConnector); } if (Items.FirstOrDefault().LeftConnector != null) { connectors.Add(Items.FirstOrDefault().LeftConnector); } if (Items.LastOrDefault().BottomConnector != null) { connectors.Add(Items.LastOrDefault().BottomConnector); } if (Items.LastOrDefault().RightConnector != null) { connectors.Add(Items.LastOrDefault().RightConnector); } return connectors; } } public static List Build(List blocks) { List links = new List(); foreach (var block in blocks.OrderBy(p => p.BlockLevel).ToList()) { bool success = false; foreach (var link in links) { if (link.Items.LastOrDefault() == block.Prev) { link.Items.Add(block); success = true; } } if (success == false) { BlockDesignerItemTempLink link = new BlockDesignerItemTempLink(); link.Items.Add(block); links.Add(link); } } return links; } } }