/// <summary> /// Creates the info panel view model for the given vertex control based on its type /// </summary> /// <param name="vertexControl">The vertex control for which the info is created.</param> /// <returns>node info view model</returns> public static ExperimentNodeInfo CreateInfo(GraphSharp.Controls.VertexControl vertexControl) { var node = vertexControl.Vertex as ExperimentNode; if (node == null) { throw new ArgumentNullException("node"); } if (node.Data == null) { throw new InvalidOperationException("Cannot create info for node with invalid data."); } ExperimentNodeInfo info = null; //there are different types of node info view models depending on what vertex control type is //based on the node info type different view templates are used to render the info panel //most common is component, so check it first if (node.Data.Metadata is ComponentMetadata) { info = new ComponentNodeInfo(vertexControl); } else if (node.Data.Metadata is CompositeComponentMetadata) { info = new CompositeComponentNodeInfo(vertexControl); } else if (node.Data.Metadata is DecisionMetadata) { info = new DecisionNodeInfo(vertexControl); } else if (node.Data.Metadata is LoopScopeMetadata) { info = new LoopDecisionNodeInfo(vertexControl); } return(info); }
/// <summary> /// Creates the info panel view model for the given vertex control based on its type /// </summary> /// <param name="vertexControl">The vertex control for which the info is created.</param> /// <returns>node info view model</returns> public static ExperimentNodeInfo CreateInfo(GraphSharp.Controls.VertexControl vertexControl) { var node = vertexControl.Vertex as ExperimentNode; if (node == null) { throw new ArgumentNullException("node"); } if (node.Data == null) { throw new InvalidOperationException("Cannot create info for node with invalid data."); } ExperimentNodeInfo info = null; //there are different types of node info view models depending on what vertex control type is //based on the node info type different view templates are used to render the info panel //most common is component, so check it first if (node.Data.Metadata is ComponentMetadata) { info = new ComponentNodeInfo(vertexControl); } else if (node.Data.Metadata is CompositeComponentMetadata) { info = new CompositeComponentNodeInfo(vertexControl); } else if (node.Data.Metadata is DecisionMetadata) { info = new DecisionNodeInfo(vertexControl); } else if (node.Data.Metadata is LoopScopeMetadata) { info = new LoopDecisionNodeInfo(vertexControl); } return info; }