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);
        }
Exemple #3
0
        /// <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
            });
        }