New to Telerik UI for WPFStart a free 30-day trial

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:

C#
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.

C#
public DiagramToHyperTreeAdapter()

Initializes a new instance of the DiagramToHyperTreeAdapter<TNodeData, TLinkData> class.

C#
public DiagramToHyperTreeAdapter(IGraph diagramControl, GraphAnalysisSettings settings = null)
Parameters:diagramControlIGraph

The diagram control which should be mapped to its graph-analytical analog.

settingsGraphAnalysisSettings

The settings used to convert the diagram to a graph.

Properties

HyperTree

HyperTree<TNodeData, TLinkData>

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.

C#
public HyperTree<TNodeData, TLinkData> HyperTree { get; }

Gets the connections which are being ignored because of graph analytical reasons.

C#
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.

C#
public IList<IShape> IgnoredShapes { get; }

IList<Edge<TNodeData, TLinkData>>

Gets the collection of Edge<TNodeData, TLinkData> items corresponding to the Connections items.

C#
public IList<Edge<TNodeData, TLinkData>> Links { get; }
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

IList<Node<TNodeData, TLinkData>>

Gets the collection of Node<TNodeData, TLinkData> items corresponding to the Shapes items.

C#
public IList<Node<TNodeData, TLinkData>> Nodes { get; }

Gets the mapping of a shape to a container in case the shape sits in a collapsed container.

C#
public Dictionary<IShape, IContainerShape> ShapeMap { get; }

Methods

Converts the given diagram to a Graph<TNodeData, TLinkData>.

C#
public void Convert(IGraph diagram = null, GraphAnalysisSettings newSettings = null)
Parameters:diagramIGraph

The diagram from which graph analytical information should be extracted.

newSettingsGraphAnalysisSettings

The settings used to convert the diagram to a graph.

Remarks:

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.

Creates a Node<TNodeData, TLinkData> from a given IShape.

C#
public Node<TNodeData, TLinkData> GetNode(IShape shape)
Parameters:shapeIShape

The shape which should be mapped to a Node<TNodeData, TLinkData>.

Returns:

Node<TNodeData, TLinkData>

The Node<TNodeData, TLinkData> corresponding to the given shape.

Maps the specified connection to an edge of the graph deduced from the given diagram.

C#
public Edge<TNodeData, TLinkData> Map(IConnection connection)
Parameters:connectionIConnection

The connection.

Returns:

Edge<TNodeData, TLinkData>

Maps the specified shape to a node of the graph deduced from the given diagram.

C#
public Node<TNodeData, TLinkData> Map(IShape shape)
Parameters:shapeIShape

The shape.

Returns:

Node<TNodeData, TLinkData>