namespace Terminal.Gui;
/// Implementation of which records toggled rows by their row number.
public class CheckBoxTableSourceWrapperByIndex : CheckBoxTableSourceWrapperBase
{
///
public CheckBoxTableSourceWrapperByIndex (TableView tableView, ITableSource toWrap) : base (tableView, toWrap) { }
///
/// Gets the collection of all the checked rows in the
/// .
///
public HashSet CheckedRows { get; private set; } = new ();
///
protected override void ClearAllToggles () { CheckedRows.Clear (); }
///
protected override bool IsChecked (int row) { return CheckedRows.Contains (row); }
///
protected override void ToggleAllRows ()
{
if (CheckedRows.Count == Rows)
{
// select none
ClearAllToggles ();
}
else
{
// select all
CheckedRows = new HashSet (Enumerable.Range (0, Rows));
}
}
///
protected override void ToggleRow (int row)
{
if (CheckedRows.Contains (row))
{
CheckedRows.Remove (row);
}
else
{
CheckedRows.Add (row);
}
}
///
protected override void ToggleRows (int [] range)
{
// if all are ticked untick them
if (range.All (CheckedRows.Contains))
{
// select none
foreach (int r in range)
{
CheckedRows.Remove (r);
}
}
else
{
// otherwise tick all
foreach (int r in range)
{
CheckedRows.Add (r);
}
}
}
}