Option Strict On
Option Explicit On

Namespace Nexamas.UI.Controls

    Partial Public NotInheritable Class MASTabControl


#Region "Selection Helpers"

        Private Sub MoveSelection(delta As Integer)
            If _items.Count <= 0 Then Return

            Dim start As Integer = If(_selectedIndex >= 0, _selectedIndex, 0)
            Dim i As Integer = start

            For stepIndex As Integer = 0 To _items.Count - 1
                i += delta

                If i < 0 Then i = _items.Count - 1
                If i >= _items.Count Then i = 0

                If _items(i) IsNot Nothing AndAlso _items(i).Enabled Then
                    SelectedIndex = i
                    Exit Sub
                End If
            Next
        End Sub

        Private Sub SelectFirstEnabled()
            For i As Integer = 0 To _items.Count - 1
                If _items(i) IsNot Nothing AndAlso _items(i).Enabled Then
                    SelectedIndex = i
                    Exit Sub
                End If
            Next
        End Sub

        Private Sub SelectLastEnabled()
            For i As Integer = _items.Count - 1 To 0 Step -1
                If _items(i) IsNot Nothing AndAlso _items(i).Enabled Then
                    SelectedIndex = i
                    Exit Sub
                End If
            Next
        End Sub

        Private Sub SelectIndexIfEnabled(index As Integer)
            If index < 0 OrElse index >= _items.Count Then
                InvalidateVisual()
                Return
            End If

            Dim item As MASTabItem = _items(index)
            If item Is Nothing OrElse Not item.Enabled Then
                InvalidateVisual()
                Return
            End If

            SelectedIndex = index
        End Sub

        Private Function NormalizeSelectableIndex(index As Integer) As Integer
            If _items.Count <= 0 Then Return -1
            If index < 0 OrElse index >= _items.Count Then Return -1

            Dim item As MASTabItem = _items(index)
            If item Is Nothing OrElse Not item.Enabled Then Return -1

            Return index
        End Function

#End Region


    End Class

End Namespace
