Network Diagrams using BarNodes

Another set of example classes, in Demo1, are BarNode, BarPort, and NetworkNode, to allow you to easily create diagrams such as:

The two thin black horizontal rectangles are basically implemented by BarPorts (which inherit from GoPort to customize the link points and directions) in BarNodes (which inherit from GoBasicNode).
The following code produced the above diagram:
BarNode bar1 = new BarNode();
bar1.Bounds = new RectangleF(10, 80, 1000, 2);
bar1.Text = “LCN”;
doc.Add(bar1);
BarNode bar2 = new BarNode();
bar2.Bounds = new RectangleF(10, 160, 1000, 2);
doc.Add(bar2);
NetworkNode am13 = MakeNetworkNode(“AM 13”, bar1, 100, 40);
NetworkNode am56 = MakeNetworkNode(“AM 56”, bar1, 200, 40);
NetworkNode ucn01 = MakeNetworkNode(“UCN 01”, bar1, 50, 120);
ConnectNetworkNode(ucn01, bar2);
NetworkNode ucn02 = MakeNetworkNode(“UCN 02”, bar1, 150, 120);
NetworkNode hpm3 = MakeNetworkNode(“HPM 3”, bar2, 75, 210);
NetworkNode sm21 = MakeNetworkNode(“SM 21”, bar2, 175, 210);
NetworkNode hpm11 = MakeNetworkNode(“HPM 11”, bar2, 125, 245);
ucn01.Highlight = true;
hpm3.Highlight = true;

public NetworkNode MakeNetworkNode(String s, BarNode b, float x, float y) {
NetworkNode n = new NetworkNode();
n.Text = s;
n.Location = new PointF(x, y);
doc.Add(n);
ConnectNetworkNode(n, b);
return n;
}
public GoLink ConnectNetworkNode(NetworkNode a, BarNode b) {
GoLink l = new GoLink();
l.Orthogonal = true;
l.FromPort = a.Port;
l.ToPort = b.Port;
doc.Add(l);
l.CalculateStroke();
return l;
}