private static void FillGraphConnectorNodes(TreeGraphLabelNode originalGraphNode, TreeGraphLabelNode resutLabelNode, TraverseTreeGraphContext context) { if (originalGraphNode.Children.Count > 0) { int startX = originalGraphNode.Children[0].X; int endX = originalGraphNode.Children[originalGraphNode.Children.Count - 1].X; for (int i = startX; i <= endX; i++) { TreeGraphConnectorNode connector = null; TreeGraphNodeBase child = originalGraphNode.Children.Find(c => c.X == i); if (child != null) { if (originalGraphNode.Children.Count == 1) { connector = new TreeGraphConnectorNode(TreeGraphNodeType.VLine, i, originalGraphNode.Y + 1); } else { if (child == originalGraphNode.Children[0]) { connector = new TreeGraphConnectorNode(TreeGraphNodeType.LeftCorner, i, originalGraphNode.Y + 1); } else if (child == originalGraphNode.Children[originalGraphNode.Children.Count - 1]) { connector = new TreeGraphConnectorNode(TreeGraphNodeType.RightCorner, i, originalGraphNode.Y + 1); } else if (child.X == originalGraphNode.X) { connector = new TreeGraphConnectorNode(TreeGraphNodeType.Cross, i, originalGraphNode.Y + 1); } else { connector = new TreeGraphConnectorNode(TreeGraphNodeType.Tee, i, originalGraphNode.Y + 1); } } } else { if (i == originalGraphNode.X) { connector = new TreeGraphConnectorNode(TreeGraphNodeType.ReverseTee, i, originalGraphNode.Y + 1); } else { connector = new TreeGraphConnectorNode(TreeGraphNodeType.HLine, i, originalGraphNode.Y + 1); } } context.Width = Math.Max(context.Width, connector.X + 1); context.Height = Math.Max(context.Height, connector.Y + 1); resutLabelNode.Children.Add(connector); } } }
private static Control CreateConnectorCell(TreeGraphConnectorNode connector) { HtmlGenericControl imageContainer = new HtmlGenericControl("div"); imageContainer.Attributes["class"] = "org-node"; Image image = new Image(); image.Attributes["class"] = "org-connector"; image.ImageUrl = GetConnectorImageUrl(connector.NodeType); imageContainer.Controls.Add(image); return imageContainer; }