440 lines
18 KiB
VB.net
440 lines
18 KiB
VB.net
Imports System.Windows.Forms
|
|
|
|
Public Class frmEditBook
|
|
Private mobjDetailBook As New clsBook
|
|
Private m_objComposersHash As Hashtable
|
|
Private m_objInstrumentationsHash As Hashtable
|
|
Private m_objPublishersHash As Hashtable
|
|
|
|
Protected Overrides Sub LoadExistingItemsList()
|
|
Dim lobjBook As clsBook
|
|
Dim lobjBooks As System.Collections.Generic.List(Of clsBook)
|
|
|
|
SetUpExistingItemsHeaders()
|
|
|
|
lobjBooks = clsBook.GetAllBooks
|
|
|
|
Me.ExistingItemsListSuspendLayout()
|
|
|
|
For Each lobjBook In lobjBooks
|
|
Me.ExistingObjectsListItems.Add(ConvertBookToListViewItem(lobjBook))
|
|
Next
|
|
|
|
Me.ExistingItemsListResumeLayout()
|
|
End Sub
|
|
|
|
Private Sub SetUpExistingItemsHeaders()
|
|
Me.ExistingObjectsListColumns.Add("Composer", 300, HorizontalAlignment.Left)
|
|
Me.ExistingObjectsListColumns.Add("Book Title", 400, HorizontalAlignment.Left)
|
|
Me.ExistingObjectsListColumns.Add("Publisher", 200, HorizontalAlignment.Left)
|
|
|
|
'Set up sorting rules
|
|
Dim lobjBaseEditFormColumnSortRules(2) As clsGridColumnSortRule
|
|
lobjBaseEditFormColumnSortRules(0) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
|
lobjBaseEditFormColumnSortRules(0).SubColumnSort = New clsGridSubColumnSortRule(1, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
|
|
lobjBaseEditFormColumnSortRules(1) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
|
lobjBaseEditFormColumnSortRules(1).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing)
|
|
lobjBaseEditFormColumnSortRules(2) = New clsGridColumnSortRule(clsGridColumnSortRule.enumSortType.SortAsString)
|
|
lobjBaseEditFormColumnSortRules(2).SubColumnSort = New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, New clsGridSubColumnSortRule(0, clsGridSubColumnSortRule.enumSortType.SortAsString, Nothing))
|
|
|
|
MyBaseEditFormColumnSortRules = lobjBaseEditFormColumnSortRules
|
|
|
|
End Sub
|
|
|
|
Protected Overrides Sub InitializeDetailControls()
|
|
'Load data to detail controls here at form load time
|
|
txtBookTitle.MaxLength = MyGlobals.BOOK_TITLE_SIZE
|
|
cboComposer.MaxLength = MyGlobals.COMPOSER_NAME_SIZE
|
|
cboInstrumentation.MaxLength = MyGlobals.INSTRUMENTATION_NAME_SIZE
|
|
cboPublisher.MaxLength = MyGlobals.PUBLISHER_NAME_SIZE
|
|
|
|
txtBookTitle.Text = ""
|
|
|
|
Dim objComposer As clsComposer
|
|
Dim objComposers As System.Collections.Generic.List(Of clsComposer)
|
|
|
|
If cboComposer.Items.Count = 0 Then
|
|
Me.cboComposer.Items.Clear()
|
|
m_objComposersHash = New Hashtable
|
|
|
|
objComposers = clsComposer.GetAllComposers
|
|
For Each objComposer In objComposers
|
|
AddComposerToForm(objComposer)
|
|
Next
|
|
|
|
Me.cboComposer.Items.Add(MyGlobals.COLLECTION_STRING)
|
|
End If
|
|
|
|
Dim objInstrumentation As clsInstrumentation
|
|
Dim objInstrumentations As System.Collections.Generic.List(Of clsInstrumentation)
|
|
|
|
If cboInstrumentation.Items.Count = 0 Then
|
|
Me.cboInstrumentation.Items.Clear()
|
|
m_objInstrumentationsHash = New Hashtable
|
|
|
|
objInstrumentations = clsInstrumentation.GetAllInstrumentations
|
|
For Each objInstrumentation In objInstrumentations
|
|
AddInstrumentationToForm(objInstrumentation)
|
|
Next
|
|
End If
|
|
|
|
If cboPublisher.Items.Count = 0 Then
|
|
Dim objPublisher As clsPublisher
|
|
Dim objPublishers As System.Collections.Generic.List(Of clsPublisher)
|
|
|
|
Me.cboPublisher.Items.Clear()
|
|
m_objPublishersHash = New Hashtable
|
|
|
|
objPublishers = clsPublisher.GetAllPublishers
|
|
For Each objPublisher In objPublishers
|
|
AddPublisherToForm(objPublisher)
|
|
Next
|
|
|
|
Me.cboPublisher.Items.Add(MyGlobals.NONE_STRING)
|
|
End If
|
|
End Sub
|
|
|
|
Protected Overrides Sub SetFocusToFirstDetailControlForEdit()
|
|
txtBookTitle.Focus()
|
|
End Sub
|
|
|
|
Protected Overrides Function DetailControlsHaveDifferentDataThanExistingData(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lobjSavedBook As clsBook
|
|
Dim lblnReturnValue As Boolean = False
|
|
|
|
lobjSavedBook = CType(lstvwExistingItem.Tag, clsBook)
|
|
|
|
Dim objComposer As clsComposer
|
|
Select Case cboComposer.Text.ToUpper.Trim
|
|
Case MyGlobals.COLLECTION_STRING.ToUpper, ""
|
|
objComposer = Nothing
|
|
Case Else
|
|
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposer.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
|
If objComposer Is Nothing Then
|
|
objComposer = New clsComposer(cboComposer.Text.Trim)
|
|
End If
|
|
End Select
|
|
|
|
Dim objInstrumentation As clsInstrumentation
|
|
Select Case cboInstrumentation.Text.ToUpper.Trim
|
|
Case ""
|
|
objInstrumentation = Nothing
|
|
Case Else
|
|
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentation.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
|
If objInstrumentation Is Nothing Then
|
|
objInstrumentation = New clsInstrumentation(cboInstrumentation.Text.Trim)
|
|
End If
|
|
End Select
|
|
|
|
Dim objPublisher As clsPublisher
|
|
Select Case cboPublisher.Text.ToUpper.Trim
|
|
Case MyGlobals.NONE_STRING.ToUpper, ""
|
|
objPublisher = Nothing
|
|
Case Else
|
|
objPublisher = CType(MyGlobals.GetItemFromHashWithStringKey(cboPublisher.Text.ToUpper.Trim, m_objPublishersHash), clsPublisher)
|
|
If objPublisher Is Nothing Then
|
|
objPublisher = New clsPublisher(cboPublisher.Text.Trim, MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
|
End If
|
|
End Select
|
|
|
|
mobjDetailBook.BookTitle = txtBookTitle.Text
|
|
mobjDetailBook.Composer = objComposer
|
|
mobjDetailBook.Instrumentation = objInstrumentation
|
|
mobjDetailBook.Publisher = objPublisher
|
|
|
|
If lobjSavedBook.StateIsIdentical(mobjDetailBook) Then
|
|
Return False
|
|
Else
|
|
Return True
|
|
End If
|
|
End Function
|
|
|
|
Protected Overrides Function DetailControlsHaveSignificantData() As Boolean
|
|
If txtBookTitle.Text.Trim.Length > 0 Then
|
|
Return True
|
|
End If
|
|
|
|
Return False
|
|
End Function
|
|
|
|
Protected Overrides Sub EmptyOutDetailControls()
|
|
InitializeDetailControls()
|
|
txtBookTitle.Text = ""
|
|
mobjDetailBook = New clsBook
|
|
End Sub
|
|
|
|
Protected Overrides Function LoadExistingDataToDetailControls(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lobjBook As clsBook
|
|
Dim lblnReturnValue As Boolean = False
|
|
lobjBook = CType(lstvwExistingItem.Tag, clsBook)
|
|
txtBookTitle.Text = lobjBook.BookTitle
|
|
|
|
If lobjBook.Composer Is Nothing Then
|
|
cboComposer.Text = MyGlobals.COLLECTION_STRING
|
|
Else
|
|
cboComposer.Text = lobjBook.Composer.ComposerName
|
|
End If
|
|
|
|
If lobjBook.Instrumentation Is Nothing Then
|
|
cboInstrumentation.Text = ""
|
|
Else
|
|
cboInstrumentation.Text = lobjBook.Instrumentation.InstrumentationName
|
|
End If
|
|
|
|
If lobjBook.Publisher Is Nothing Then
|
|
cboPublisher.Text = MyGlobals.NONE_STRING
|
|
Else
|
|
cboPublisher.Text = lobjBook.Publisher.PublisherName
|
|
End If
|
|
|
|
mobjDetailBook = CType(lobjBook.Clone(), clsBook)
|
|
Return True
|
|
End Function
|
|
|
|
Protected Overrides Function ConfirmOKToDeleteExistingItem(ByVal lstvwItemToDelete As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lobjBook As clsBook
|
|
Dim lstrReferencedBy As String = ""
|
|
|
|
lobjBook = CType(lstvwItemToDelete.Tag, clsBook)
|
|
|
|
If Not lobjBook.OKToDelete(lstrReferencedBy) Then
|
|
MessageBox.Show("Can't delete book: " + lobjBook.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 book: " + lobjBook.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 lobjBook As clsBook
|
|
lobjBook = CType(lstvwItemToDelete.Tag, clsBook)
|
|
|
|
Return lobjBook.Delete()
|
|
End Function
|
|
|
|
Protected Overrides Function SaveNewItem() As Boolean
|
|
Dim lstrErrorString As String = ""
|
|
Dim lblnAddedComposer As Boolean
|
|
Dim lblnAddedInstrumentation As Boolean
|
|
Dim lblnAddedPublisher As Boolean
|
|
|
|
lblnAddedComposer = False
|
|
lblnAddedInstrumentation = False
|
|
lblnAddedPublisher = False
|
|
|
|
Dim objComposer As clsComposer
|
|
Select Case cboComposer.Text.ToUpper.Trim
|
|
Case MyGlobals.COLLECTION_STRING.ToUpper, ""
|
|
objComposer = Nothing
|
|
Case Else
|
|
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposer.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
|
If objComposer Is Nothing Then
|
|
objComposer = New clsComposer(cboComposer.Text.Trim)
|
|
lblnAddedComposer = True
|
|
End If
|
|
End Select
|
|
|
|
Dim objInstrumentation As clsInstrumentation
|
|
Select Case cboInstrumentation.Text.ToUpper.Trim
|
|
Case ""
|
|
objInstrumentation = Nothing
|
|
Case Else
|
|
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentation.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
|
If objInstrumentation Is Nothing Then
|
|
objInstrumentation = New clsInstrumentation(cboInstrumentation.Text.Trim)
|
|
lblnAddedInstrumentation = True
|
|
End If
|
|
End Select
|
|
|
|
Dim objPublisher As clsPublisher
|
|
Select Case cboPublisher.Text.ToUpper.Trim
|
|
Case MyGlobals.NONE_STRING.ToUpper, ""
|
|
objPublisher = Nothing
|
|
Case Else
|
|
objPublisher = CType(MyGlobals.GetItemFromHashWithStringKey(cboPublisher.Text.ToUpper.Trim, m_objPublishersHash), clsPublisher)
|
|
If objPublisher Is Nothing Then
|
|
objPublisher = New clsPublisher(cboPublisher.Text.Trim, MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
|
lblnAddedPublisher = True
|
|
End If
|
|
End Select
|
|
|
|
mobjDetailBook.BookTitle = txtBookTitle.Text
|
|
mobjDetailBook.Composer = objComposer
|
|
mobjDetailBook.Instrumentation = objInstrumentation
|
|
mobjDetailBook.Publisher = objPublisher
|
|
|
|
If Not mobjDetailBook.Validate(lstrErrorString) Then
|
|
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
|
Return False
|
|
End If
|
|
|
|
If Not mobjDetailBook.Save() Then
|
|
Return False
|
|
End If
|
|
|
|
Me.ExistingObjectsListItems.Add(ConvertBookToListViewItem(mobjDetailBook))
|
|
|
|
If lblnAddedComposer Then
|
|
AddComposerToForm(objComposer)
|
|
End If
|
|
|
|
If lblnAddedInstrumentation Then
|
|
AddInstrumentationToForm(objInstrumentation)
|
|
End If
|
|
|
|
If lblnAddedPublisher Then
|
|
AddPublisherToForm(objPublisher)
|
|
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 ConvertBookToListViewItem(ByVal lobjBook As clsBook) As ListViewItem
|
|
Dim lobjItem As ListViewItem
|
|
If lobjBook.Composer Is Nothing Then
|
|
lobjItem = New ListViewItem(MyGlobals.COLLECTION_STRING)
|
|
Else
|
|
lobjItem = New ListViewItem(lobjBook.Composer.ComposerName)
|
|
End If
|
|
|
|
lobjItem.SubItems.Add(lobjBook.BookTitle)
|
|
|
|
If lobjBook.Publisher Is Nothing Then
|
|
lobjItem.SubItems.Add(MyGlobals.NONE_STRING)
|
|
Else
|
|
lobjItem.SubItems.Add(lobjBook.Publisher.PublisherName)
|
|
End If
|
|
|
|
lobjItem.Tag = lobjBook
|
|
|
|
Return lobjItem
|
|
|
|
End Function
|
|
|
|
Protected Overrides Function SaveNewDataForExistingItem(ByVal lstvwExistingItem As System.Windows.Forms.ListViewItem) As Boolean
|
|
Dim lstrErrorString As String = ""
|
|
Dim lblnAddedComposer As Boolean
|
|
Dim lblnAddedInstrumentation As Boolean
|
|
Dim lblnAddedPublisher As Boolean
|
|
|
|
lblnAddedComposer = False
|
|
lblnAddedInstrumentation = False
|
|
lblnAddedPublisher = False
|
|
|
|
Dim objComposer As clsComposer
|
|
Select Case cboComposer.Text.ToUpper.Trim
|
|
Case MyGlobals.COLLECTION_STRING.ToUpper, ""
|
|
objComposer = Nothing
|
|
Case Else
|
|
objComposer = CType(MyGlobals.GetItemFromHashWithStringKey(cboComposer.Text.ToUpper.Trim, m_objComposersHash), clsComposer)
|
|
If objComposer Is Nothing Then
|
|
objComposer = New clsComposer(cboComposer.Text.Trim)
|
|
lblnAddedComposer = True
|
|
End If
|
|
End Select
|
|
|
|
Dim objInstrumentation As clsInstrumentation
|
|
Select Case cboInstrumentation.Text.ToUpper.Trim
|
|
Case ""
|
|
objInstrumentation = Nothing
|
|
Case Else
|
|
objInstrumentation = CType(MyGlobals.GetItemFromHashWithStringKey(cboInstrumentation.Text.ToUpper.Trim, m_objInstrumentationsHash), clsInstrumentation)
|
|
If objInstrumentation Is Nothing Then
|
|
objInstrumentation = New clsInstrumentation(cboInstrumentation.Text.Trim)
|
|
lblnAddedInstrumentation = True
|
|
End If
|
|
End Select
|
|
|
|
Dim objPublisher As clsPublisher
|
|
Select Case cboPublisher.Text.ToUpper.Trim
|
|
Case MyGlobals.NONE_STRING.ToUpper, ""
|
|
objPublisher = Nothing
|
|
Case Else
|
|
objPublisher = CType(MyGlobals.GetItemFromHashWithStringKey(cboPublisher.Text.ToUpper.Trim, m_objPublishersHash), clsPublisher)
|
|
If objPublisher Is Nothing Then
|
|
objPublisher = New clsPublisher(cboPublisher.Text.Trim, MyGlobals.PUBLISHER_STREAMING_ALLOWED_UNKNOWN)
|
|
lblnAddedPublisher = True
|
|
End If
|
|
End Select
|
|
|
|
mobjDetailBook.BookTitle = txtBookTitle.Text
|
|
mobjDetailBook.Composer = objComposer
|
|
mobjDetailBook.Instrumentation = objInstrumentation
|
|
mobjDetailBook.Publisher = objPublisher
|
|
|
|
If Not mobjDetailBook.Validate(lstrErrorString) Then
|
|
MessageBox.Show(lstrErrorString, "Edit Error", MessageBoxButtons.OK, MessageBoxIcon.Warning)
|
|
Return False
|
|
End If
|
|
|
|
If Not mobjDetailBook.Save() Then
|
|
Return False
|
|
End If
|
|
|
|
Me.ExistingObjectsListItems.Remove(lstvwExistingItem)
|
|
Me.ExistingObjectsListItems.Add(ConvertBookToListViewItem(mobjDetailBook))
|
|
|
|
If lblnAddedComposer Then
|
|
AddComposerToForm(objComposer)
|
|
End If
|
|
|
|
If lblnAddedInstrumentation Then
|
|
AddInstrumentationToForm(objInstrumentation)
|
|
End If
|
|
|
|
If lblnAddedPublisher Then
|
|
AddPublisherToForm(objPublisher)
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub txtBookTitle_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtBookTitle.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub cboComposer_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboComposer.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub cboInstrumentation_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cboInstrumentation.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Private Sub cboPublisher_TextChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles cboPublisher.TextChanged
|
|
MyBase.DetailDataHasChanged()
|
|
End Sub
|
|
|
|
Protected Sub AddComposerToForm(ByVal objComposer As clsComposer)
|
|
Me.cboComposer.Items.Add(objComposer.ComposerName)
|
|
m_objComposersHash.Add(objComposer.ComposerName.ToUpper, objComposer)
|
|
End Sub
|
|
|
|
Protected Sub AddInstrumentationToForm(ByVal objInstrumentation As clsInstrumentation)
|
|
Me.cboInstrumentation.Items.Add(objInstrumentation.InstrumentationName)
|
|
m_objInstrumentationsHash.Add(objInstrumentation.InstrumentationName.ToUpper, objInstrumentation)
|
|
End Sub
|
|
|
|
Protected Sub AddPublisherToForm(ByVal objPublisher As clsPublisher)
|
|
Me.cboPublisher.Items.Add(objPublisher.PublisherName)
|
|
m_objPublishersHash.Add(objPublisher.PublisherName.ToUpper, objPublisher)
|
|
End Sub
|
|
|
|
|
|
End Class |