private void SetGraph(GraphEmbedding graphEmbedding) { PauseButton_Click(null, null); this.RunAlgorithmButton.IsEnabled = true; this.StaticGraphCanvas.Children.Clear(); this.GraphVisual = GraphVisual.Create(StaticGraphCanvas, NodeBrush, NumBrush, LineBrush, PenLineCap); foreach (var node in graphEmbedding.Graph.Nodes) { GraphVisual.AddNode(node, graphEmbedding.Embedding[node]); } foreach (var edge in graphEmbedding.Graph.Edges) { GraphVisual.AddEdge(edge); } var scaleViewStackPanel = new StackPanel(); this.ScaleViewViewer.Content = scaleViewStackPanel; WeightsHandler.Create(scaleViewStackPanel, NodeBrush, LineBrush, GraphVisual.NodeWidth, GraphVisual.MinLineThickness, GraphVisual.MaxLineThickness, GraphVisual.MinWeight, GraphVisual.MaxWeight); var edges = EdgesHandler.Create(this.WeightsViewer); foreach (var edge in graphEmbedding.Graph.Edges) { edges.AddEdge(edge, active: false); } }
public override StateController LeftMouseUpAt(Point point) { GraphVisual.Canvas.Children.Remove(WorkingLine); var(closestEllipse, distance) = GraphVisual.ClosestEllipseFrom(point); if (distance < GraphVisual.NodeWidth && closestEllipse != StartingEllipse) { var startingNode = GraphVisual.Nodes.GetKeyOf(StartingEllipse, ReferenceEquals); var endingNode = GraphVisual.Nodes.GetKeyOf(closestEllipse, ReferenceEquals); var edge = Edge.Create(startingNode, endingNode, Weight); if (!GraphVisual.Edges.ContainsKey(edge)) { GraphVisual.AddEdge(edge); } } return(new IdleState(GraphVisual)); }