using System.Collections.Generic;
using System.Linq;
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 HashSet ();
///
protected override bool IsChecked (int row)
{
return CheckedRows.Contains (row);
}
///
protected override void ToggleRows (int [] range)
{
// if all are ticked untick them
if (range.All (CheckedRows.Contains)) {
// select none
foreach (var r in range) {
CheckedRows.Remove (r);
}
} else {
// otherwise tick all
foreach (var r in range) {
CheckedRows.Add (r);
}
}
}
///
protected override void ToggleRow (int row)
{
if (CheckedRows.Contains (row)) {
CheckedRows.Remove (row);
} else {
CheckedRows.Add (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 ClearAllToggles ()
{
CheckedRows.Clear ();
}
}
}