protected override LayoutData CreateConfiguredLayoutData(GraphControl graphControl, ILayoutAlgorithm layout) { var layoutData = new CircularLayoutData(); if (LayoutStyleItem == LayoutStyle.CustomGroups) { var graph = graphControl.Graph; layoutData.CustomGroups.Delegate = node => graph.GetParent(node); } if (EdgeRoutingPolicyItem == EdgeRoutingPolicy.MarkedExterior) { layoutData.ExteriorEdges.Source = graphControl.Selection.SelectedEdges; } return(layoutData.CombineWith( CreateLabelingLayoutData( graphControl.Graph, LabelPlacementAlongEdgeItem, LabelPlacementSideOfEdgeItem, LabelPlacementOrientationItem, LabelPlacementDistanceItem ) )); }
protected override LayoutData CreateConfiguredLayoutData(GraphControl graphControl, ILayoutAlgorithm layout) { var layoutData = new CircularLayoutData(); if (LayoutStyleItem == LayoutStyle.CustomGroups) { var graph = graphControl.Graph; layoutData.CustomGroups.Delegate = node => graph.GetParent(node); } if (EdgeRoutingPolicyItem == EdgeRoutingPolicy.MarkedExterior) { layoutData.ExteriorEdges.Source = graphControl.Selection.SelectedEdges; } return(layoutData); }
/// <summary> /// Creates and configures the <see cref="CircularLayout"/> and the <see cref="CircularLayoutData"/> /// such that node types are considered. /// </summary> private Sample CreateCircularSample() { // create a circular layout and specify the NodeTypeAwareSequencer as sequencer responsible // for the ordering on the circle - this is necessary to support node types var layout = new CircularLayout { SingleCycleLayout = { NodeSequencer = new NodeTypeAwareSequencer() } }; // the node types are specified as delegate on the nodeTypes property of the layout data var layoutData = new CircularLayoutData { NodeTypes = { Delegate = node => GetNodeType(node) } }; return(new Sample { Name = "Circular", File = "circular", Layout = layout, LayoutData = layoutData, IsDirected = false }); }