Files
OrganLit/frmEditHymnal.vb
2026-04-21 16:35:57 -05:00

187 lines
7.0 KiB
VB.net

Imports System.Windows.Forms
Public Class frmEditHymnal
Private mobjDetailHymnal As New clsHymnal
Protected Overrides Sub LoadExistingItemsList()
Dim lobjHymnal As clsHymnal
Dim lcolHymnals As System.Collections.Generic.List(Of clsHymnal)
SetUpExistingItemsHeaders()
lcolHymnals = clsHymnal.GetAllHymnals
Me.ExistingItemsListSuspendLayout()
For Each lobjHymnal In lcolHymnals
Me.ExistingObjectsListItems.Add(ConvertHymnalToListViewItem(lobjHymnal))
Next
Me.ExistingItemsListResumeLayout()
End Sub
Private Sub SetUpExistingItemsHeaders()
Me.ExistingObjectsListColumns.Add("Hymnal Name", 400, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Hymnal Abbreviation", 150, HorizontalAlignment.Left)
'Me.ExistingObjectsListColumns.Add("Column3", 200, HorizontalAlignment.Left)
'Set up sorting rules
Dim lobjBaseEditFormColumnSortRules(1) As clsGridColumnSortRule
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
End Sub
Protected Overrides Sub InitializeDetailControls()
'Load data to detail controls here at form load time
txtHymnalName.MaxLength = MyGlobals.HYMNAL_NAME_SIZE
txtHymnalAbbreviation.MaxLength = MyGlobals.HYMNAL_ABBREVIATION_SIZE
End Sub
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
txtHymnalName.Focus()
End Sub
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
Dim lobjSavedHymnal As clsHymnal
lobjSavedHymnal = CType(lstvwExistingItem.Tag, clsHymnal)
mobjDetailHymnal.HymnalName = txtHymnalName.Text
mobjDetailHymnal.HymnalAbbreviation = txtHymnalAbbreviation.Text
If lobjSavedHymnal.StateIsIdentical(mobjDetailHymnal) Then
Return False
Else
Return True
End If
End Function
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
If txtHymnalName.Text.Trim.Length > 0 Then
Return True
End If
If txtHymnalAbbreviation.Text.Trim.Length > 0 Then
Return True
End If
Return False
End Function
Protected Overrides Sub EmptyOutDetailControls()
txtHymnalName.Text = ""
txtHymnalAbbreviation.Text = ""
mobjDetailHymnal = New clsHymnal
End Sub
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
Dim lobjHymnal As clsHymnal
Dim lblnReturnValue As Boolean = False
lobjHymnal = CType(lstvwExistingItem.Tag, clsHymnal)
txtHymnalName.Text = lobjHymnal.HymnalName
mobjDetailHymnal = CType(lobjHymnal.Clone(), clsHymnal)
Return True
End Function
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean
Dim lobjHymnal As clsHymnal
Dim lstrReferencedBy As String = ""
lobjHymnal = CType(lstvwItemToDelete.Tag, clsHymnal)
If Not lobjHymnal.OKToDelete(lstrReferencedBy) Then
MessageBox.Show("Can't delete hymnal: " + lobjHymnal.HymnalName + ". Currently used by " + lstrReferencedBy + ".", "Unable to delete", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Return False
End If
Dim ldrDialogResult As DialogResult = MessageBox.Show("Are you sure you want to delete hymnal: " + lobjHymnal.HymnalName + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
If ldrDialogResult = System.Windows.Forms.DialogResult.No Then
Return False
End If
Return True
End Function
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean
Dim lobjHymnal As clsHymnal
lobjHymnal = CType(lstvwItemToDelete.Tag, clsHymnal)
Return lobjHymnal.Delete()
End Function
Protected Overrides Function SaveNewItem() As Boolean
Dim lstrErrorString As String = ""
mobjDetailHymnal.HymnalName = txtHymnalName.Text
mobjDetailHymnal.HymnalAbbreviation = txtHymnalAbbreviation.Text
If Not mobjDetailHymnal.Validate(lstrErrorString) Then
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False
End If
If Not mobjDetailHymnal.Save() Then
Return False
End If
Me.ExistingObjectsListItems.Add(ConvertHymnalToListViewItem(mobjDetailHymnal))
Return True
End Function
Protected Overrides Sub UserRequestedToExit()
Me.Close()
End Sub
Protected Overrides Sub EditOrAddStarting()
CType(Me.ParentForm, frmMain).DisableMenus()
End Sub
Protected Overrides Sub EditOrAddCompleted()
CType(Me.ParentForm, frmMain).EnableMenus()
End Sub
Private Function ConvertHymnalToListViewItem(ByVal lobjHymnal As clsHymnal) As ListViewItem
Dim lobjItem As ListViewItem
lobjItem = New ListViewItem(lobjHymnal.HymnalName)
lobjItem.SubItems.Add(lobjHymnal.HymnalAbbreviation)
'lobjItem.SubItems.Add("Item1Col3")
lobjItem.Tag = lobjHymnal
Return lobjItem
End Function
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
Dim lstrErrorString As String = ""
mobjDetailHymnal.HymnalName = txtHymnalName.Text
mobjDetailHymnal.HymnalAbbreviation = txtHymnalAbbreviation.Text
If Not mobjDetailHymnal.Validate(lstrErrorString) Then
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False
End If
If Not mobjDetailHymnal.Save() Then
Return False
End If
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
Me.ExistingObjectsListItems.Add(ConvertHymnalToListViewItem(mobjDetailHymnal))
Return True
End Function
Private Sub txtHymnalName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnalName.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub txtHymnalAbbreviation_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnalAbbreviation.TextChanged
MyBase.DetailDataHasChanged()
End Sub
End Class