Class DiagramToHyperTreeAdapter<TNodeData, TLinkData>
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.
Inheritance
Namespace: Telerik.Windows.Diagrams.Core
Assembly: Telerik.Windows.Diagrams.Core.dll
Syntax
public sealed class DiagramToHyperTreeAdapter<TNodeData, TLinkData> : Object where TNodeData : new()
where TLinkData : new()
Type Parameters
TNodeData
The type of the node data. |
TLinkData
The type of the link data. |
Constructors
DiagramToHyperTreeAdapter()
Initializes a new instance of the DiagramToHyperTreeAdapter<TNodeData, TLinkData> class.
Declaration
public DiagramToHyperTreeAdapter()
DiagramToHyperTreeAdapter(IGraph, GraphAnalysisSettings)
Initializes a new instance of the DiagramToHyperTreeAdapter<TNodeData, TLinkData> class.
Declaration
public DiagramToHyperTreeAdapter(IGraph diagramControl, GraphAnalysisSettings settings = null)
Parameters
IGraph
diagramControl
The diagram control which should be mapped to its graph-analytical analog. |
GraphAnalysisSettings
settings
The settings used to convert the diagram to a graph. |
Properties
HyperTree
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
.
Declaration
public HyperTree<TNodeData, TLinkData> HyperTree { get; }
Property Value
HyperTree<TNodeData, TLinkData>
|
IgnoredConnections
Gets the connections which are being ignored because of graph analytical reasons.
Declaration
public IList<IConnection> IgnoredConnections { get; }
Property Value
System.Collections.Generic.IList<IConnection>
|
IgnoredShapes
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.
Declaration
public IList<IShape> IgnoredShapes { get; }
Property Value
System.Collections.Generic.IList<IShape>
|
Links
Gets the collection of Edge<TNodeData, TLinkData> items corresponding to the Connections items.
Declaration
public IList<Edge<TNodeData, TLinkData>> Links { get; }
Property Value
System.Collections.Generic.IList<Edge<TNodeData, TLinkData>>
|
Remarks
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.
Nodes
Gets the collection of Node<TNodeData, TLinkData> items corresponding to the Shapes items.
Declaration
public IList<Node<TNodeData, TLinkData>> Nodes { get; }
Property Value
System.Collections.Generic.IList<Node<TNodeData, TLinkData>>
|
ShapeMap
Gets the mapping of a shape to a container in case the shape sits in a collapsed container.
Declaration
public Dictionary<IShape, IContainerShape> ShapeMap { get; }
Property Value
System.Collections.Generic.Dictionary<IShape, IContainerShape>
|
Methods
Convert(IGraph, GraphAnalysisSettings)
Converts the given diagram to a Graph<TNodeData, TLinkData>.
Declaration
public void Convert(IGraph diagram = null, GraphAnalysisSettings newSettings = null)
Parameters
IGraph
diagram
The diagram from which graph analytical information should be extracted. |
GraphAnalysisSettings
newSettings
The settings used to convert the diagram to a graph. |
Remarks
The Telerik.Windows.Diagrams.Core.DiagramToHyperTreeAdapter`2.hyperTree 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.
GetNode(IShape)
Creates a Node<TNodeData, TLinkData> from a given IShape.
Declaration
public Node<TNodeData, TLinkData> GetNode(IShape shape)
Parameters
IShape
shape
The shape which should be mapped to a Node<TNodeData, TLinkData>. |
Returns
Node<TNodeData, TLinkData>
The Node<TNodeData, TLinkData> corresponding to the given shape. |
Map(IConnection)
Maps the specified connection to an edge of the graph deduced from the given diagram.
Declaration
public Edge<TNodeData, TLinkData> Map(IConnection connection)
Parameters
IConnection
connection
The connection. |
Returns
Edge<TNodeData, TLinkData>
|
Map(IShape)
Maps the specified shape to a node of the graph deduced from the given diagram.
Declaration
public Node<TNodeData, TLinkData> Map(IShape shape)
Parameters
IShape
shape
The shape. |
Returns
Node<TNodeData, TLinkData>
|