using System.Collections.Generic;
namespace Terminal.Gui;
///
/// Defines rendering options that affect how the table is displayed.
///
/// See TableView Deep Dive for more information.
///
public class TableStyle {
///
/// Gets or sets a flag indicating whether to render headers of a .
/// Defaults to .
///
/// , etc
/// may still be used even if is .
public bool ShowHeaders { get; set; } = true;
///
/// When scrolling down always lock the column headers in place as the first row of the table
///
public bool AlwaysShowHeaders { get; set; } = false;
///
/// True to render a solid line above the headers
///
public bool ShowHorizontalHeaderOverline { get; set; } = true;
///
/// True to render a solid line under the headers
///
public bool ShowHorizontalHeaderUnderline { get; set; } = true;
///
/// True to render a solid line vertical line between cells
///
public bool ShowVerticalCellLines { get; set; } = true;
///
/// True to render a solid line vertical line between headers
///
public bool ShowVerticalHeaderLines { get; set; } = true;
///
/// True to render a arrows on the right/left of the table when
/// there are more column(s) that can be scrolled to. Requires
/// to be true.
/// Defaults to true
///
public bool ShowHorizontalScrollIndicators { get; set; } = true;
///
/// Gets or sets a flag indicating whether there should be a horizontal line after all the data
/// in the table. Defaults to .
///
public bool ShowHorizontalBottomline { get; set; } = false;
///
/// True to invert the colors of the first symbol of the selected cell in the .
/// This gives the appearance of a cursor for when the doesn't otherwise show
/// this
///
public bool InvertSelectedCellFirstCharacter { get; set; } = false;
///
/// Gets or sets a flag indicating whether to force use when rendering
/// vertical cell lines (even when is on).
///
public bool AlwaysUseNormalColorForVerticalCellLines { get; set; } = false;
///
/// Collection of columns for which you want special rendering (e.g. custom column lengths, text alignment etc)
///
public Dictionary ColumnStyles { get; set; } = new Dictionary ();
///
/// Delegate for coloring specific rows in a different color. For cell color
///
///
public RowColorGetterDelegate RowColorGetter { get; set; }
///
/// Determines rendering when the last column in the table is visible but it's
/// content or is less than the remaining
/// space in the control. True (the default) will expand the column to fill
/// the remaining bounds of the control. False will draw a column ending line
/// and leave a blank column that cannot be selected in the remaining space.
///
///
public bool ExpandLastColumn { get; set; } = true;
///
///
/// Determines how is updated when scrolling
/// right off the end of the currently visible area.
///
///
/// If true then when scrolling right the scroll offset is increased the minimum required to show
/// the new column. This may be slow if you have an incredibly large number of columns in
/// your table and/or slow implementations
///
///
/// If false then scroll offset is set to the currently selected column (i.e. PageRight).
///
///
public bool SmoothHorizontalScrolling { get; set; } = true;
///
/// Returns the entry from for the given or null if no custom styling is defined for it
///
///
///
public ColumnStyle GetColumnStyleIfAny (int col)
{
return ColumnStyles.TryGetValue (col, out ColumnStyle result) ? result : null;
}
///
/// Returns an existing for the given or creates a new one with default options
///
///
///
public ColumnStyle GetOrCreateColumnStyle (int col)
{
if (!ColumnStyles.ContainsKey (col))
ColumnStyles.Add (col, new ColumnStyle ());
return ColumnStyles [col];
}
}