Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/KeyboardScherm.vb =================================================================== diff -u -r1926 -r1928 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/KeyboardScherm.vb (.../KeyboardScherm.vb) (revision 1926) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/KeyboardScherm.vb (.../KeyboardScherm.vb) (revision 1928) @@ -5,12 +5,14 @@ Implements IObserver Private _keyboardSubject As IKeyboardSubject + Private _subScherm As ISubscherm Private Sub SubScherm_Load(sender As Object, e As EventArgs) Handles Me.Load Try ' Kan geen dependecy injection doen via constructor in een WinForm Using scope = My.MyApplication.Container.BeginLifetimeScope() _keyboardSubject = scope.Resolve(Of IKeyboardSubject)() + _subScherm = scope.Resolve(Of ISubscherm)() End Using 'Subscriben @@ -25,14 +27,18 @@ End Sub Public Sub UpdateObserver(sender As ISubject, Optional o As Object = Nothing) Implements IObserver.UpdateObserver - If Not TypeOf o Is IKeyboardSubject Then - Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(IKeyboardSubject)}") - End If + Try + If Not TypeOf sender Is IKeyboardSubject Then + Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(IKeyboardSubject)}") + End If - Dim keyboardSubject As IKeyboardSubject = sender - If keyboardSubject.TekstState = KeyBoardSubjectTekstStateEnum.Tekst Then - 'Tekst tonen - TextBoxInput.Text = keyboardSubject.Tekst - End If + Dim keyboardSubject As IKeyboardSubject = sender + If keyboardSubject.TekstState = KeyBoardSubjectTekstStateEnum.Tekst Then + 'Tekst tonen + TextBoxInput.Text = keyboardSubject.Tekst + End If + Catch ex As Exception + _subScherm.HandleException(Me, ex) + End Try End Sub End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.vb (revision 1928) @@ -0,0 +1,27 @@ +Public Class ExceptionScherm + Private ReadOnly _ex As Exception + + Sub New(ex As Exception) + ' This call is required by the designer. + InitializeComponent() + + ' Add any initialization after the InitializeComponent() call. + _ex = ex + End Sub + + Private Sub ExceptionScherm_Load(sender As Object, e As EventArgs) Handles Me.Load + If IsNothing(_ex.InnerException) Then + TextBoxException.Text = _ex.Message + Else + TextBoxException.Text = _ex.InnerException.Message + End If + End Sub + + Private Sub LabelFout_Click(sender As Object, e As EventArgs) Handles LabelFout.Click + If IsNothing(_ex.InnerException) Then + MessageBox.Show(_ex.Message, "Fout in detail...", MessageBoxButtons.OK, MessageBoxIcon.Warning) + Else + MessageBox.Show(_ex.InnerException.Message, "Fout in detail...", MessageBoxButtons.OK, MessageBoxIcon.Warning) + End If + End Sub +End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.resx =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.resx (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.resx (revision 1928) @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/LaserOpdrachtDetailsScherm.vb =================================================================== diff -u -r1926 -r1928 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/LaserOpdrachtDetailsScherm.vb (.../LaserOpdrachtDetailsScherm.vb) (revision 1926) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/LaserOpdrachtDetailsScherm.vb (.../LaserOpdrachtDetailsScherm.vb) (revision 1928) @@ -5,12 +5,14 @@ Implements IObserver Private _controller As ILaseropdrachtController + Private _subScherm As ISubscherm Private Sub SubScherm_Load(sender As Object, e As EventArgs) Handles Me.Load Try ' Kan geen dependecy injection doen via constructor in een WinForm Using scope = My.MyApplication.Container.BeginLifetimeScope() _controller = scope.Resolve(Of ILaseropdrachtController)() + _subScherm = scope.Resolve(Of ISubscherm)() End Using 'Subscriben @@ -29,28 +31,31 @@ Invoke(updateGuiDelegate, o) End Sub - Private Delegate Sub UpdateGuiDelegate(o as Object) + Private Delegate Sub UpdateGuiDelegate(o As Object) Private Sub UpdateGui(o As Object) - 'Er is een laseropdracht opgezocht - 'Nothing -> geen resultaten, afbreken - 'Aanwezig -> informatie tonen + Try + 'Er is een laseropdracht opgezocht + 'Nothing -> geen resultaten, afbreken + 'Aanwezig -> informatie tonen - If IsNothing(o) Then - ' Niet aanwezig, afbreken - Return - End If + If IsNothing(o) Then + ' Niet aanwezig, afbreken + Return + End If - ' Laseropdracht aanwezig, informatie tonen - If Not TypeOf o Is ILaserOpdracht Then - Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(ILaserOpdracht)}") - End If - - Dim laserOpdracht As ILaserOpdracht = o - TextBoxProductID.Text = laserOpdracht.ProductId - TextBoxKortTekst.Text = laserOpdracht.KortTekst - TextBoxLogoID.Text = laserOpdracht.LogoId - TextBoxReferentie.Text = laserOpdracht.Referentie - TextBoxLadeKleur.Text = laserOpdracht.LadeKleur - TextBoxBestandsnaam.Text = laserOpdracht.Bestandsnaam + ' Laseropdracht aanwezig, informatie tonen + If Not TypeOf o Is ILaserOpdracht Then + Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(ILaserOpdracht)}") + End If + Dim laserOpdracht As ILaserOpdracht = o + TextBoxProductID.Text = laserOpdracht.ProductId + TextBoxKortTekst.Text = laserOpdracht.KortTekst + TextBoxLogoID.Text = laserOpdracht.LogoId + TextBoxReferentie.Text = laserOpdracht.Referentie + TextBoxLadeKleur.Text = laserOpdracht.LadeKleur + TextBoxBestandsnaam.Text = laserOpdracht.Bestandsnaam + Catch ex As Exception + _subScherm.HandleException(Me, ex) + End Try End Sub End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/Subscherm.resx =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/Subscherm.resx (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/Subscherm.resx (revision 1928) @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + False + + \ No newline at end of file Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj =================================================================== diff -u -r1927 -r1928 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj (.../Laser Gravering.vbproj) (revision 1927) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Laser Gravering.vbproj (.../Laser Gravering.vbproj) (revision 1928) @@ -28,7 +28,7 @@ false true 1 - 1.4.1.%2a + 1.5.0.%2a false true true @@ -154,6 +154,12 @@ Form + + ExceptionScherm.vb + + + UserControl + KeyboardScherm.vb @@ -172,6 +178,7 @@ UserControl + @@ -211,6 +218,9 @@ FormHoofdscherm.vb + + ExceptionScherm.vb + KeyboardScherm.vb @@ -220,6 +230,9 @@ LaserOpdrachtOpzoekSelecteerStatus.vb + + Subscherm.vb + VbMyResourcesResXFileCodeGenerator Resources.Designer.vb Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/ApplicationEvents.vb =================================================================== diff -u -r1922 -r1928 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/ApplicationEvents.vb (.../ApplicationEvents.vb) (revision 1922) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/ApplicationEvents.vb (.../ApplicationEvents.vb) (revision 1928) @@ -28,6 +28,8 @@ ' Mappers builder.RegisterType(Of CacheMapper).As(Of ICacheMapper)() builder.RegisterType(Of XmlMapper).As(Of IXmlMapper)() + 'Forms + builder.RegisterType(Of Subscherm).As(Of ISubscherm)() Container = builder.Build() End Sub Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/LaserOpdrachtOpzoekSelecteerStatus.vb =================================================================== diff -u -r1926 -r1928 --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/LaserOpdrachtOpzoekSelecteerStatus.vb (.../LaserOpdrachtOpzoekSelecteerStatus.vb) (revision 1926) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/LaserOpdrachtOpzoekSelecteerStatus.vb (.../LaserOpdrachtOpzoekSelecteerStatus.vb) (revision 1928) @@ -5,18 +5,20 @@ Implements IObserver Private _controller As ILaseropdrachtController + Private _subScherm As ISubscherm Private Sub SubScherm_Load(sender As Object, e As EventArgs) Handles Me.Load Try ' Kan geen dependecy injection doen via constructor in een WinForm Using scope = My.MyApplication.Container.BeginLifetimeScope() _controller = scope.Resolve(Of ILaseropdrachtController)() + _subScherm = scope.Resolve(Of ISubscherm)() End Using 'Subscriben _controller.AddObserver(Me) Catch ex As Exception - ToonError(ex) + ToonError(ex) 'Geen subscherm error handling, want _subScherm kan Nothing zijn End Try End Sub @@ -25,25 +27,30 @@ End Sub Public Sub UpdateObserver(sender As ISubject, Optional o As Object = Nothing) Implements IObserver.UpdateObserver + 'Hier geen exception handling want het kan in een andere thread zitten Dim updateGuiDelegate As UpdateGuiDelegate = AddressOf UpdateGui Invoke(updateGuiDelegate, o) End Sub Private Delegate Sub UpdateGuiDelegate(o As Object) Private Sub UpdateGui(o As Object) - 'Er is een laseropdracht opgezocht - 'Nothing -> rood tonen - 'Aanwezig -> controleren of het wel degelijk een laseropdracht is, groen tonen + Try + 'Er is een laseropdracht opgezocht + 'Nothing -> rood tonen + 'Aanwezig -> controleren of het wel degelijk een laseropdracht is, groen tonen - If IsNothing(o) Then - ' Niet aanwezig, afbreken - LabelOpzoekFeedbackKleur.BackColor = Color.IndianRed - Else - ' Laseropdracht aanwezig - If Not TypeOf o Is ILaserOpdracht Then - Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(ILaserOpdracht)}") + If IsNothing(o) Then + ' Niet aanwezig, afbreken + LabelOpzoekFeedbackKleur.BackColor = Color.IndianRed + Else + ' Laseropdracht aanwezig + If Not TypeOf o Is ILaserOpdracht Then + Throw New Exception($"{Me.GetType().Name} ondersteunt enkel {NameOf(ILaserOpdracht)}") + End If + LabelOpzoekFeedbackKleur.BackColor = Color.ForestGreen End If - LabelOpzoekFeedbackKleur.BackColor = Color.ForestGreen - End If + Catch ex As Exception + _subScherm.HandleException(Me, ex) + End Try End Sub End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.Designer.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.Designer.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/ExceptionScherm.Designer.vb (revision 1928) @@ -0,0 +1,89 @@ + _ +Partial Class ExceptionScherm + Inherits System.Windows.Forms.UserControl + + 'UserControl overrides dispose to clean up the component list. + _ + Protected Overrides Sub Dispose(ByVal disposing As Boolean) + Try + If disposing AndAlso components IsNot Nothing Then + components.Dispose() + End If + Finally + MyBase.Dispose(disposing) + End Try + End Sub + + 'Required by the Windows Form Designer + Private components As System.ComponentModel.IContainer + + 'NOTE: The following procedure is required by the Windows Form Designer + 'It can be modified using the Windows Form Designer. + 'Do not modify it using the code editor. + _ + Private Sub InitializeComponent() + Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel() + Me.LabelFout = New System.Windows.Forms.Label() + Me.TextBoxException = New System.Windows.Forms.TextBox() + Me.TableLayoutPanel1.SuspendLayout + Me.SuspendLayout + ' + 'TableLayoutPanel1 + ' + Me.TableLayoutPanel1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) + Me.TableLayoutPanel1.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink + Me.TableLayoutPanel1.ColumnCount = 1 + Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 349!)) + Me.TableLayoutPanel1.Controls.Add(Me.LabelFout, 0, 0) + Me.TableLayoutPanel1.Controls.Add(Me.TextBoxException, 0, 1) + Me.TableLayoutPanel1.Location = New System.Drawing.Point(0, 0) + Me.TableLayoutPanel1.Name = "TableLayoutPanel1" + Me.TableLayoutPanel1.RowCount = 2 + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 30!)) + Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100!)) + Me.TableLayoutPanel1.Size = New System.Drawing.Size(349, 306) + Me.TableLayoutPanel1.TabIndex = 1 + ' + 'LabelFout + ' + Me.LabelFout.Anchor = System.Windows.Forms.AnchorStyles.None + Me.LabelFout.AutoSize = true + Me.LabelFout.Font = New System.Drawing.Font("Microsoft Sans Serif", 10!, CType((System.Drawing.FontStyle.Bold Or System.Drawing.FontStyle.Underline),System.Drawing.FontStyle), System.Drawing.GraphicsUnit.Point, CType(0,Byte)) + Me.LabelFout.ForeColor = System.Drawing.Color.DarkRed + Me.LabelFout.Location = New System.Drawing.Point(154, 6) + Me.LabelFout.Name = "LabelFout" + Me.LabelFout.Size = New System.Drawing.Size(40, 17) + Me.LabelFout.TabIndex = 2 + Me.LabelFout.Text = "Fout" + ' + 'TextBoxException + ' + Me.TextBoxException.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + Or System.Windows.Forms.AnchorStyles.Left) _ + Or System.Windows.Forms.AnchorStyles.Right),System.Windows.Forms.AnchorStyles) + Me.TextBoxException.BackColor = System.Drawing.SystemColors.ActiveBorder + Me.TextBoxException.Location = New System.Drawing.Point(3, 33) + Me.TextBoxException.Multiline = true + Me.TextBoxException.Name = "TextBoxException" + Me.TextBoxException.Size = New System.Drawing.Size(343, 270) + Me.TextBoxException.TabIndex = 3 + ' + 'ExceptionScherm + ' + Me.AutoScaleDimensions = New System.Drawing.SizeF(6!, 13!) + Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font + Me.BackColor = System.Drawing.SystemColors.ActiveBorder + Me.Controls.Add(Me.TableLayoutPanel1) + Me.Name = "ExceptionScherm" + Me.Size = New System.Drawing.Size(349, 306) + Me.TableLayoutPanel1.ResumeLayout(false) + Me.TableLayoutPanel1.PerformLayout + Me.ResumeLayout(false) + +End Sub + Friend WithEvents TableLayoutPanel1 As TableLayoutPanel + Friend WithEvents LabelFout As Label + Friend WithEvents TextBoxException As TextBox +End Class Index: Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/Subscherm.vb =================================================================== diff -u --- Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/Subscherm.vb (revision 0) +++ Laser Gravering/nieuw/Laser Gravering_nieuw/Laser Gravering/Formulieren/subschermen/Subscherm.vb (revision 1928) @@ -0,0 +1,16 @@ +Public Interface ISubscherm + Sub HandleException(scherm As Control, ex As Exception) +End Interface + +Public Class Subscherm + Implements ISubscherm + + Public Sub HandleException(sender As Control, ex As Exception) Implements ISubscherm.HandleException + sender.Controls.Clear() + Dim exScherm As New ExceptionScherm(ex) With { + .Size = sender.Size + } + sender.Controls.Add(exScherm) + End Sub + +End Class