Adapter between the diagram control and the graph representation. It converts shape and connections to nodes and edges taking into the containers and their collapse state, the visibility of items and more.
If the LayoutContainerChildren is true a hypertree is constructed which holds the hierarchy of containers and many conditions are analyzed
to investigate how the effective graph structure looks like and how the layout has to be performed.
Definition
Namespace:Telerik.Windows.Diagrams.Core
Assembly:Telerik.Windows.Diagrams.Core.dll
Type Parameters:
TNodeData
The type of the node data.
TLinkData
The type of the link data.
Syntax:
public sealed class DiagramToHyperTreeAdapter<TNodeData, TLinkData> where TNodeData : new() where TLinkData : new()
Inheritance: objectDiagramToHyperTreeAdapter<TNodeData, TLinkData>
Constructors
Initializes a new instance of the DiagramToHyperTreeAdapter<TNodeData, TLinkData> class.
public DiagramToHyperTreeAdapter()
Initializes a new instance of the DiagramToHyperTreeAdapter<TNodeData, TLinkData> class.
public DiagramToHyperTreeAdapter(IGraph diagramControl, GraphAnalysisSettings settings = null)
The diagram control which should be mapped to its graph-analytical analog.
settingsGraphAnalysisSettingsThe settings used to convert the diagram to a graph.
Properties
Gets the hypertree when LayoutContainerChildren is true. This represents the hierarchy of containers and their content graph.
If LayoutContainerChildren is false this property will return null.
public HyperTree<TNodeData, TLinkData> HyperTree { get; }
Gets the connections which are being ignored because of graph analytical reasons.
public IList<IConnection> IgnoredConnections { get; }
Gets the shapes which are being ignored because of graph analytical reasons. Ignored shapes are not mapped to a Node<TNodeData, TLinkData>. An ignored shape can however have a mapped shape (container) when it sits in a collapsed container. In this case the ShapeMap maps the shape to the container.
public IList<IShape> IgnoredShapes { get; }
Gets the collection of Edge<TNodeData, TLinkData> items corresponding to the Connections items.
public IList<Edge<TNodeData, TLinkData>> Links { get; }
Note that the this collection can be a reduced set of the original Connections set. The omitted items can be found in the IgnoredConnections collection.
Gets the mapping of a shape to a container in case the shape sits in a collapsed container.
public Dictionary<IShape, IContainerShape> ShapeMap { get; }
Methods
Converts the given diagram to a Graph<TNodeData, TLinkData>.
public void Convert(IGraph diagram = null, GraphAnalysisSettings newSettings = null)
The diagram from which graph analytical information should be extracted.
newSettingsGraphAnalysisSettingsThe settings used to convert the diagram to a graph.
The is used when the LayoutContainerChildren is true. It contains the hierarchy of containers whereby
each node is a ContainerGraph<TNodeData, TLinkData>. This type of node has a Container reference to the
container which holds the Graph items.
There are three possible situations during the conversion process:
- Ignore the containers: the container are non-existent and only normal shapes are mapped. If a shape has a connection to a container it will be ignored as well since there is no node mapped for the container.
- Do not ignore the containers and leave the content of the containers untouched: the top-level elements are being mapped and the children within a container are not altered.
- Do not ignore the containers and organize the content of the containers as well: the hypertree is constructed and there is a partitioning of all nodes and connections into the hypertree. The only reason a connection or node is not being mapped might be due to the visibility, which includes the visibility change through a collapsed parent container.
Maps the specified connection to an edge of the graph deduced from the given diagram.
public Edge<TNodeData, TLinkData> Map(IConnection connection)
The connection.
Returns:Edge<TNodeData, TLinkData>