void System.Windows.Markup.IComponentConnector.Connect(int connectionId, object target) { switch (connectionId) { case 1: this.nodeCtrl = ((VisLab.WPF.NodeControl)(target)); return; case 4: this.border = ((System.Windows.Controls.Border)(target)); #line 303 "..\..\..\..\..\WPF\Controls\NodeControl.xaml" this.border.MouseLeave += new System.Windows.Input.MouseEventHandler(this.border_MouseLeave); #line default #line hidden return; case 5: this.expander = ((System.Windows.Controls.Expander)(target)); #line 305 "..\..\..\..\..\WPF\Controls\NodeControl.xaml" this.expander.Collapsed += new System.Windows.RoutedEventHandler(this.expander_Collapsed); #line default #line hidden #line 305 "..\..\..\..\..\WPF\Controls\NodeControl.xaml" this.expander.Expanded += new System.Windows.RoutedEventHandler(this.expander_Expanded); #line default #line hidden return; case 6: this.grid2 = ((System.Windows.Controls.Grid)(target)); return; case 7: this.lbl1 = ((System.Windows.Controls.Label)(target)); return; case 8: this.lbl2 = ((System.Windows.Controls.Label)(target)); return; } this._contentLoaded = true; }
public static void DrawTopDown(Canvas canvas, ExperimentsTree.ExperimentsTreeNode node, Point point, Experiment currentExp) { if (lastExperimentNumber != currentExp.Number) { dict = Experiment.GetDict(); lastExperimentNumber = currentExp.Number; } if (node.DescendantsCount > maxDescendantsCount) maxDescendantsCount = node.DescendantsCount; var nodeCtrl = new NodeControl(); nodeCtrl.Tag = node; nodeCtrl.Header = string.Format("Exp. Nr.{0}", dict[node.Id].Number); nodeCtrl.Counter = node.ChildsCount; nodeCtrl.lbl1.Content = "Id: " + node.Id.ToString(); nodeCtrl.lbl2.Content = "Descendants Count: " + node.DescendantsCount.ToString(); nodeCtrl.border.Background = GradientBraker.Brake(Colors.AntiqueWhite, Colors.Blue, maxDescendantsCount + 1).ToArray()[node.DescendantsCount]; nodeCtrl.IsSelected = true; canvas.Children.Add(nodeCtrl); Canvas.SetTop(nodeCtrl, point.Y); Canvas.SetLeft(nodeCtrl, point.X); Canvas.SetZIndex(nodeCtrl, 100); // calculate coordinates double trainLength = (node.ChildsCount - 1) * l; double startX = point.X - trainLength / 2; double startY = h * (node.Level + 1); foreach (var chld in node.ChildNodes) { if (chld.IsOpen) { DrawTopDown(canvas, chld, new Point(startX, startY), dict[chld.Id]); } else { var nodeCtrl2 = new NodeControl(); nodeCtrl2.Header = string.Format("Exp. Nr.{0}", dict[chld.Id].Number); nodeCtrl2.Tag = chld; nodeCtrl2.Counter = chld.ChildsCount; nodeCtrl2.lbl1.Content = "Id: " + chld.Id.ToString(); nodeCtrl2.lbl2.Content = "Descendants Count: " + chld.DescendantsCount.ToString(); nodeCtrl2.IsSelected = false; nodeCtrl2.border.Background = GradientBraker.Brake(Colors.AntiqueWhite, Colors.Blue, maxDescendantsCount + 1).ToArray()[chld.DescendantsCount]; canvas.Children.Add(nodeCtrl2); Canvas.SetTop(nodeCtrl2, startY); Canvas.SetLeft(nodeCtrl2, startX); Canvas.SetZIndex(nodeCtrl2, 100); } var line = new Line(); if (!chld.IsOpen) { line.Stroke = Brushes.Black; line.StrokeThickness = 0.1; line.StrokeDashArray = new DoubleCollection(new double[] { 70, 35 }); } else { line.Stroke = Brushes.Gold; line.StrokeThickness = 1; } line.X1 = point.X + l/1.39; line.Y1 = point.Y + w/2; line.X2 = startX + l/1.39; line.Y2 = startY + w / 2; canvas.Children.Add(line); Canvas.SetZIndex(line, 99); startX += l; } }