Imports EgtWPFLib5
Imports System.Windows

Public Class OnlyProdEgtMessageBoxV

#Region "FIELDS & PROPERTIES"

   Private WithEvents m_EgtMessageBoxVM As EgtMessageBoxVM

   Private Shadows DialogResult As MessageBoxResult

#End Region    ' FIELDS & PROPERTIES

#Region "CONTRUCTORS"

   Sub New(Owner As Window, EgtMessageBoxVM As EgtMessageBoxVM)
      MyBase.New(Owner)
      ' This call is required by the designer.
      InitializeComponent()
      Me.DataContext = EgtMessageBoxVM
      ' Assegno al riferimento locale al VM il VM preso dal DataContext
      m_EgtMessageBoxVM = EgtMessageBoxVM
   End Sub

#End Region

#Region "METHODS"

   ''' <summary>
   ''' Apre una EgtMessageBox con un messaggio che ritorna un risultato
   ''' </summary>
   ''' <param name="Owner">Finestra di appartenenza</param>
   ''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
   ''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
   Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String) As MessageBoxResult
      Dim NewMessagebox As New OnlyProdEgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText))
      NewMessagebox.ShowDialog()
      Return NewMessagebox.DialogResult
   End Function

   ''' <summary>
   ''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
   ''' </summary>
   ''' <param name="Owner">Finestra di appartenenza</param>
   ''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
   ''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
   ''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
   Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String) As MessageBoxResult
      Dim NewMessagebox As New OnlyProdEgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption))
      NewMessagebox.ShowDialog()
      Return NewMessagebox.DialogResult
   End Function

   ''' <summary>
   ''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
   ''' </summary>
   ''' <param name="Owner">Finestra di appartenenza</param>
   ''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
   ''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
   ''' <param name="Button">Valore che specifica quali bottoni mostrare</param>
   ''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
   Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String, Button As MessageBoxButton) As MessageBoxResult
      Dim NewMessagebox As New OnlyProdEgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption, Button))
      NewMessagebox.ShowDialog()
      Return NewMessagebox.DialogResult
   End Function

   ''' <summary>
   ''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
   ''' </summary>
   ''' <param name="Owner">Finestra di appartenenza</param>
   ''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
   ''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
   ''' <param name="Button">Valore che specifica quali bottoni mostrare</param>
   ''' <param name="Icon">Valore che specifica quale icona mostrare</param>
   ''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
   Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String, Button As MessageBoxButton, Icon As MessageBoxImage) As MessageBoxResult
      Dim NewMessagebox As New OnlyProdEgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption, Button, Icon))
      NewMessagebox.ShowDialog()
      Return NewMessagebox.DialogResult
   End Function

   ''' <summary>
   ''' Apre una EgtMessageBox con un titolo ed un messaggio che ritorna un risultato
   ''' </summary>
   ''' <param name="Owner">Finestra di appartenenza</param>
   ''' <param name="sMessageBoxText">Stringa che specifica il messaggio da mostrare</param>
   ''' <param name="sCaption">Stringa che specifica il titolo da mostrare</param>
   ''' <param name="Button">Valore che specifica quali bottoni mostrare</param>
   ''' <param name="Icon">Valore che specifica quale icona mostrare</param>
   ''' <param name="DefaultResult">Valore che specifica il bottone di default</param>
   ''' <returns>Valore che specifica quale bottone e' stato premuto dall'utente</returns>
   Public Overloads Shared Function Show(Owner As Window, sMessageBoxText As String, sCaption As String, Button As MessageBoxButton, Icon As MessageBoxImage, DefaultResult As MessageBoxResult) As MessageBoxResult
      Dim NewMessagebox As New OnlyProdEgtMessageBoxV(Owner, New EgtMessageBoxVM(sMessageBoxText, sCaption, Button, Icon, DefaultResult))
      NewMessagebox.ShowDialog()
      Return NewMessagebox.DialogResult
   End Function

#End Region    ' METHODS

#Region "EVENTS"

   Private Sub CloseWindow(DialogResult As MessageBoxResult) Handles m_EgtMessageBoxVM.m_CloseWindow
      Me.DialogResult = DialogResult
      Me.Close()
   End Sub

#End Region

End Class
