2022-03-29 16:35:24 +02:00

165 lines
6.2 KiB
VB.net

Imports System.Windows.Forms
Imports DevExpress.Utils
Imports DevExpress.XtraBars.Docking
Imports DevExpress.XtraGrid.Views.BandedGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Namespace DocumentResultList
Public Class Layout
Inherits BaseClass
Private ReadOnly Config As ConfigManager(Of Config)
Private ReadOnly GridViews As List(Of GridView)
Public Sub New(pLogConfig As LogConfig, pConfig As ConfigManager(Of DocumentResultList.Config), pGridViews As List(Of GridView))
MyBase.New(pLogConfig)
Config = pConfig
GridViews = pGridViews
End Sub
#Region "Saving and Restoring layout"
Public Sub Workspace_Save(pWorkspaceManager As WorkspaceManager)
Try
Dim oFileName = GetWorkspace_LayoutName()
pWorkspaceManager.SaveWorkspaces(oFileName)
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Error while restoring Workspaces: " & ex.Message)
End Try
End Sub
Public Sub Workspace_Restore(pWorkspaceManager As WorkspaceManager)
Try
Dim oFileName = GetWorkspace_LayoutName()
If IO.File.Exists(oFileName) Then
pWorkspaceManager.LoadWorkspaces(oFileName)
End If
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Error while restoring Workspaces: " & ex.Message)
End Try
End Sub
Public Sub DockManager_SaveLayout(pDockManager As DockManager)
Try
Dim oFileName As String = GetDockmanager_LayoutName()
pDockManager.SaveLayoutToXml(oFileName)
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Error while saving GridLayout: " & ex.Message)
End Try
End Sub
Public Sub DockManager_RestoreLayout(pDockManager As DockManager)
Try
Dim oFilename As String = GetDockmanager_LayoutName()
If IO.File.Exists(oFilename) Then
pDockManager.RestoreLayoutFromXml(oFilename)
End If
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Error while restoring GridLayout: " & ex.Message)
End Try
End Sub
Public Sub GridView_RestoreLayout(pGridView As GridView)
Try
Dim oLayoutFile As String = GetGrid_LayoutName(pGridView)
If IO.File.Exists(oLayoutFile) Then
pGridView.RestoreLayoutFromXml(oLayoutFile, OptionsLayoutBase.FullLayout)
End If
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Error while restoring layout: " & ex.Message)
End Try
End Sub
Public Sub GridView_SaveLayout(pGridView As GridView)
Try
Dim oFileName As String = GetGrid_LayoutName(pGridView)
pGridView.SaveLayoutToXml(oFileName, OptionsLayoutBase.FullLayout)
Catch ex As Exception
Logger.Error(ex)
Logger.Info("Error while saving GridLayout: " & ex.Message)
End Try
End Sub
Public Function GetDockmanager_LayoutName() As String
Dim Filename As String = $"DockManagerDocResult_UserLayout.xml"
Dim oDirectory As String = IO.Path.GetDirectoryName(Config.UserConfigPath)
Return IO.Path.Combine(oDirectory, Filename)
End Function
Public Function GetGrid_LayoutName(pGridView As GridView) As String
Dim Filename As String = $"DevExpressGridViewDocResult_{pGridView.Name}UserLayout.xml"
Dim oDirectory As String = IO.Path.GetDirectoryName(Config.UserConfigPath)
Return IO.Path.Combine(oDirectory, Filename)
End Function
Public Function GetWorkspace_LayoutName() As String
Dim Filename As String = $"Workspace_UserLayout.xml"
Dim oDirectory As String = IO.Path.GetDirectoryName(Config.UserConfigPath)
Return IO.Path.Combine(oDirectory, Filename)
End Function
Public Sub LoadWindowLocationAndSize(ByRef pForm As Form)
If Utils.IsVisibleOnAnyScreen(Config.Config.WindowLocation) Then
If Utils.LocationIsVisible(Config.Config.WindowLocation) Then
pForm.Location = Config.Config.WindowLocation
End If
If Utils.SizeIsVisible(Config.Config.WindowSize) Then
pForm.Size = Config.Config.WindowSize
End If
End If
End Sub
Public Sub SaveWindowLocationAndSize(ByRef pForm As Form)
Config.Config.WindowLocation = pForm.Location
Config.Config.WindowSize = pForm.Size
Config.Save()
End Sub
#End Region
Public Sub SetGroupPanelVisible(pVisible As Boolean)
For Each oView In GridViews
oView.OptionsView.ShowGroupPanel = pVisible
Next
End Sub
Public Function GetGroupPanelVisible() As Boolean
Dim oView = GridViews.First()
Return oView.OptionsView.ShowGroupPanel
End Function
Public Sub SetFilterRowVisible(pVisible As Boolean)
For Each oView In GridViews
oView.OptionsView.ShowAutoFilterRow = pVisible
Next
End Sub
Public Function GetFilterRowVisible() As Boolean
Dim oView = GridViews.First()
Return oView.OptionsView.ShowAutoFilterRow
End Function
Public Sub SetBandTitleVisible(pVisible As Boolean)
For Each oView In GridViews
DirectCast(oView, BandedGridView).OptionsView.ShowBands = pVisible
Next
End Sub
Public Function GetBandTitleVisible() As Boolean
Dim oView = GridViews.First()
Return DirectCast(oView, BandedGridView).OptionsView.ShowBands
End Function
End Class
End Namespace