705 lines
27 KiB
VB.net
705 lines
27 KiB
VB.net
Imports System.Drawing
|
|
Imports System.IO
|
|
Imports System.Windows.Forms
|
|
Imports DevExpress.Utils
|
|
Imports DevExpress.XtraGrid
|
|
Imports DevExpress.XtraGrid.Columns
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DevExpress.XtraPrinting
|
|
Imports DigitalData.Modules.Config
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.ZooFlow
|
|
Imports DigitalData.Modules.Language
|
|
Imports DigitalData.Modules.EDMI.API
|
|
Imports DigitalData.Modules.EDMI.API.Client
|
|
Imports DevExpress.XtraGrid.Views.Base
|
|
Imports DevExpress.XtraGrid.Views.BandedGrid
|
|
Imports System.ComponentModel
|
|
Imports DevExpress.XtraGrid.Views.Grid.ViewInfo
|
|
Imports DevExpress.XtraEditors.ViewInfo
|
|
Imports DevExpress.XtraEditors
|
|
|
|
Public Class frmDocumentResultList
|
|
Implements IResultForm
|
|
|
|
' These are NOT constants, only defaults
|
|
' Can be changed when calling frmDocumentResultList
|
|
Private COLUMN_FILEPATH As String = "FULL_FILENAME"
|
|
Private COLUMN_FILENAME As String = "Filename"
|
|
Private COLUMN_DOCID As String = "DocID"
|
|
Private COLUMN_ICON As String = "ICON"
|
|
|
|
Private _IsLoading As Boolean = True
|
|
Private _IDBClient As Client
|
|
|
|
Private _LogConfig As LogConfig
|
|
Private _Logger As Logger
|
|
Private _Config As ConfigManager(Of DocumentResultConfig)
|
|
Private _Environment As Environment
|
|
Private _Params As DocumentResultParams
|
|
Private _ResultLists As List(Of DocumentResult)
|
|
Private _Helpers As DocumentResultList
|
|
|
|
Private _ActiveGrid As GridControl = Nothing
|
|
Private _ActiveGridBand As GridBand = Nothing
|
|
|
|
Private _DocumentInfo As DocumentInfo = Nothing
|
|
|
|
Private Property OperationMode As IResultForm.Mode Implements IResultForm.OperationMode
|
|
|
|
Public Property ShouldReturnToPreviousForm As Boolean = False Implements IResultForm.ShouldReturnToPreviousForm
|
|
|
|
Public Sub New(LogConfig As LogConfig, Environment As Environment, Params As DocumentResultParams)
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
Dim oConfigPath As String = Path.Combine(Application.UserAppDataPath, "ResultList", Params.WindowGuid)
|
|
|
|
COLUMN_DOCID = Params.ColumnNames.ObjectIdColumn
|
|
COLUMN_FILENAME = Params.ColumnNames.FilenameColumn
|
|
COLUMN_FILEPATH = Params.ColumnNames.FullPathColumn
|
|
|
|
_LogConfig = LogConfig
|
|
_Logger = LogConfig.GetLogger()
|
|
_Config = New ConfigManager(Of DocumentResultConfig)(LogConfig, oConfigPath, oConfigPath)
|
|
_Helpers = New DocumentResultList(LogConfig)
|
|
|
|
_Environment = Environment
|
|
_Params = Params
|
|
_ResultLists = Params.Results
|
|
End Sub
|
|
|
|
Private Sub frmDocumentResultList_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
Try
|
|
If _Environment.Service.IsActive AndAlso _Environment.Service.Address <> String.Empty Then
|
|
OperationMode = IResultForm.Mode.WithAppServer
|
|
Else
|
|
OperationMode = IResultForm.Mode.NoAppServer
|
|
End If
|
|
|
|
If OperationMode = IResultForm.Mode.WithAppServer Then
|
|
InitAppServer()
|
|
End If
|
|
|
|
' Initialize Viewer with GDPicture.NET License
|
|
If _Environment.Settings.GdPictureKey = String.Empty Then
|
|
Throw New ApplicationException("GDPicture Licensekey is missing!")
|
|
End If
|
|
DocumentViewer1.Init(_LogConfig, _Environment.Settings.GdPictureKey)
|
|
|
|
' Load config
|
|
SplitContainerControl1.SplitterPosition = _Config.Config.SplitContainer1Distance
|
|
SwitchMainContainerHorizontal.Checked = _Config.Config.SplitContainer1Horizontal
|
|
SplitContainerControl2.SplitterPosition = _Config.Config.SplitContainer2Distance
|
|
SwitchDetailContainerHorizontal.Checked = _Config.Config.SplitContainer2Horizontal
|
|
|
|
If OperationMode <> IResultForm.Mode.NoAppServer Then
|
|
' Location and size will be managed by the ZooFlow Search Window
|
|
If Utils.IsVisibleOnAnyScreen(_Config.Config.WindowLocation) Then
|
|
If Utils.LocationIsVisible(_Config.Config.WindowLocation) Then
|
|
Location = _Config.Config.WindowLocation
|
|
End If
|
|
If Utils.SizeIsVisible(_Config.Config.WindowSize) Then
|
|
Size = _Config.Config.WindowSize
|
|
End If
|
|
End If
|
|
|
|
SwitchMainContainerHorizontal.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
SwitchDetailContainerHorizontal.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End If
|
|
|
|
AddHandler GridView1.FocusedRowChanged, AddressOf GridView_FocusedRowChanged
|
|
AddHandler GridView2.FocusedRowChanged, AddressOf GridView_FocusedRowChanged
|
|
AddHandler GridView3.FocusedRowChanged, AddressOf GridView_FocusedRowChanged
|
|
|
|
UpdateTotalResults()
|
|
UpdateGridData()
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
MessageBox.Show("Error while loading results:" & vbNewLine & vbNewLine & ex.Message, Text)
|
|
Finally
|
|
_IsLoading = False
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub GridView_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs)
|
|
_Helpers.SetRowHandle(e)
|
|
|
|
Try
|
|
Reset_Errors()
|
|
Cursor = Cursors.WaitCursor
|
|
|
|
If e.FocusedRowHandle >= 0 Then
|
|
Dim oRow = sender.GetDataRow(e.FocusedRowHandle)
|
|
DocumentViewer1.CloseDocument()
|
|
|
|
If OperationMode = IResultForm.Mode.NoAppServer Then
|
|
LoadFile_Legacy(oRow)
|
|
ElseIf OperationMode = IResultForm.Mode.WithAppServer Then
|
|
LoadFile_IDB(oRow)
|
|
End If
|
|
|
|
If IsNothing(_DocumentInfo) Or DocumentViewer1.FileLoaded = False Then
|
|
Show_Warning("File could not be loaded!")
|
|
End If
|
|
|
|
If Not IsNothing(_DocumentInfo) Then
|
|
DocumentViewer1.LoadFile(_DocumentInfo.FullPath)
|
|
|
|
If _DocumentInfo.AccessRight = Rights.AccessRight.VIEW_ONLY Then
|
|
DocumentViewer1.SetViewOnly(True)
|
|
RibbonPageGroup_Export.Visible = False
|
|
Else
|
|
DocumentViewer1.SetViewOnly(False)
|
|
RibbonPageGroup_Export.Visible = True
|
|
End If
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
Show_CriticalError(ex.Message)
|
|
Finally
|
|
Cursor = Cursors.Default
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function InitAppServer() As Boolean
|
|
Dim oSplit As List(Of String) = _Environment.Service.Address.Split(":").ToList()
|
|
Dim oAddress As String = oSplit.Item(0)
|
|
Dim oPort As Integer = oSplit.Item(1)
|
|
|
|
_IDBClient = New Client(_LogConfig, oAddress, oPort)
|
|
|
|
If Not _IDBClient.Connect() Then
|
|
_Logger.Warn("Client could not connect to Service at [{0}]", _Environment.Service.Address)
|
|
Return False
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub LoadFile_Legacy(GridRow As DataRow)
|
|
Try
|
|
Dim oFullPath = GridRow.Item(COLUMN_FILEPATH)
|
|
|
|
_DocumentInfo = New DocumentInfo() With {
|
|
.AccessRight = Rights.AccessRight.FULL,
|
|
.FullPath = oFullPath
|
|
}
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
MsgBox("Error while loading file", MsgBoxStyle.Critical, Text)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub LoadFile_IDB(GridRow As DataRow)
|
|
Try
|
|
Dim oObjectId = GridRow.Item(COLUMN_DOCID)
|
|
_Logger.Debug($"Gettin' Infor for oObjectId: {oObjectId}")
|
|
|
|
' This needs to be Sync bc otherwise the PopupMenuShowing event will fire before this method loaded the Document Info
|
|
_DocumentInfo = _IDBClient.GetDocumentInfo(_Environment.User.UserId, oObjectId)
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Function RefreshResults(pResults As IEnumerable(Of BaseResult)) As Boolean Implements IResultForm.RefreshResults
|
|
_IsLoading = True
|
|
Try
|
|
UpdateTotalResults()
|
|
UpdateGridData()
|
|
|
|
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 LoadGridData(Result As DocumentResult)
|
|
If Result.Datatable.Columns.Contains(COLUMN_DOCID) = False Then
|
|
Throw New ApplicationException($"Datatable is missing DocId Column [{COLUMN_DOCID}] for search {Result.Title}!")
|
|
End If
|
|
|
|
If OperationMode = IResultForm.Mode.NoAppServer And Result.Datatable.Columns.Contains(COLUMN_FILEPATH) = False Then
|
|
Throw New ApplicationException($"Datatable is missing Filepath Column [{COLUMN_FILEPATH}] for search {Result.Title}!")
|
|
End If
|
|
|
|
GridControl1.DataSource = Result.Datatable
|
|
GridControl1.ForceInitialize()
|
|
End Sub
|
|
|
|
Private Sub UpdateGridData()
|
|
' Load Grids
|
|
For oIndex = 0 To _ResultLists.Count - 1
|
|
Select Case oIndex
|
|
Case 0
|
|
Dim oResult As DocumentResult = _ResultLists.Item(0)
|
|
|
|
LoadGridData(oResult)
|
|
CreateDocumentGrid(GridView1, oResult)
|
|
RestoreLayout(GridView1)
|
|
UpdateGridHeader(_ResultLists, oIndex, oResult.Datatable.Rows.Count)
|
|
|
|
Case 1
|
|
Dim oResult As DocumentResult = _ResultLists.Item(1)
|
|
|
|
LoadGridData(oResult)
|
|
CreateDocumentGrid(GridView2, oResult)
|
|
RestoreLayout(GridView2)
|
|
UpdateGridHeader(_ResultLists, oIndex, oResult.Datatable.Rows.Count)
|
|
|
|
Case 2
|
|
Dim oResult As DocumentResult = _ResultLists.Item(2)
|
|
|
|
LoadGridData(oResult)
|
|
CreateDocumentGrid(GridView3, oResult)
|
|
RestoreLayout(GridView3)
|
|
UpdateGridHeader(_ResultLists, oIndex, 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
|
|
End Sub
|
|
|
|
Private Sub UpdateTotalResults()
|
|
Dim oTotalResults = 0
|
|
|
|
For Each oList In _ResultLists
|
|
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 = pResultList.Item(1)
|
|
GridBand2.Caption = $"{oResult.Title} ({pCount})"
|
|
|
|
Case 2
|
|
Dim oResult = pResultList.Item(2)
|
|
GridBand3.Caption = $"{oResult.Title} ({pCount})"
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub CreateDocumentGrid(GridView As BandedGridView, Result As DocumentResult)
|
|
Try
|
|
If IsNothing(GridView.Columns("ICON")) Then
|
|
Dim oIconColumn = GridView.Columns.AddVisible("ICON", "ICON")
|
|
With oIconColumn
|
|
.OptionsColumn.AllowSort = False
|
|
.OptionsColumn.AllowSize = False
|
|
.OptionsColumn.ShowCaption = False
|
|
.OptionsColumn.FixedWidth = True
|
|
.Width = 20
|
|
.MaxWidth = 20
|
|
.MinWidth = 20
|
|
.VisibleIndex = 0
|
|
End With
|
|
|
|
GridView.Bands.First().Columns.Add(oIconColumn)
|
|
End If
|
|
|
|
Dim oCreated, oChanged As String
|
|
If _Environment?.User?.Language <> "de-DE" Then
|
|
oChanged = "Changed"
|
|
oCreated = "Created"
|
|
Else
|
|
oChanged = "Geändert"
|
|
oCreated = "Erstellt"
|
|
End If
|
|
|
|
Try
|
|
Dim oDocIdColumn As GridColumn = GridView.Columns(COLUMN_DOCID)
|
|
If Not IsNothing(oDocIdColumn) Then
|
|
oDocIdColumn.Visible = False
|
|
End If
|
|
|
|
Dim oFilePathColumn As GridColumn = GridView.Columns(COLUMN_FILEPATH)
|
|
If Not IsNothing(oFilePathColumn) Then
|
|
oFilePathColumn.Visible = False
|
|
|
|
' Hide Fullpath column completely in AppServer-Mode
|
|
If OperationMode = IResultForm.Mode.WithAppServer Then
|
|
oFilePathColumn.OptionsColumn.ShowInCustomizationForm = False
|
|
End If
|
|
End If
|
|
|
|
Dim oCreatedColumn = GridView.Columns(oCreated)
|
|
If Not IsNothing(oCreatedColumn) Then
|
|
oCreatedColumn.DisplayFormat.FormatType = FormatType.DateTime
|
|
oCreatedColumn.DisplayFormat.FormatString = _Environment.User.DateFormat & " HH:MM:ss"
|
|
End If
|
|
|
|
Dim oChangedColumn = GridView.Columns(oChanged)
|
|
If Not IsNothing(oChangedColumn) Then
|
|
oChangedColumn.DisplayFormat.FormatType = FormatType.DateTime
|
|
oChangedColumn.DisplayFormat.FormatString = _Environment.User.DateFormat & " HH:MM:ss"
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
|
|
GridView.OptionsView.BestFitMaxRowCount = 30
|
|
GridView.BestFitColumns()
|
|
Catch ex As ApplicationException
|
|
MsgBox($"Error while loading grid data for search {Result.Title}: {vbNewLine}{vbNewLine}{ex.Message}", MsgBoxStyle.Critical, Text)
|
|
_Logger.Error(ex)
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub GridView1_CustomDrawCell(sender As Object, e As RowCellCustomDrawEventArgs) Handles GridView1.CustomDrawCell
|
|
If e.RowHandle < 0 Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oView As GridView = TryCast(sender, GridView)
|
|
Dim oCellInfo As GridCellInfo = TryCast(e.Cell, GridCellInfo)
|
|
Dim oRow As DataRow = oView.GetDataRow(e.RowHandle)
|
|
Dim oValue = oRow.Item(COLUMN_FILENAME)
|
|
|
|
e.DefaultDraw()
|
|
|
|
If e.Column.FieldName = COLUMN_ICON Then
|
|
Dim oIcon = _Helpers.GetIconByExtension(oValue)
|
|
Dim offsetX = 0
|
|
Dim offsetY = 0
|
|
|
|
e.Cache.DrawImage(oIcon, e.Bounds.X + offsetX, e.Bounds.Y + offsetY, 18, 18)
|
|
End If
|
|
End Sub
|
|
|
|
Private Function TryGetItem(DataRow As DataRow, ColumnName As String, Optional DefaultValue As String = "") As String
|
|
Try
|
|
Return DataRow.Item(ColumnName)
|
|
Catch ex As Exception
|
|
Return DefaultValue
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub SwitchMainContainerHorizontal_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles SwitchMainContainerHorizontal.CheckedChanged
|
|
SplitContainerControl1.Horizontal = SwitchMainContainerHorizontal.Checked
|
|
|
|
If _Config IsNot Nothing And _IsLoading = False Then
|
|
_Config.Config.SplitContainer1Horizontal = SwitchMainContainerHorizontal.Checked
|
|
_Config.Save()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SwitchDetailContainerHorizontal2_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles SwitchDetailContainerHorizontal.CheckedChanged
|
|
SplitContainerControl2.Horizontal = SwitchDetailContainerHorizontal.Checked
|
|
|
|
If _Config IsNot Nothing And _IsLoading = False Then
|
|
_Config.Config.SplitContainer2Horizontal = SwitchDetailContainerHorizontal.Checked
|
|
_Config.Save()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub BarButtonItemExportGrid1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemExportGrid1.ItemClick
|
|
Dim oActiveGrid = GetActiveGridControl()
|
|
|
|
If oActiveGrid IsNot Nothing Then
|
|
Dim oGridBand = _ActiveGridBand
|
|
|
|
XtraSaveFileDialog.FileName = Utils.ConvertTextToSlug(oGridBand.Caption) & ".xlsx"
|
|
XtraSaveFileDialog.DefaultExt = ".xlsx"
|
|
|
|
If XtraSaveFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
|
|
Dim oOptions As New XlsxExportOptions() With {
|
|
.ExportMode = XlsxExportMode.SingleFile
|
|
}
|
|
oActiveGrid.ExportToXlsx(XtraSaveFileDialog.FileName, oOptions)
|
|
End If
|
|
|
|
Else
|
|
MessageBox.Show("Bitte wählen Sie eine Tabelle aus, die Sie exportieren möchten", Text, MessageBoxButtons.OK)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SplitContainerControl1_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainerControl1.SplitterPositionChanged
|
|
If _IsLoading = False Then
|
|
_Config.Config.SplitContainer1Distance = SplitContainerControl1.SplitterPosition
|
|
_Config.Save()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SplitContainerControl2_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainerControl2.SplitterPositionChanged
|
|
If _IsLoading = False Then
|
|
_Config.Config.SplitContainer2Distance = SplitContainerControl2.SplitterPosition
|
|
_Config.Save()
|
|
End If
|
|
End Sub
|
|
|
|
Private Function GetActiveRow() As DataRow
|
|
Dim oActiveGrid = GetActiveGridControl()
|
|
Dim oActiveRowhandle = _Helpers.ActiveRowHandle
|
|
|
|
If oActiveGrid IsNot Nothing And oActiveRowhandle <> Constants.NO_ROW_HANDLE Then
|
|
Dim oView = DirectCast(oActiveGrid.DefaultView, GridView)
|
|
Dim oRow = oView.GetDataRow(oActiveRowhandle)
|
|
Return oRow
|
|
Else
|
|
Return Nothing
|
|
End If
|
|
End Function
|
|
Private Function GetDevexpressGrid_LayoutName(pGridView As GridView)
|
|
Dim Filename As String = $"DevExpressGridViewDocResult_{pGridView.Name}UserLayout.xml"
|
|
Return System.IO.Path.Combine(_Config.UserConfigPath.Replace("UserConfig.xml", ""), Filename)
|
|
End Function
|
|
Private Function GetActiveGridControl() As GridControl
|
|
If _ActiveGrid Is Nothing Then
|
|
Return Nothing
|
|
End If
|
|
|
|
Return _ActiveGrid
|
|
End Function
|
|
|
|
Private Sub GridViewSave_Layout(pGridView As GridView)
|
|
Try
|
|
Dim oXml As String = GetDevexpressGrid_LayoutName(pGridView)
|
|
pGridView.SaveLayoutToXml(oXml, OptionsLayoutBase.FullLayout)
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
_Logger.Info("Error while saving GridLayout: " & ex.Message)
|
|
End Try
|
|
End Sub
|
|
Private Sub RestoreLayout(pGridView As GridView)
|
|
Try
|
|
Dim oXml As String = GetDevexpressGrid_LayoutName(pGridView)
|
|
pGridView.RestoreLayoutFromXml(oXml, OptionsLayoutBase.FullLayout)
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
_Logger.Info("Error while restoring layout: " & ex.Message)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub GridControl_Enter(sender As GridControl, e As EventArgs) Handles GridControl1.Enter, GridControl2.Enter, GridControl3.Enter
|
|
_ActiveGrid = sender
|
|
BarButtonItem5.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
BarButtonItemExportGrid1.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
SetActiveGridBand()
|
|
End Sub
|
|
|
|
Private Sub GridView1_FocusedRowChanged(sender As GridView, e As FocusedRowChangedEventArgs) Handles GridView1.FocusedRowChanged, GridView2.FocusedRowChanged, GridView3.FocusedRowChanged
|
|
Dim oGrid As GridControl = sender.GridControl
|
|
_ActiveGrid = oGrid
|
|
End Sub
|
|
|
|
Private Sub SetActiveGridBand()
|
|
If _ActiveGrid.Equals(GridControl1) Then
|
|
_ActiveGridBand = GridBand1
|
|
ElseIf _ActiveGrid.Equals(GridControl2) Then
|
|
_ActiveGridBand = GridBand2
|
|
ElseIf _ActiveGrid.Equals(GridControl3) Then
|
|
_ActiveGridBand = GridBand3
|
|
Else
|
|
_ActiveGridBand = Nothing
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OpenFolderPath()
|
|
Try
|
|
Dim oRow = GetActiveRow()
|
|
|
|
If oRow IsNot Nothing Then
|
|
Dim oFilename = oRow.Item(COLUMN_FILEPATH)
|
|
Dim oDirectory = IO.Path.GetDirectoryName(oFilename)
|
|
Process.Start(oDirectory)
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub OpenFile()
|
|
Try
|
|
Dim oRow = GetActiveRow()
|
|
|
|
If oRow IsNot Nothing Then
|
|
Dim oFilename = oRow.Item(COLUMN_FILEPATH)
|
|
Process.Start(oFilename)
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub CopyFileName()
|
|
Try
|
|
Dim oRow = GetActiveRow()
|
|
|
|
If oRow IsNot Nothing Then
|
|
Dim oFilename = oRow.Item(COLUMN_FILEPATH)
|
|
Clipboard.SetText(oFilename)
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub OpenProperties()
|
|
Try
|
|
Dim oRow = GetActiveRow()
|
|
|
|
If oRow IsNot Nothing Then
|
|
Dim oObjectId = oRow.Item(COLUMN_DOCID)
|
|
Dim oPropertyDialog As New frmObjectPropertyDialog(_LogConfig, _Environment, _IDBClient, oObjectId)
|
|
oPropertyDialog.Show()
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub GridView1_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView1.ColumnFilterChanged
|
|
Dim oRowCount = sender.RowCount
|
|
UpdateGridHeader(_ResultLists, 0, oRowCount)
|
|
End Sub
|
|
|
|
Private Sub GridView2_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView2.ColumnFilterChanged
|
|
Dim oRowCount = sender.RowCount
|
|
UpdateGridHeader(_ResultLists, 1, oRowCount)
|
|
End Sub
|
|
|
|
Private Sub GridView3_ColumnFilterChanged(sender As GridView, e As EventArgs) Handles GridView3.ColumnFilterChanged
|
|
Dim oRowCount = sender.RowCount
|
|
UpdateGridHeader(_ResultLists, 2, oRowCount)
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonBack.ItemClick
|
|
ShouldReturnToPreviousForm = True
|
|
Close()
|
|
End Sub
|
|
|
|
Private Sub frmDocumentResultList_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
|
|
Try
|
|
_Config.Config.WindowLocation = Location
|
|
_Config.Config.WindowSize = Size
|
|
_Config.Save()
|
|
|
|
DocumentViewer1.Done()
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub GridControl_DoubleClick(sender As Object, e As EventArgs) Handles GridControl1.DoubleClick, GridControl2.DoubleClick, GridControl3.DoubleClick
|
|
OpenFile()
|
|
End Sub
|
|
|
|
Private Sub GridView_PopupMenuShowing(sender As Object, e As PopupMenuShowingEventArgs) Handles GridView2.PopupMenuShowing, GridView3.PopupMenuShowing
|
|
Try
|
|
Dim oView As GridView = sender
|
|
|
|
If e.MenuType = GridMenuType.Row Then
|
|
Dim oRowHandle = e.HitInfo.RowHandle
|
|
Dim oRow As DataRow = oView.GetDataRow(oRowHandle)
|
|
Dim oFilepath As String = oRow.Item(COLUMN_FILEPATH)
|
|
Dim oObjectId As Long = oRow.Item(COLUMN_DOCID)
|
|
Dim oMenu As New DocumentPropertyMenu(
|
|
_LogConfig,
|
|
_Environment,
|
|
_IDBClient,
|
|
oFilepath,
|
|
oObjectId)
|
|
|
|
e.Menu.Items.Clear()
|
|
|
|
For Each oItem In oMenu.GetMenuItems(OperationMode, _DocumentInfo.AccessRight)
|
|
e.Menu.Items.Add(oItem)
|
|
Next
|
|
|
|
AddHandler oMenu.FileOpened, AddressOf DocumentPropertyMenu_FileOpened
|
|
AddHandler oMenu.FileClosed, AddressOf DocumentPropertyMenu_FileClosed
|
|
End If
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
MsgBox("Unexpected Error while preparing context menu", MsgBoxStyle.Critical, Text)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Sub DocumentPropertyMenu_FileOpened(sender As Object, FilePath As String)
|
|
|
|
End Sub
|
|
|
|
Public Sub DocumentPropertyMenu_FileClosed(sender As Object, FilePath As String)
|
|
|
|
End Sub
|
|
|
|
|
|
Public Sub Show_CriticalError(Message As String)
|
|
labelCriticalError.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
labelCriticalError.Caption = Message
|
|
End Sub
|
|
|
|
Public Sub Show_Warning(Message As String)
|
|
labelWarning.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
labelWarning.Caption = Message
|
|
End Sub
|
|
|
|
Public Sub Reset_Errors()
|
|
labelCriticalError.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
labelWarning.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End Sub
|
|
|
|
Private Sub BarButtonItem5_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem5.ItemClick
|
|
If Not IsNothing(_ActiveGrid) Then
|
|
Try
|
|
Dim oFile = GetDevexpressGrid_LayoutName(_ActiveGrid.MainView)
|
|
If File.Exists(oFile) Then
|
|
File.Delete(oFile)
|
|
End If
|
|
UpdateGridData()
|
|
Catch ex As Exception
|
|
_Logger.Error(ex)
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub frmDocumentResultList_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing
|
|
GridViewSave_Layout(_ActiveGrid.MainView)
|
|
End Sub
|
|
End Class |