ZooFlow: Support opening a new search in an existing window, clean up SearchStart

This commit is contained in:
Jonathan Jenne
2020-11-18 16:24:34 +01:00
parent 9a638bf814
commit 471e29aa29
10 changed files with 397 additions and 613 deletions

View File

@@ -0,0 +1,4 @@
Public Class BaseResult
Property Title As String
Property Datatable As DataTable
End Class

View File

@@ -54,9 +54,6 @@
<Reference Include="DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraTreeList.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DigitalData.Controls.DocumentViewer">
<HintPath>..\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath>
</Reference>
<Reference Include="GdPicture.NET.14">
<HintPath>D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll</HintPath>
</Reference>
@@ -92,6 +89,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Base\BaseErrorHandler.vb" />
<Compile Include="Base\BaseResult.vb" />
<Compile Include="Base\BaseRibbonForm.vb">
<SubType>Form</SubType>
</Compile>
@@ -167,6 +165,10 @@
</None>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Controls.DocumentViewer\DocumentViewer.vbproj">
<Project>{0958cddf-4a16-41f6-8837-8335f71d599c}</Project>
<Name>DocumentViewer</Name>
</ProjectReference>
<ProjectReference Include="..\Controls.LookupGrid\LookupControl.vbproj">
<Project>{3DCD6D1A-C830-4241-B7E4-27430E7EA483}</Project>
<Name>LookupControl</Name>

View File

@@ -7,6 +7,5 @@
End Class
Public Class DataResult
Public Title As String
Public Datatable As DataTable
Inherits BaseResult
End Class

View File

@@ -283,4 +283,8 @@ Public Class frmDataResultList
_Logger.Error(ex)
End Try
End Sub
Public Function RefreshResults(pResults As IEnumerable(Of BaseResult)) As Boolean Implements IResultForm.RefreshResults
'TODO: Implement
End Function
End Class

View File

@@ -8,6 +8,5 @@
End Class
Public Class DocumentResult
Public Title As String
Public Datatable As DataTable
Inherits BaseResult
End Class

View File

@@ -90,65 +90,8 @@ Public Class frmDocumentResultList
AddHandler GridView2.FocusedRowChanged, AddressOf GridView_FocusedRowChanged
AddHandler GridView3.FocusedRowChanged, AddressOf GridView_FocusedRowChanged
Dim oTotalResults = 0
For Each oList In _ResultLists
oTotalResults += oList.Datatable.Rows.Count
Next
labelResultCount.Caption = String.Format(labelResultCount.Caption, oTotalResults)
' Load Grids
For index = 0 To _ResultLists.Count - 1
Select Case index
Case 0
Dim oResult As DocumentResult = _ResultLists.Item(0)
CreateDocumentGrid(GridView1, oResult.Datatable)
UpdateGridHeader(index, oResult.Datatable.Rows.Count)
Case 1
Dim oResult As DocumentResult = _ResultLists.Item(1)
CreateDocumentGrid(GridView2, oResult.Datatable)
UpdateGridHeader(index, oResult.Datatable.Rows.Count)
Case 2
Dim oResult As DocumentResult = _ResultLists.Item(2)
CreateDocumentGrid(GridView3, oResult.Datatable)
UpdateGridHeader(index, oResult.Datatable.Rows.Count)
Case Else
MessageBox.Show(Constants.MESSAGE_TOO_MANY_SEARCHES, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit For
End Select
Next
' Hide Grids depending on Result count
Select Case _ResultLists.Count
Case 0
SplitContainerControl1.SetPanelCollapsed(True)
SplitContainerControl2.SetPanelCollapsed(True)
SwitchMainContainerHorizontal.Enabled = False
SwitchDetailContainerHorizontal.Enabled = False
MessageBox.Show(Constants.MESSAGE_ERROR_IN_SEARCHES, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Case 1
SplitContainerControl1.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
SplitContainerControl2.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
SplitContainerControl1.SetPanelCollapsed(True)
SplitContainerControl2.SetPanelCollapsed(True)
SwitchMainContainerHorizontal.Enabled = False
SwitchDetailContainerHorizontal.Enabled = False
Case 2
SplitContainerControl1.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Both
SplitContainerControl2.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
SplitContainerControl2.SetPanelCollapsed(True)
SwitchDetailContainerHorizontal.Enabled = False
End Select
UpdateTotalResults(_ResultLists)
UpdateGridData(_ResultLists)
Catch ex As Exception
_Logger.Error(ex)
MessageBox.Show("Error while loading results:" & vbNewLine & vbNewLine & ex.Message, Text)
@@ -157,19 +100,99 @@ Public Class frmDocumentResultList
End Try
End Sub
Private Sub UpdateGridHeader(Index As Integer, Count As Integer)
Select Case Index
Public Function RefreshResults(pResults As IEnumerable(Of BaseResult)) As Boolean Implements IResultForm.RefreshResults
_IsLoading = True
Try
UpdateTotalResults(_ResultLists)
UpdateGridData(_ResultLists)
Return True
Catch ex As Exception
_Logger.Error(ex)
MessageBox.Show("Error while loading results:" & vbNewLine & vbNewLine & ex.Message, Text)
Return False
Finally
_IsLoading = False
End Try
End Function
Private Sub UpdateGridData(pResultList As List(Of DocumentResult))
' Load Grids
For index = 0 To _ResultLists.Count - 1
Select Case index
Case 0
Dim oResult As DocumentResult = _ResultLists.Item(0)
CreateDocumentGrid(GridView1, oResult.Datatable)
UpdateGridHeader(_ResultLists, index, oResult.Datatable.Rows.Count)
Case 1
Dim oResult As DocumentResult = _ResultLists.Item(1)
CreateDocumentGrid(GridView2, oResult.Datatable)
UpdateGridHeader(_ResultLists, index, oResult.Datatable.Rows.Count)
Case 2
Dim oResult As DocumentResult = _ResultLists.Item(2)
CreateDocumentGrid(GridView3, oResult.Datatable)
UpdateGridHeader(_ResultLists, index, oResult.Datatable.Rows.Count)
Case Else
MessageBox.Show(Constants.MESSAGE_TOO_MANY_SEARCHES, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit For
End Select
Next
' Hide Grids depending on Result count
Select Case _ResultLists.Count
Case 0
Dim oResult = _ResultLists.Item(0)
GridBand1.Caption = $"{oResult.Title} ({Count})"
SplitContainerControl1.SetPanelCollapsed(True)
SplitContainerControl2.SetPanelCollapsed(True)
SwitchMainContainerHorizontal.Enabled = False
SwitchDetailContainerHorizontal.Enabled = False
MessageBox.Show(Constants.MESSAGE_ERROR_IN_SEARCHES, Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Case 1
SplitContainerControl1.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
SplitContainerControl2.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
SplitContainerControl1.SetPanelCollapsed(True)
SplitContainerControl2.SetPanelCollapsed(True)
SwitchMainContainerHorizontal.Enabled = False
SwitchDetailContainerHorizontal.Enabled = False
Case 2
SplitContainerControl1.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Both
SplitContainerControl2.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
SplitContainerControl2.SetPanelCollapsed(True)
SwitchDetailContainerHorizontal.Enabled = False
End Select
End Sub
Private Sub UpdateTotalResults(pResultList As List(Of DocumentResult))
Dim oTotalResults = 0
For Each oList In pResultList
oTotalResults += oList.Datatable.Rows.Count
Next
labelResultCount.Caption = String.Format(labelResultCount.Caption, oTotalResults)
End Sub
Private Sub UpdateGridHeader(pResultList As List(Of DocumentResult), pIndex As Integer, pCount As Integer)
Select Case pIndex
Case 0
Dim oResult = pResultList.Item(0)
GridBand1.Caption = $"{oResult.Title} ({pCount})"
Case 1
Dim oResult = _ResultLists.Item(1)
GridBand2.Caption = $"{oResult.Title} ({Count})"
Dim oResult = pResultList.Item(1)
GridBand2.Caption = $"{oResult.Title} ({pCount})"
Case 2
Dim oResult = _ResultLists.Item(2)
GridBand3.Caption = $"{oResult.Title} ({Count})"
Dim oResult = pResultList.Item(2)
GridBand3.Caption = $"{oResult.Title} ({pCount})"
End Select
End Sub
@@ -533,17 +556,17 @@ Public Class frmDocumentResultList
Private Sub GridView1_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView1.ColumnFilterChanged
Dim oRowCount = sender.RowCount
UpdateGridHeader(0, oRowCount)
UpdateGridHeader(_ResultLists, 0, oRowCount)
End Sub
Private Sub GridView2_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView2.ColumnFilterChanged
Dim oRowCount = sender.RowCount
UpdateGridHeader(1, oRowCount)
UpdateGridHeader(_ResultLists, 1, oRowCount)
End Sub
Private Sub GridView3_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView3.ColumnFilterChanged
Dim oRowCount = sender.RowCount
UpdateGridHeader(2, oRowCount)
UpdateGridHeader(_ResultLists, 2, oRowCount)
End Sub
Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
@@ -584,4 +607,6 @@ Public Class frmDocumentResultList
Next
End If
End Sub
End Class

View File

@@ -1,3 +1,4 @@
Public Interface IResultForm
Property ShouldReturnToPreviousForm As Boolean
Function RefreshResults(pResults As IEnumerable(Of BaseResult)) As Boolean
End Interface