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); } } } }