private static IEnumerable<DiagramSymbolViewModel> AddArrows(IEnumerable<DiagramSymbolViewModel> layers,OrientationKind parentOrientation ,bool dependencyDown) { var viewModels = layers.ToList(); if (!viewModels.OfType<LayerViewModel>().Any(x => x.Children.OfType<LayerViewModel>().Any(y => y.Children.Any()))) return viewModels; var arrowdirection = dependencyDown ? ArrowViewModel.Direction.Down : ArrowViewModel.Direction.Up; foreach (var layer in viewModels.Cast<LayerViewModel>()) layer.Children = AddArrows(layer.Children,layer.Orientation,dependencyDown); if (viewModels.Count <= 1 || parentOrientation == Horizontal) return viewModels; for (var i = 1; i < viewModels.Count; i += 2) { viewModels.Insert(i,new ArrowViewModel(arrowdirection)); } return viewModels; }
public SiblingHolderNode(IEnumerable<Node> siblingNodes, OrientationKind orientation) : base("") { SetChildren(siblingNodes); Orientation = orientation; }