333 lines
14 KiB
VB.net
333 lines
14 KiB
VB.net
Imports System.Windows.Forms
|
|
|
|
Public Class frmEditHymn
|
|
Private mobjDetailHymn As New clsHymn
|
|
Private m_objHymnTuneNamesHash As Hashtable
|
|
|
|
Protected Overrides Sub LoadExistingItemsList()
|
|
Dim lobjHymn As clsHymn
|
|
Dim lobjHymns As System.Collections.Generic.List(Of clsHymn)
|
|
|
|
SetUpExistingItemsHeaders()
|
|
|
|
lobjHymns = clsHymn.GetAllHymns
|
|
|
|
Me.ExistingItemsListSuspendLayout()
|
|
For Each lobjHymn In lobjHymns
|
|
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(lobjHymn))
|
|
Next
|
|
|
|
Me.ExistingItemsListResumeLayout()
|
|
End Sub
|
|
|
|
Private Sub SetUpExistingItemsHeaders()
|
|
Me.ExistingObjectsListColumns.Add("Hymnal", 100, HorizontalAlignment.Left)
|
|
Me.ExistingObjectsListColumns.Add("Hymn Number", 100, HorizontalAlignment.Left)
|
|
Me.ExistingObjectsListColumns.Add("Hymn Name", 400, HorizontalAlignment.Left)
|
|
Me.ExistingObjectsListColumns.Add("Hymn Tune Name", 200, HorizontalAlignment.Left)
|
|
|
|
'Set up sorting rules
|
|
Dim lobjBaseEditFormColumnSortRules(3) As clsGridColumnSortRule
|
|
|
|
'First column, sort by Hymnal, then Hymn Number
|
|
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
|
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
|
|
'Second column, sort by Hymnal, then Hymn Number
|
|
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortNone)
|
|
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
|
|
'Third column, sort by Hymn name, then Hymnal and Hymn Number
|
|
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
|
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
|
|
'Fourth column, sort by Hymn Tune name, then Hymn Name, Hymnal and Hymn Number
|
|
lobjBaseEditFormColumnSortRules(3) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
|
lobjBaseEditFormColumnSortRules(3).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)))
|
|
|
|
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Sub InitializeDetailControls()
|
|
'Load data to detail controls here at form load time
|
|
txtHymnName.MaxLength = MyGlobals.HYMN_NAME_SIZE
|
|
cboHymnTuneName.MaxLength = MyGlobals.HYMN_TUNE_NAME_SIZE
|
|
|
|
txtHymnNumber.Text = ""
|
|
txtHymnName.Text = ""
|
|
|
|
'Only set up hymnal if first time in
|
|
If cboHymnal.Items.Count = 0 Then
|
|
Dim objHymnal As clsHymnal
|
|
Dim objHymnals As System.Collections.Generic.List(Of clsHymnal)
|
|
|
|
Me.cboHymnal.Items.Clear()
|
|
|
|
objHymnals = clsHymnal.GetAllHymnals
|
|
For Each objHymnal In objHymnals
|
|
Me.cboHymnal.Items.Add(objHymnal)
|
|
Next
|
|
|
|
'Select first hymnal if there is one
|
|
If Me.cboHymnal.Items.Count > 0 Then
|
|
Me.cboHymnal.SelectedIndex = 0
|
|
End If
|
|
End If
|
|
|
|
If cboHymnTuneName.Items.Count = 0 Then
|
|
Dim objHymnTuneName As clsHymnTuneName
|
|
Dim objHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName)
|
|
'Dim objObject As Object
|
|
|
|
Me.cboHymnTuneName.Items.Clear()
|
|
m_objHymnTuneNamesHash = New Hashtable
|
|
|
|
objHymnTuneNames = clsHymnTuneName.GetAllHymnTuneNames
|
|
For Each objHymnTuneName In objHymnTuneNames
|
|
AddHymnTuneNameToForm(objHymnTuneName)
|
|
Next
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
|
cboHymnal.Focus()
|
|
End Sub
|
|
|
|
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lobjSavedHymn As clsHymn
|
|
Dim lblnReturnValue As Boolean = False
|
|
|
|
lobjSavedHymn = CType(lstvwExistingItem.Tag, clsHymn)
|
|
|
|
Dim objHymnTuneName As clsHymnTuneName
|
|
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
|
Case MyGlobals.NONE_STRING.ToUpper, ""
|
|
objHymnTuneName = Nothing
|
|
Case Else
|
|
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
|
If objHymnTuneName Is Nothing Then
|
|
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
|
End If
|
|
End Select
|
|
|
|
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
|
|
mobjDetailHymn.HymnName = txtHymnName.Text
|
|
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
|
|
mobjDetailHymn.HymnTuneName = objHymnTuneName
|
|
|
|
If lobjSavedHymn.StateIsIdentical(mobjDetailHymn) Then
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
|
If txtHymnName.Text.Trim.Length > 0 _
|
|
OrElse txtHymnNumber.Text.Trim.Length > 0 Then
|
|
Return True
|
|
End If
|
|
|
|
Return False
|
|
End Function
|
|
|
|
Protected Overrides Sub EmptyOutDetailControls()
|
|
InitializeDetailControls()
|
|
txtHymnNumber.Text = ""
|
|
txtHymnName.Text = ""
|
|
cboHymnTuneName.Text = ""
|
|
|
|
mobjDetailHymn = New clsHymn
|
|
End Sub
|
|
|
|
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lobjHymn As clsHymn
|
|
Dim lblnReturnValue As Boolean = False
|
|
lobjHymn = CType(lstvwExistingItem.Tag, clsHymn)
|
|
txtHymnNumber.Text = lobjHymn.HymnNumberAsString
|
|
txtHymnName.Text = lobjHymn.HymnName
|
|
|
|
cboHymnal.Text = lobjHymn.Hymnal.ToString
|
|
|
|
If lobjHymn.HymnTuneName Is Nothing Then
|
|
cboHymnTuneName.Text = MyGlobals.NONE_STRING
|
|
Else
|
|
cboHymnTuneName.Text = lobjHymn.HymnTuneName.HymnTuneName
|
|
End If
|
|
|
|
mobjDetailHymn = CType(lobjHymn.Clone(), clsHymn)
|
|
Return True
|
|
End Function
|
|
|
|
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lobjHymn As clsHymn
|
|
Dim lstrReferencedBy As String = ""
|
|
|
|
lobjHymn = CType(lstvwItemToDelete.Tag, clsHymn)
|
|
|
|
If Not lobjHymn.OKToDelete(lstrReferencedBy) Then
|
|
MessageBox.Show("Can't delete hymn: " + lobjHymn.ToString + ". 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 hymn: " + lobjHymn.ToString + "?", "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 lobjHymn As clsHymn
|
|
lobjHymn = CType(lstvwItemToDelete.Tag, clsHymn)
|
|
|
|
Return lobjHymn.Delete()
|
|
End Function
|
|
|
|
Protected Overrides Function SaveNewItem() As Boolean
|
|
Dim lstrErrorString As String = ""
|
|
Dim lblnAddedNewHymnTuneName As Boolean
|
|
|
|
lblnAddedNewHymnTuneName = False
|
|
|
|
Dim objHymnTuneName As clsHymnTuneName
|
|
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
|
Case MyGlobals.NONE_STRING.ToUpper, ""
|
|
objHymnTuneName = Nothing
|
|
Case Else
|
|
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
|
If objHymnTuneName Is Nothing Then
|
|
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
|
lblnAddedNewHymnTuneName = True
|
|
End If
|
|
End Select
|
|
|
|
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
|
|
mobjDetailHymn.HymnName = txtHymnName.Text
|
|
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
|
|
mobjDetailHymn.HymnTuneName = objHymnTuneName
|
|
|
|
If Not mobjDetailHymn.Validate(lstrErrorString) Then
|
|
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
|
Return False
|
|
End If
|
|
|
|
If Not mobjDetailHymn.Save() Then
|
|
Return False
|
|
End If
|
|
|
|
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(mobjDetailHymn))
|
|
|
|
If lblnAddedNewHymnTuneName Then
|
|
AddHymnTuneNameToForm(objHymnTuneName)
|
|
End If
|
|
|
|
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 ConvertHymnToListViewItem(ByVal lobjHymn As clsHymn) As ListViewItem
|
|
Dim lobjItem As ListViewItem
|
|
|
|
If lobjHymn.Hymnal Is Nothing Then
|
|
lobjItem = New ListViewItem("")
|
|
Else
|
|
lobjItem = New ListViewItem(lobjHymn.Hymnal.HymnalAbbreviation)
|
|
End If
|
|
|
|
lobjItem.SubItems.Add(lobjHymn.HymnNumberAsString)
|
|
lobjItem.SubItems.Add(lobjHymn.HymnName)
|
|
|
|
If lobjHymn.HymnTuneName Is Nothing Then
|
|
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
|
|
Else
|
|
lobjItem.SubItems.Add(lobjHymn.HymnTuneName.HymnTuneName)
|
|
End If
|
|
|
|
lobjItem.Tag = lobjHymn
|
|
|
|
Return lobjItem
|
|
|
|
End Function
|
|
|
|
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lstrErrorString As String = ""
|
|
Dim lblnAddedNewHymnTuneName As Boolean
|
|
|
|
lblnAddedNewHymnTuneName = False
|
|
|
|
Dim objHymnTuneName As clsHymnTuneName
|
|
Select Case cboHymnTuneName.Text.ToUpper.Trim
|
|
Case MyGlobals.NONE_STRING.ToUpper, ""
|
|
objHymnTuneName = Nothing
|
|
Case Else
|
|
objHymnTuneName = CType(MyGlobals.GetItemFromHashWithStringKey(cboHymnTuneName.Text.ToUpper.Trim, m_objHymnTuneNamesHash), clsHymnTuneName)
|
|
If objHymnTuneName Is Nothing Then
|
|
objHymnTuneName = New clsHymnTuneName(cboHymnTuneName.Text.Trim)
|
|
lblnAddedNewHymnTuneName = True
|
|
End If
|
|
End Select
|
|
|
|
mobjDetailHymn.HymnNumberAsString = txtHymnNumber.Text
|
|
mobjDetailHymn.HymnName = txtHymnName.Text
|
|
mobjDetailHymn.Hymnal = CType(cboHymnal.SelectedItem, clsHymnal)
|
|
mobjDetailHymn.HymnTuneName = objHymnTuneName
|
|
|
|
If Not mobjDetailHymn.Validate(lstrErrorString) Then
|
|
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
|
Return False
|
|
End If
|
|
|
|
If Not mobjDetailHymn.Save() Then
|
|
Return False
|
|
End If
|
|
|
|
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
|
Me.ExistingObjectsListItems.Add(ConvertHymnToListViewItem(mobjDetailHymn))
|
|
|
|
If lblnAddedNewHymnTuneName Then
|
|
AddHymnTuneNameToForm(objHymnTuneName)
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub txtHymnName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnName.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub cboHymnTuneName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnTuneName.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub txtHymnNumber_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtHymnNumber.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub cboHymnal_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboHymnal.SelectedIndexChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub txtHymnNumber_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtHymnNumber.KeyPress
|
|
If Not MyGlobals.AllowKeypressInNumericTextBox(e.KeyChar) Then
|
|
e.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
Protected Sub AddHymnTuneNameToForm(ByVal objHymnTuneName As clsHymnTuneName)
|
|
Me.cboHymnTuneName.Items.Add(objHymnTuneName.HymnTuneName)
|
|
m_objHymnTuneNamesHash.Add(objHymnTuneName.HymnTuneName.ToUpper, objHymnTuneName)
|
|
End Sub
|
|
|
|
|
|
End Class |