Add support for adding empty rows

This affects grids and tables.
This commit is contained in:
Patrik Svensson
2020-08-11 17:44:51 +02:00
committed by Patrik Svensson
parent 5d132220ba
commit 1d74fb909c
4 changed files with 128 additions and 3 deletions

View File

@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Spectre.Console.Composition;
using Spectre.Console.Internal;
namespace Spectre.Console
{
@ -56,6 +58,11 @@ namespace Spectre.Console
throw new ArgumentNullException(nameof(column));
}
if (_table.RowCount > 0)
{
throw new InvalidOperationException("Cannot add new columns to grid with existing rows.");
}
// Only pad the most right cell if we've explicitly set a padding.
_table.PadRightCell = column.Padding != null;
@ -97,6 +104,16 @@ namespace Spectre.Console
}
}
/// <summary>
/// Adds an empty row to the grid.
/// </summary>
public void AddEmptyRow()
{
var columns = new string[_table.ColumnCount];
Enumerable.Range(0, _table.ColumnCount).ForEach(index => columns[index] = string.Empty);
AddRow(columns);
}
/// <summary>
/// Adds a new row to the grid.
/// </summary>

View File

@ -81,7 +81,7 @@ namespace Spectre.Console
throw new ArgumentNullException(nameof(column));
}
_columns.Add(new TableColumn(column));
AddColumn(new TableColumn(column));
}
/// <summary>
@ -95,6 +95,11 @@ namespace Spectre.Console
throw new ArgumentNullException(nameof(column));
}
if (_rows.Count > 0)
{
throw new InvalidOperationException("Cannot add new columns to table with existing rows.");
}
_columns.Add(column);
}
@ -109,7 +114,10 @@ namespace Spectre.Console
throw new ArgumentNullException(nameof(columns));
}
_columns.AddRange(columns.Select(column => new TableColumn(column)));
foreach (var column in columns)
{
AddColumn(column);
}
}
/// <summary>
@ -123,7 +131,20 @@ namespace Spectre.Console
throw new ArgumentNullException(nameof(columns));
}
_columns.AddRange(columns.Select(column => column));
foreach (var column in columns)
{
AddColumn(column);
}
}
/// <summary>
/// Adds an empty row to the table.
/// </summary>
public void AddEmptyRow()
{
var columns = new string[ColumnCount];
Enumerable.Range(0, ColumnCount).ForEach(index => columns[index] = string.Empty);
AddRow(columns);
}
/// <summary>