Monorepo/GUIs.Common/FormHelper.vb
2022-09-14 14:20:56 +02:00

76 lines
3.2 KiB
VB.net

Imports DigitalData.Modules.Logging
Imports System.Windows.Forms
Public Class FormHelper
Private ReadOnly LogConfig As LogConfig
Private ReadOnly Logger As Logger
Private ReadOnly Form As Form
Public Class MessageOptions
Public Property ShowCancel As Boolean = False
End Class
Public Sub New(pLogConfig As LogConfig, pForm As Form)
LogConfig = pLogConfig
Logger = pLogConfig.GetLogger()
Form = pForm
End Sub
Public Function ShowInfoMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult
Logger.Info(pMessage)
Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Info, pOptions)
End Function
Public Function ShowErrorMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult
Logger.Error(pMessage)
Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Error, pOptions)
End Function
Public Function ShowErrorMessage(pException As Exception, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult
Logger.Error(pException)
Dim oMethodName = GetMethodName()
Dim oBaseMessage = "In der Funktion '{0}' ist folgender Fehler aufgetreten: {1}"
Dim oMessage = String.Format(oBaseMessage, oMethodName, vbNewLine & vbNewLine & pException.Message)
If LogConfig.Debug Then
oMessage &= vbNewLine & vbNewLine & "=== Debug Information ==="
oMessage &= vbNewLine & vbNewLine & "Stacktrace:"
oMessage &= vbNewLine & pException.StackTrace
End If
Return ShowMessage(oMessage, pTitle, frmDialog.DialogType.Error, pOptions)
End Function
Public Function ShowWarningMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult
Logger.Warn(pTitle & " - " & pMessage)
Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Warning, pOptions)
End Function
Public Function ShowQuestionMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult
Logger.Info(pTitle & " - " & pMessage)
Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Question, pOptions)
End Function
Public Function ShowSuccessMessage(pMessage As String, pTitle As String, Optional pOptions As MessageOptions = Nothing) As DialogResult
Logger.Info(pTitle & " - " & pMessage)
Return ShowMessage(pMessage, pTitle, frmDialog.DialogType.Success, pOptions)
End Function
Private Function ShowMessage(pMessage As String, pTitle As String, pType As frmDialog.DialogType, pOptions As MessageOptions) As DialogResult
Dim oOptions As MessageOptions = IIf(pOptions Is Nothing, New MessageOptions, pOptions)
Dim oForm As New frmDialog(pMessage, pTitle, pType, oOptions.ShowCancel)
oForm.BringToFront()
oForm.TopMost = True
Return oForm.ShowDialog()
End Function
Private Function GetMethodName() As String
Dim oStackTrace As New StackTrace()
Dim oMethodName As String = oStackTrace.GetFrame(2).GetMethod.Name
Return oMethodName
End Function
End Class