public static void AddNodes(this Graph graph, State currentState) { while (currentState.Next != null) { if (graph.FindEdge(currentState, currentState.Next) != null) { currentState = currentState.Next; continue; } var edge = graph.AddEdge(currentState.GetHashCode().ToString(), currentState.Next.GetHashCode().ToString()); edge.Attr.LineWidth = 2; var currentNode = graph.FindNode(currentState.GetHashCode().ToString()); currentNode.LabelText = currentState.ToString(); if (currentState.Alternative != null) { var altEdge = graph.AddEdge(currentState.GetHashCode().ToString(), currentState.Alternative.First.GetHashCode().ToString()); altEdge.Attr.Color = Color.Gray; altEdge.Attr.LineWidth = 2; graph.AddNodes(currentState.Alternative.First); } currentNode.Attr.Shape = Shape.Box; currentState = currentState.Next; } var lastNode = graph.FindNode(currentState.GetHashCode().ToString()); lastNode.LabelText = currentState.ToString(); }
public void UnselectNode(State state) { var node = Graph.FindNode(state.GetHashCode().ToString()); node.Attr.FillColor = Color.White; }
public void SelectNode(State state) { var node = Graph.FindNode(state.GetHashCode().ToString()); node.Attr.FillColor = selectColor; }
public static Edge FindEdge(this Graph graph, State source, State target) { var nodeFrom = graph.FindNode(source.GetHashCode().ToString()); var nodeTo = graph.FindNode(target.GetHashCode().ToString()); return graph.Edges.FirstOrDefault(x => x.SourceNode == nodeFrom && x.TargetNode == nodeTo); }