Imports System.ComponentModel

Public Class SelectTableWD
   Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow)

   Private m_nSelectedTable As Integer = 0
   Public ReadOnly Property nSelectedTable As Integer
      Get
         Return m_nSelectedTable
      End Get
   End Property

   Sub New(Owner As Window)
      Me.Owner = Owner
      Me.WindowStartupLocation = WindowStartupLocation.CenterOwner
      InitializeComponent()
   End Sub

   Public CurrTableList As New List(Of TableToChange)

   Private Sub ChangeTable_Initialized() Handles Me.Initialized

      TableListMsg.Text = EgtUILib.EgtMsg(91234)      ' Seleziona la tavola da usare
      ' recuepero l'inidce della tavola corrente
      Dim nIndeXCurrTab As Integer = GetCurrentTable()
      ' creo la lista delle tavole disponibili (attivo il bottone della tavola attualmente in uso)
      For nInd As Integer = 0 To GetTableCount() - 1
         CurrTableList.Add(New TableToChange("Tab", (nInd + 1).ToString, ((nInd + 1) = nIndeXCurrTab)))
      Next
   End Sub

   Private Sub ChangeTable_Loaded() Handles Me.Loaded
      TableList.ItemsSource = CurrTableList
   End Sub

   Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click
      ' recupero l'indice della tavola impostata
      For Each ItemTab As TableToChange In CurrTableList
         If ItemTab.IsActive Then
            m_nSelectedTable = ItemTab.nIndex
            Exit For
         End If
      Next
      DialogResult = True
   End Sub

End Class

Public Class TableToChange
   Implements INotifyPropertyChanged

   Private Property m_sName As String = "Tab"
   Public ReadOnly Property sName As String
      Get
         Return m_sName
      End Get
   End Property

   Public ReadOnly Property ImgTab As String
      Get
         Return DirectCast(Application.Current.MainWindow, MainWindow).GetResourcesDir() & "\MachineButtonsImage\table.png"
      End Get
   End Property

   Private Property m_nIndex As Integer = 3
   Public ReadOnly Property nIndex As Integer
      Get
         Return m_nIndex
      End Get
   End Property

   Private m_bIsActive As Boolean = False
   Public Property IsActive As Boolean
      Get
         Return m_bIsActive
      End Get
      Set(value As Boolean)
         m_bIsActive = value
         NotifyPropertyChanged("IsActive")
      End Set
   End Property

   Public Sub New(Name As String, Ind As Integer, IsCurrent As Boolean)
      m_sName = Name & " " & Ind.ToString
      m_nIndex = Ind
      m_bIsActive = IsCurrent
      NotifyPropertyChanged("IsActive")
   End Sub

   Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged

   Public Sub NotifyPropertyChanged(propName As String)
      RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
   End Sub

End Class