///<inheritdoc/> protected override void ConfigureLayout() { OptionGroup layoutGroup = Handler.GetGroupByName(GENERAL); var partialLayout = new PartialLayout { MinimumNodeDistance = (int)layoutGroup[MIN_NODE_DIST].Value, ConsiderNodeAlignment = (bool)layoutGroup[CONSIDER_SNAPLINES].Value, SubgraphPlacement = subgraphPlacementStrategies[ (string)layoutGroup[SUBGRAPH_POSITION_STRATEGY].Value] }; string componentAssignmentStr = (string)layoutGroup[MODE_COMPONENT_ASSIGNMENT].Value; partialLayout.ComponentAssignmentStrategy = componentAssignment[componentAssignmentStr]; partialLayout.LayoutOrientation = layoutOrientation[(string)layoutGroup[ORIENTATION_MAIN_GRAPH].Value]; partialLayout.EdgeRoutingStrategy = routingStrategies[(string)layoutGroup[ROUTING_TO_SUBGRAPH].Value]; ILayoutAlgorithm subgraphLayout = null; if (componentAssignmentStr != MODE_COMPONENT_SINGLE) { var subGraphLayoutStr = (string)layoutGroup[SUBGRAPH_LAYOUT].Value; switch (subGraphLayoutStr) { case SUBGRAPH_LAYOUT_IHL: subgraphLayout = new HierarchicLayout(); break; case SUBGRAPH_LAYOUT_ORGANIC: subgraphLayout = new OrganicLayout(); break; case SUBGRAPH_LAYOUT_CIRCULAR: subgraphLayout = new CircularLayout(); break; case SUBGRAPH_LAYOUT_ORTHOGONAL: subgraphLayout = new OrthogonalLayout(); break; default: break; } } partialLayout.CoreLayout = subgraphLayout; LayoutAlgorithm = partialLayout; }
/// <inheritdoc /> protected override ILayoutAlgorithm CreateConfiguredLayout(GraphControl graphControl) { var layout = new PartialLayout(); layout.ConsiderNodeAlignment = AlignNodesItem; layout.MinimumNodeDistance = MinimumNodeDistanceItem; layout.SubgraphPlacement = SubgraphPlacementItem; layout.ComponentAssignmentStrategy = ComponentAssignmentStrategyItem; layout.LayoutOrientation = OrientationItem; layout.EdgeRoutingStrategy = RoutingToSubgraphItem; layout.AllowMovingFixedElements = MoveFixedElementsItem; ILayoutAlgorithm subgraphLayout = null; if (ComponentAssignmentStrategyItem != ComponentAssignmentStrategy.Single) { switch (SubgraphLayoutItem) { case EnumSubgraphLayouts.Hierarchic: subgraphLayout = new HierarchicLayout(); break; case EnumSubgraphLayouts.Organic: subgraphLayout = new OrganicLayout(); break; case EnumSubgraphLayouts.Circular: subgraphLayout = new CircularLayout(); break; case EnumSubgraphLayouts.Orthogonal: subgraphLayout = new OrthogonalLayout(); break; } } layout.CoreLayout = subgraphLayout; return(layout); }