/// <summary> /// This function calls the graph layout algorithm methods. /// </summary> /// <param name="graph">The subgraph to be processed.</param> /// <param name="isGroupLayout">True if all selected models are groups.</param> private void RunLayoutSubgraph(GraphLayout.Graph graph, bool isGroupLayout) { // Save subgraph position before running the layout graph.RecordInitialPosition(); // Sugiyama algorithm steps graph.RemoveCycles(); graph.AssignLayers(); graph.OrderNodes(); // Node and graph positioning graph.DistributeNodePosition(); graph.SetGraphPosition(isGroupLayout); }
/// <summary> /// This function calls the graph layout algorithm methods. /// </summary> /// <param name="graph">The subgraph to be processed.</param> /// <param name="isGroupLayout">True if all selected models are groups.</param> private void RunLayoutSubgraph(GraphLayout.Graph graph, bool isGroupLayout) { // Select relevant nodes graph.Nodes.ToList().ForEach(x => x.IsSelected = true); // Save subgraph position before running the layout graph.RecordInitialPosition(); // Sugiyama algorithm steps graph.RemoveCycles(); graph.AssignLayers(); graph.OrderNodes(); // Node and graph positioning graph.DistributeNodePosition(); graph.SetGraphPosition(isGroupLayout); // Reset layer information and deselect nodes graph.ResetLayers(); graph.Nodes.ToList().ForEach(x => x.IsSelected = false); }
private void RunLayoutGraph(GraphLayout.Graph graph) { // Support undo for graph layout command List<ModelBase> undoItems = new List<ModelBase>(); undoItems.AddRange(Model.Nodes); undoItems.AddRange(Model.Notes); WorkspaceModel.RecordModelsForModification(undoItems, Model.UndoRecorder); graph.RecordInitialPosition(); // Sugiyama algorithm steps graph.RemoveCycles(); graph.AssignLayers(); graph.OrderNodes(); // Node and graph positioning graph.DistributeNodePosition(); graph.SetGraphPosition(); }