private void ConfigurePartitionGrid(LayoutGraph graph) { PartitionGrid grid = PartitionGrid.GetPartitionGrid(graph); if (grid != null) { foreach (var column in grid.Columns) { column.LeftInset = column.LeftInset + LaneInsets; column.RightInset = column.RightInset + LaneInsets; } foreach (var row in grid.Rows) { row.TopInset = row.TopInset + LaneInsets; row.BottomInset = row.BottomInset + LaneInsets; } } }
protected override LayoutData CreateConfiguredLayoutData(GraphControl graphControl, ILayoutAlgorithm layout) { var layoutData = new TabularLayoutData(); var nodeLayoutDescriptor = new NodeLayoutDescriptor(); switch (HorizontalAlignmentItem) { case EnumHorizontalAlignments.Center: nodeLayoutDescriptor.HorizontalAlignment = 0.5; break; case EnumHorizontalAlignments.Left: nodeLayoutDescriptor.HorizontalAlignment = 0; break; case EnumHorizontalAlignments.Right: nodeLayoutDescriptor.HorizontalAlignment = 1; break; } switch (VerticalAlignmentItem) { case EnumVerticalAlignments.Center: nodeLayoutDescriptor.HorizontalAlignment = 0.5; break; case EnumVerticalAlignments.Top: nodeLayoutDescriptor.HorizontalAlignment = 0; break; case EnumVerticalAlignments.Bottom: nodeLayoutDescriptor.HorizontalAlignment = 1; break; } var nodeCount = graphControl.Graph.Nodes.Count; PartitionGrid partitionGrid; switch (LayoutPolicyItem) { case EnumLayoutPolicies.FixedTableSize: var rowCount = RowCountItem; var columnCount = ColumnCountItem; if (rowCount * columnCount >= nodeCount) { partitionGrid = new PartitionGrid(rowCount, columnCount); } else { // make sure partitionGrid has enough cells for all nodes partitionGrid = new PartitionGrid(nodeCount / columnCount, columnCount); } break; case EnumLayoutPolicies.SingleRow: partitionGrid = new PartitionGrid(1, nodeCount); break; case EnumLayoutPolicies.SingleColumn: partitionGrid = new PartitionGrid(nodeCount, 1); break; default: partitionGrid = new PartitionGrid(1, 1); break; } var minimumRowHeight = MinimumRowHeightItem; var minimumColumnWidth = MinimumColumnWidthItem; var cellInsets = CellInsetsItem; foreach (RowDescriptor row in partitionGrid.Rows) { row.MinimumHeight = minimumRowHeight; row.TopInset = cellInsets; row.BottomInset = cellInsets; } foreach (ColumnDescriptor column in partitionGrid.Columns) { column.MinimumWidth = minimumColumnWidth; column.LeftInset = cellInsets; column.RightInset = cellInsets; } layoutData.NodeLayoutDescriptors.Constant = nodeLayoutDescriptor; layoutData.PartitionGridData.Grid = partitionGrid; return(layoutData); }