Initial population

This commit is contained in:
Jon
2026-03-07 19:38:21 -06:00
commit 46735bddd3
59 changed files with 12911 additions and 0 deletions

779
frmEditWork.vb Normal file
View File

@@ -0,0 +1,779 @@
Imports System.Windows.Forms
Public Class frmEditWork
Inherits OrganLit.BaseEditForm
Private mobjDetailWork As New clsWork
Private m_objHymnTuneNamesHash As Hashtable
Private m_objComposersHash As Hashtable
Private m_objInstrumentationsHash As Hashtable
#Region " Windows Form Designer generated code "
Public Sub New()
MyBase.New()
'This call is required by the Windows Form Designer.
InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
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.
Friend WithEvents lblHymnTuneName As Windows.Forms.Label
Friend WithEvents cboHymnTuneName As ComboTypeAhead.ComboTypeAhead
Friend WithEvents lblWorkName As Windows.Forms.Label
Friend WithEvents txtWorkName As Windows.Forms.TextBox
Friend WithEvents lblBook As Windows.Forms.Label
Friend WithEvents lblPageNumber As Windows.Forms.Label
Friend WithEvents txtPageNumber As Windows.Forms.TextBox
Friend WithEvents cboBook As Windows.Forms.ComboBox
Friend WithEvents cboComposerName As ComboTypeAhead.ComboTypeAhead
Friend WithEvents lblComposerName As Windows.Forms.Label
Friend WithEvents cboInstrumentationName As ComboTypeAhead.ComboTypeAhead
Friend WithEvents lblInstrumentation As Windows.Forms.Label
Friend WithEvents txtOpusInfo As Windows.Forms.TextBox
Friend WithEvents lblOpusInfo As Windows.Forms.Label
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.lblWorkName = New Windows.Forms.Label()
Me.txtWorkName = New Windows.Forms.TextBox()
Me.lblBook = New Windows.Forms.Label()
Me.lblHymnTuneName = New Windows.Forms.Label()
Me.cboHymnTuneName = New ComboTypeAhead.ComboTypeAhead()
Me.lblPageNumber = New Windows.Forms.Label()
Me.txtPageNumber = New Windows.Forms.TextBox()
Me.cboBook = New Windows.Forms.ComboBox()
Me.cboComposerName = New ComboTypeAhead.ComboTypeAhead()
Me.lblComposerName = New Windows.Forms.Label()
Me.txtOpusInfo = New Windows.Forms.TextBox()
Me.lblOpusInfo = New Windows.Forms.Label()
Me.cboInstrumentationName = New ComboTypeAhead.ComboTypeAhead()
Me.lblInstrumentation = New Windows.Forms.Label()
Me.fraAddEdit.SuspendLayout()
Me.SuspendLayout()
'
'fraAddEdit
'
Me.fraAddEdit.Controls.Add(Me.cboInstrumentationName)
Me.fraAddEdit.Controls.Add(Me.lblInstrumentation)
Me.fraAddEdit.Controls.Add(Me.txtOpusInfo)
Me.fraAddEdit.Controls.Add(Me.lblOpusInfo)
Me.fraAddEdit.Controls.Add(Me.cboComposerName)
Me.fraAddEdit.Controls.Add(Me.lblComposerName)
Me.fraAddEdit.Controls.Add(Me.cboBook)
Me.fraAddEdit.Controls.Add(Me.txtPageNumber)
Me.fraAddEdit.Controls.Add(Me.lblPageNumber)
Me.fraAddEdit.Controls.Add(Me.cboHymnTuneName)
Me.fraAddEdit.Controls.Add(Me.lblHymnTuneName)
Me.fraAddEdit.Controls.Add(Me.lblBook)
Me.fraAddEdit.Controls.Add(Me.txtWorkName)
Me.fraAddEdit.Controls.Add(Me.lblWorkName)
Me.fraAddEdit.Location = New System.Drawing.Point(12, 381)
Me.fraAddEdit.Size = New System.Drawing.Size(1123, 220)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblWorkName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.txtWorkName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblBook, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblHymnTuneName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.cboHymnTuneName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblPageNumber, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.txtPageNumber, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.cboBook, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblComposerName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.cboComposerName, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblOpusInfo, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.txtOpusInfo, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.lblInstrumentation, 0)
Me.fraAddEdit.Controls.SetChildIndex(Me.cboInstrumentationName, 0)
'
'lblWorkName
'
Me.lblWorkName.Location = New System.Drawing.Point(19, 127)
Me.lblWorkName.Name = "lblWorkName"
Me.lblWorkName.Size = New System.Drawing.Size(115, 18)
Me.lblWorkName.TabIndex = 8
Me.lblWorkName.Text = "Work Name"
'
'txtWorkName
'
Me.txtWorkName.Location = New System.Drawing.Point(134, 127)
Me.txtWorkName.Name = "txtWorkName"
Me.txtWorkName.Size = New System.Drawing.Size(701, 22)
Me.txtWorkName.TabIndex = 9
'
'lblBook
'
Me.lblBook.Location = New System.Drawing.Point(19, 18)
Me.lblBook.Name = "lblBook"
Me.lblBook.Size = New System.Drawing.Size(96, 19)
Me.lblBook.TabIndex = 0
Me.lblBook.Text = "Book"
'
'lblHymnTuneName
'
Me.lblHymnTuneName.Location = New System.Drawing.Point(19, 182)
Me.lblHymnTuneName.Name = "lblHymnTuneName"
Me.lblHymnTuneName.Size = New System.Drawing.Size(115, 19)
Me.lblHymnTuneName.TabIndex = 12
Me.lblHymnTuneName.Text = "Hymn Tune Name"
'
'cboHymnTuneName
'
Me.cboHymnTuneName.Location = New System.Drawing.Point(134, 182)
Me.cboHymnTuneName.Name = "cboHymnTuneName"
Me.cboHymnTuneName.Size = New System.Drawing.Size(346, 24)
Me.cboHymnTuneName.Sorted = True
Me.cboHymnTuneName.TabIndex = 13
'
'lblPageNumber
'
Me.lblPageNumber.Location = New System.Drawing.Point(19, 46)
Me.lblPageNumber.Name = "lblPageNumber"
Me.lblPageNumber.Size = New System.Drawing.Size(96, 19)
Me.lblPageNumber.TabIndex = 2
Me.lblPageNumber.Text = "Page Number"
'
'txtPageNumber
'
Me.txtPageNumber.Location = New System.Drawing.Point(134, 46)
Me.txtPageNumber.Name = "txtPageNumber"
Me.txtPageNumber.Size = New System.Drawing.Size(77, 22)
Me.txtPageNumber.TabIndex = 3
'
'cboBook
'
Me.cboBook.DropDownStyle = Windows.Forms.ComboBoxStyle.DropDownList
Me.cboBook.Location = New System.Drawing.Point(134, 18)
Me.cboBook.Name = "cboBook"
Me.cboBook.Size = New System.Drawing.Size(509, 24)
Me.cboBook.Sorted = True
Me.cboBook.TabIndex = 1
'
'cboComposerName
'
Me.cboComposerName.Location = New System.Drawing.Point(134, 99)
Me.cboComposerName.Name = "cboComposerName"
Me.cboComposerName.Size = New System.Drawing.Size(509, 24)
Me.cboComposerName.Sorted = True
Me.cboComposerName.TabIndex = 7
'
'lblComposerName
'
Me.lblComposerName.Location = New System.Drawing.Point(19, 99)
Me.lblComposerName.Name = "lblComposerName"
Me.lblComposerName.Size = New System.Drawing.Size(115, 19)
Me.lblComposerName.TabIndex = 6
Me.lblComposerName.Text = "Composer Name"
'
'txtOpusInfo
'
Me.txtOpusInfo.Location = New System.Drawing.Point(134, 155)
Me.txtOpusInfo.Name = "txtOpusInfo"
Me.txtOpusInfo.Size = New System.Drawing.Size(250, 22)
Me.txtOpusInfo.TabIndex = 11
'
'lblOpusInfo
'
Me.lblOpusInfo.Location = New System.Drawing.Point(19, 155)
Me.lblOpusInfo.Name = "lblOpusInfo"
Me.lblOpusInfo.Size = New System.Drawing.Size(115, 18)
Me.lblOpusInfo.TabIndex = 10
Me.lblOpusInfo.Text = "Opus Info"
'
'cboInstrumentationName
'
Me.cboInstrumentationName.Location = New System.Drawing.Point(134, 73)
Me.cboInstrumentationName.Name = "cboInstrumentationName"
Me.cboInstrumentationName.Size = New System.Drawing.Size(509, 24)
Me.cboInstrumentationName.Sorted = True
Me.cboInstrumentationName.TabIndex = 5
'
'lblInstrumentation
'
Me.lblInstrumentation.Location = New System.Drawing.Point(19, 73)
Me.lblInstrumentation.Name = "lblInstrumentation"
Me.lblInstrumentation.Size = New System.Drawing.Size(115, 18)
Me.lblInstrumentation.TabIndex = 4
Me.lblInstrumentation.Text = "Instrumentation"
'
'frmEditWork
'
Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15)
Me.ClientSize = New System.Drawing.Size(1143, 608)
Me.MinimumSize = New System.Drawing.Size(1018, 655)
Me.Name = "frmEditWork"
Me.StartPosition = Windows.Forms.FormStartPosition.Manual
Me.Text = "Edit Work"
Me.fraAddEdit.ResumeLayout(False)
Me.fraAddEdit.PerformLayout()
Me.ResumeLayout(False)
End Sub
#End Region
Protected Overrides Sub LoadExistingItemsList()
Dim lobjWork As clsWork
Dim lobjWorks As System.Collections.Generic.List(Of clsWork)
SetUpExistingItemsHeaders()
lobjWorks = clsWork.GetAllWorks
Me.ExistingItemsListSuspendLayout()
For Each lobjWork In lobjWorks
Me.ExistingObjectsListItems.Add(ConvertWorkToListViewItem(lobjWork))
Next
Me.ExistingItemsListResumeLayout()
End Sub
Private Sub SetUpExistingItemsHeaders()
Me.ExistingObjectsListColumns.Add("Composer", 200, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Work Name", 300, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Book", 300, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Page", 100, HorizontalAlignment.Right)
Me.ExistingObjectsListColumns.Add("Hymn Tune Name", 200, HorizontalAlignment.Left)
Me.ExistingObjectsListColumns.Add("Instrumentation", 200, HorizontalAlignment.Left)
'Set up sorting rules
Dim lobjBaseEditFormColumnSortRules(5) As clsGridColumnSortRule
'First column, sort by Composer, then Work Name
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
'Second column, sort by Work Name, then Composer
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
'Third column, sort by Book, then Page
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(3, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing)
'Fourth column, sort by Book, then Page
lobjBaseEditFormColumnSortRules(3) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortNone)
lobjBaseEditFormColumnSortRules(3).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(3, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
'Fifth column, sort by Hymn Tune Name, then Composer
lobjBaseEditFormColumnSortRules(4) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(4).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
'Sixth column, sort by Instrumentation, then Book, then Page
lobjBaseEditFormColumnSortRules(5) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
lobjBaseEditFormColumnSortRules(5).SubColumnSort = New clsGridSubColumnSortRule(2, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(3, clsGridSubColumnSortRule.enumSortType.SortAsNumber, Nothing))
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
End Sub
Protected Overrides Sub InitializeDetailControls()
'Load data to detail controls here at form load time
txtWorkName.MaxLength = MyGlobals.WORK_NAME_SIZE
txtOpusInfo.MaxLength = MyGlobals.OPUS_INFO_SIZE
cboComposerName.MaxLength = MyGlobals.COMPOSER_NAME_SIZE
cboInstrumentationName.MaxLength = MyGlobals.INSTRUMENTATION_NAME_SIZE
cboHymnTuneName.MaxLength = MyGlobals.HYMN_TUNE_NAME_SIZE
txtPageNumber.Text = ""
txtWorkName.Text = ""
txtOpusInfo.Text = ""
'Only set up book if first time in
If cboBook.Items.Count = 0 Then
Dim objBook As clsBook
Dim objBooks As System.Collections.Generic.List(Of clsBook)
Me.cboBook.Items.Clear()
objBooks = clsBook.GetAllBooks
For Each objBook In objBooks
Me.cboBook.Items.Add(objBook)
Next
'Select first book if there is one
If Me.cboBook.Items.Count > 0 Then
Me.cboBook.SelectedIndex = 0
End If
End If
If m_objComposersHash Is Nothing Then
m_objComposersHash = New Hashtable
End If
If cboComposerName.Items.Count = 0 Then
Dim objComposer As clsComposer
Dim objComposers As System.Collections.Generic.List(Of clsComposer)
Me.cboComposerName.Items.Clear()
m_objComposersHash = New Hashtable
objComposers = clsComposer.GetAllComposers
For Each objComposer In objComposers
AddComposerToForm(objComposer)
Next
End If
If m_objInstrumentationsHash Is Nothing Then
m_objInstrumentationsHash = New Hashtable
End If
If cboInstrumentationName.Items.Count = 0 Then
Dim objInstrumentation As clsInstrumentation
Dim objInstrumentations As System.Collections.Generic.List(Of clsInstrumentation)
Me.cboInstrumentationName.Items.Clear()
m_objInstrumentationsHash = New Hashtable
objInstrumentations = clsInstrumentation.GetAllInstrumentations
For Each objInstrumentation In objInstrumentations
AddInstrumentationToForm(objInstrumentation)
Next
End If
If cboHymnTuneName.Items.Count = 0 Then
Dim objHymnTuneName As clsHymnTuneName
Dim objHymnTuneNames As System.Collections.Generic.List(Of clsHymnTuneName)
Me.cboHymnTuneName.Items.Clear()
m_objHymnTuneNamesHash = New Hashtable
objHymnTuneNames = clsHymnTuneName.GetAllHymnTuneNames
For Each objHymnTuneName In objHymnTuneNames
AddHymnTuneNameToForm(objHymnTuneName)
Next
Me.cboHymnTuneName.Items.Add(MyGlobals.NONE_STRING)
End If
End Sub
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
cboBook.Focus()
End Sub
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
Dim lobjSavedWork As clsWork
Dim lblnReturnValue As Boolean = False
lobjSavedWork = CType(lstvwExistingItem.Tag, clsWork)
Dim objComposer As clsComposer
Select Case cboComposerName.Text.ToUpper.Trim
Case ""
objComposer = Nothing
Case Else
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposerName.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
If objComposer Is Nothing Then
objComposer = New clsComposer(cboComposerName.Text.Trim)
End If
End Select
Dim objInstrumentation As clsInstrumentation
Select Case cboInstrumentationName.Text.ToUpper.Trim
Case ""
objInstrumentation = Nothing
Case Else
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentationName.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
If objInstrumentation Is Nothing Then
objInstrumentation = New clsInstrumentation(cboInstrumentationName.Text.Trim)
End If
End Select
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
mobjDetailWork.Book = CType(cboBook.SelectedItem, clsBook)
mobjDetailWork.PageNumberAsString = txtPageNumber.Text
mobjDetailWork.WorkName = txtWorkName.Text
mobjDetailWork.Composer = objComposer
mobjDetailWork.Instrumentation = objInstrumentation
mobjDetailWork.OpusInfo = txtOpusInfo.Text
mobjDetailWork.HymnTuneName = objHymnTuneName
If lobjSavedWork.StateIsIdentical(mobjDetailWork) Then
Return False
Else
Return True
End If
End Function
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
If txtWorkName.Text.Trim.Length > 0 _
OrElse txtPageNumber.Text.Trim.Length > 0 _
OrElse txtOpusInfo.Text.Trim.Length > 0 Then
'Pre-load composer from book, if composer hasn't already been set
If cboComposerName.Text.Trim.Length = 0 Then
Dim objBook As clsBook
objBook = CType(cboBook.SelectedItem, clsBook)
If objBook.Composer Is Nothing Then
'Do nothing - this is collection
Else
cboComposerName.Text = objBook.Composer.ComposerName
End If
End If
'Pre-load instrumentation from book, if instrumentation hasn't already been set
If cboInstrumentationName.Text.Trim.Length = 0 Then
Dim objBook As clsBook
objBook = CType(cboBook.SelectedItem, clsBook)
If objBook.Instrumentation Is Nothing Then
'Do nothing - this is collection
Else
cboInstrumentationName.Text = objBook.Instrumentation.InstrumentationName
End If
End If
Return True
End If
Return False
End Function
Protected Overrides Sub EmptyOutDetailControls()
InitializeDetailControls()
txtWorkName.Text = ""
txtPageNumber.Text = ""
cboComposerName.Text = ""
cboInstrumentationName.Text = ""
txtOpusInfo.Text = ""
cboHymnTuneName.Text = ""
mobjDetailWork = New clsWork
End Sub
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
Dim lobjWork As clsWork
Dim lblnReturnValue As Boolean = False
lobjWork = CType(lstvwExistingItem.Tag, clsWork)
'MessageBox.Show(lobjWork.Book.ToString)
'cboBook.SelectedText = lobjWork.Book.ToString
cboBook.Text = lobjWork.Book.ToString
txtPageNumber.Text = lobjWork.PageNumberAsString
txtWorkName.Text = lobjWork.WorkName
If lobjWork.Composer Is Nothing Then
cboComposerName.Text = ""
Else
cboComposerName.Text = lobjWork.Composer.ComposerName
End If
If lobjWork.Instrumentation Is Nothing Then
cboInstrumentationName.Text = ""
Else
cboInstrumentationName.Text = lobjWork.Instrumentation.InstrumentationName
End If
txtOpusInfo.Text = lobjWork.OpusInfo
If lobjWork.HymnTuneName Is Nothing Then
cboHymnTuneName.Text = MyGlobals.NONE_STRING
Else
cboHymnTuneName.Text = lobjWork.HymnTuneName.HymnTuneName
End If
mobjDetailWork = CType(lobjWork.Clone(), clsWork)
Return True
End Function
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
Dim lobjWork As clsWork
Dim lstrReferencedBy As String = ""
lobjWork = CType(lstvwItemToDelete.Tag, clsWork)
If Not lobjWork.OKToDelete(lstrReferencedBy) Then
MessageBox.Show("Can't delete work: " + lobjWork.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 work: " + lobjWork.ToString + "?", "Delete confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2)
If ldrDialogResult = Windows.Forms.DialogResult.No Then
Return False
End If
Return True
End Function
Protected Overrides Function DeleteExistingItem(ByVal lstvwItemToDelete As Windows.Forms.ListViewItem) As Boolean
Dim lobjWork As clsWork
lobjWork = CType(lstvwItemToDelete.Tag, clsWork)
Return lobjWork.Delete()
End Function
Protected Overrides Function SaveNewItem() As Boolean
Dim lstrErrorString As String = ""
Dim lblnAddedNewComposer As Boolean
Dim lblnAddedNewInstrumentation As Boolean
Dim lblnAddedNewHymnTuneName As Boolean
lblnAddedNewComposer = False
lblnAddedNewInstrumentation = False
lblnAddedNewHymnTuneName = False
Dim objComposer As clsComposer
Select Case cboComposerName.Text.ToUpper.Trim
Case ""
objComposer = Nothing
Case Else
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposerName.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
If objComposer Is Nothing Then
objComposer = New clsComposer(cboComposerName.Text.Trim)
lblnAddedNewComposer = True
End If
End Select
Dim objInstrumentation As clsInstrumentation
Select Case cboInstrumentationName.Text.ToUpper.Trim
Case ""
objInstrumentation = Nothing
Case Else
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentationName.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
If objInstrumentation Is Nothing Then
objInstrumentation = New clsInstrumentation(cboInstrumentationName.Text.Trim)
lblnAddedNewInstrumentation = True
End If
End Select
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
mobjDetailWork.Book = CType(cboBook.SelectedItem, clsBook)
mobjDetailWork.PageNumberAsString = txtPageNumber.Text
mobjDetailWork.WorkName = txtWorkName.Text
mobjDetailWork.Composer = objComposer
mobjDetailWork.Instrumentation = objInstrumentation
mobjDetailWork.OpusInfo = txtOpusInfo.Text
mobjDetailWork.HymnTuneName = objHymnTuneName
If Not mobjDetailWork.Validate(lstrErrorString) Then
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False
End If
If Not mobjDetailWork.Save() Then
Return False
End If
If lblnAddedNewComposer Then
AddComposerToForm(objComposer)
End If
If lblnAddedNewInstrumentation Then
AddInstrumentationToForm(objInstrumentation)
End If
If lblnAddedNewHymnTuneName Then
AddHymnTuneNameToForm(objHymnTuneName)
End If
Me.ExistingObjectsListItems.Add(ConvertWorkToListViewItem(mobjDetailWork))
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 ConvertWorkToListViewItem(ByVal lobjWork As clsWork) As ListViewItem
Dim lobjItem As ListViewItem
If lobjWork.Composer Is Nothing Then
lobjItem = New ListViewItem("")
Else
lobjItem = New ListViewItem(lobjWork.Composer.ComposerName)
End If
lobjItem.SubItems.Add(lobjWork.WorkName)
lobjItem.SubItems.Add(lobjWork.Book.ToString)
lobjItem.SubItems.Add(lobjWork.PageNumberAsString)
If lobjWork.HymnTuneName Is Nothing Then
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
Else
lobjItem.SubItems.Add(lobjWork.HymnTuneName.HymnTuneName)
End If
lobjItem.SubItems.Add(lobjWork.Instrumentation.InstrumentationName)
'If lobjWork.HymnTuneName Is Nothing Then
' lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
'Else
' lobjItem.SubItems.Add(lobjWork.HymnTuneName.HymnTuneName)
'End If
lobjItem.Tag = lobjWork
Return lobjItem
End Function
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As Windows.Forms.ListViewItem) As Boolean
Dim lstrErrorString As String = ""
Dim lblnAddedNewComposer As Boolean
Dim lblnAddedNewInstrumentation As Boolean
Dim lblnAddedNewHymnTuneName As Boolean
lblnAddedNewComposer = False
lblnAddedNewInstrumentation = False
lblnAddedNewHymnTuneName = False
Dim objComposer As clsComposer
Select Case cboComposerName.Text.ToUpper.Trim
Case ""
objComposer = Nothing
Case Else
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposerName.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
If objComposer Is Nothing Then
objComposer = New clsComposer(cboComposerName.Text.Trim)
lblnAddedNewComposer = True
End If
End Select
Dim objInstrumentation As clsInstrumentation
Select Case cboInstrumentationName.Text.ToUpper.Trim
Case ""
objInstrumentation = Nothing
Case Else
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentationName.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
If objInstrumentation Is Nothing Then
objInstrumentation = New clsInstrumentation(cboInstrumentationName.Text.Trim)
lblnAddedNewInstrumentation = True
End If
End Select
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
mobjDetailWork.Book = CType(cboBook.SelectedItem, clsBook)
mobjDetailWork.PageNumberAsString = txtPageNumber.Text
mobjDetailWork.WorkName = txtWorkName.Text
mobjDetailWork.Composer = objComposer
mobjDetailWork.Instrumentation = objInstrumentation
mobjDetailWork.OpusInfo = txtOpusInfo.Text
mobjDetailWork.HymnTuneName = objHymnTuneName
If Not mobjDetailWork.Validate(lstrErrorString) Then
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Return False
End If
If Not mobjDetailWork.Save() Then
Return False
End If
If lblnAddedNewComposer Then
AddComposerToForm(objComposer)
End If
If lblnAddedNewInstrumentation Then
AddInstrumentationToForm(objInstrumentation)
End If
If lblnAddedNewHymnTuneName Then
AddHymnTuneNameToForm(objHymnTuneName)
End If
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
Me.ExistingObjectsListItems.Add(ConvertWorkToListViewItem(mobjDetailWork))
Return True
End Function
Private Sub txtWorkName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtWorkName.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub cboComposerName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboComposerName.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub cboInstrumentationName_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboInstrumentationName.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 txtPageNumber_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtPageNumber.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub txtOpusInfo_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtOpusInfo.TextChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub cboBook_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboBook.SelectedIndexChanged
MyBase.DetailDataHasChanged()
End Sub
Private Sub txtPageNumber_KeyPress(ByVal sender As System.Object, ByVal e As Windows.Forms.KeyPressEventArgs) Handles txtPageNumber.KeyPress
If Not MyGlobals.AllowKeypressInNumericTextBox(e.KeyChar) Then
e.Handled = True
End If
End Sub
Protected Sub AddComposerToForm(ByVal objComposer As clsComposer)
Me.cboComposerName.Items.Add(objComposer.ComposerName)
m_objComposersHash.Add(objComposer.ComposerName.ToUpper, objComposer)
End Sub
Protected Sub AddInstrumentationToForm(ByVal objInstrumentation As clsInstrumentation)
Me.cboInstrumentationName.Items.Add(objInstrumentation.InstrumentationName)
m_objInstrumentationsHash.Add(objInstrumentation.InstrumentationName.ToUpper, objInstrumentation)
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