Imports System.Collections.Generic
Imports System.Text

Public Class SelectionHelper(Of KeyType)
    Dim selectedValues As Dictionary(Of KeyType, Boolean) = New Dictionary(Of KeyType, Boolean)
    Dim RwHdlSeleccionados As Dictionary(Of KeyType, Boolean) = New Dictionary(Of KeyType, Boolean)
    Public Function GetIsSelected(ByVal key As KeyType) As Boolean
        Dim isSelected As Boolean
        If selectedValues.TryGetValue(key, isSelected) Then
            Return isSelected
        End If
        Return False
    End Function
    Public Sub SetIsSelected(rwh As KeyType, ByVal key As KeyType, ByVal value As Boolean)
        If value Then
            selectedValues(key) = value
            RwHdlSeleccionados(rwh) = value
        Else
            selectedValues.Remove(key)
            RwHdlSeleccionados.Remove(rwh)
        End If
    End Sub
    Public Function GetSelectedKeys() As List(Of KeyType)
        Dim list As New List(Of KeyType)()
        For Each key As KeyType In selectedValues.Keys
            list.Add(key)
        Next key
        Return list
    End Function
    Public Function GetSelectedrwh() As List(Of KeyType)
        Dim list As New List(Of KeyType)()
        For Each key As KeyType In RwHdlSeleccionados.Keys
            list.Add(key)
        Next key
        Return list
    End Function
    Public Function GetSelectedKeysAsString() As String
        Dim list As List(Of KeyType) = GetSelectedKeys()
        Dim str As New StringBuilder()
        For i As Integer = 0 To list.Count - 1
            str.AppendLine(list(i).ToString())
        Next i
        Return str.ToString()
    End Function
    Public Function GetSelectionCount() As Integer
        Return selectedValues.Count
    End Function
End Class