Esempio n. 1
0
        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;
                }
            }
        }
Esempio n. 2
0
        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);
        }