GoDiagram makes it easy to build applications where users can see and manipulate graphs of nodes connected by links. GoDiagram provides this functionality with the GoNode, GoPort and GoLink classes. Nodes are groups containing one or more ports. Links connect two ports. (or in similar terminology: nodes and arcs, or entities and relationships, or vertices and edges)
Groups provide a way of making a single object out of other objects. Nodes are typically implemented as a group of simpler but distinct objects (such as text and an icon, along with ports for connecting links).
GoDiagram provides many built-in Node classes as well as several samples Node classes.
In addition to full working sample applications, GoDiagram also includes several Node classes. GoDiagram provides implementations of of the most commonly needed kinds of nodes. While you can always write your own custom node class with GoDiagram, many applications can use these existing Nodes as-is or with slight enhancements.
GoBasicNode is a node with a shape, one port for connecting links in the middle and an optional label. Dozens of shapes are pre-defined by GoDiagram, but you can also create your own.
BeatPaths sample uses GoIconicNode
GoIconicNode is similar to GoBasicNode, a simple node with an image and a text label and a single port.
GoSimpleNode is a node with two ports, an icon, and a label
GoTextNode in the Classier sample
GoTextNode (with added icon) in Flowgrammer
GoTextNode, a node with four ports, one at each side, that displays some text with a background shape.
GoGeneralNode is a node with any number of labeled ports on either side, an icon, and labels on the top and/or bottom.
Custom GoGeneralNodes from NodeLinkDemo
Flexible options for port and port label positions
GoBoxNode using LinkPointsSpread to evenly distribute link points
GoBoxNode is a node containing an object, with a single port that is smart about connecting links to the closest side.
GoMultiTextNode displays any number of text items vertically, with ports on either side of each text item.
GoComment and GoBalloon are useful additions that allow diagrams to have in-place comments and documentation. GoButton looks and acts like a button, but is lighter-weight than a real Button Control.
Additional example classes derived from the predefined ones, including: LimitedNode, AutoLinkNode, SequencedNode, GraphNode, and GraphLink. The source for these additional nodes is included in the sample applications.
SequencedNode demonstrates how to extend a GoGeneralNode by adding a port at the top and a port at the bottom. (the NodeLinkDemo sample)
LimitedNode, a GoGeneralNode whose location is limited to a certain range in the X dimension, that has context menu commands for adding and removing ports, whose ports are limited to at most three links, and whose ports change color according to how many links are connected (in the NodeLinkDemo sample)
PersonNode, a GoTextNode that displays a persons name (in the FamilyTree sample)
AutoLinkNode, a GoGeneralNode with a special auto-linking port that automatically creates new ports as the user tries to link to it (in the NodeLinkDemo sample)
MultiPortNode sample class in NodeLinkDemo, a GoIconicNode with an arbitrary number of ports at arbitrary positions from NodeLinkDemo
MultiTextNodeWithBack, using a GoCylinder as the background from NodeLinkDemo
RecordNode Sample class NodeLinkDemo
RichText class in NodeLinkDemo sample (only in WinForms)
TreeApp Sample with expandable nodes
A variety of new sample node classes exhibiting frequently requested behaviors. The ClassDiagramNode implements a UML style class node with collapsing sub-sections:
The CollapsingRecordNode supports collapsing sections like the ClassDiagramNode above, but also provides ports on both sides of each item:
The ScrollingMultiTextNode inherits from GoMultiTextNode and adds the ability to scroll the text items within the node: