2023-10-13 09:44:59 +02:00

190 lines
7.3 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.ZooFlow
Namespace DocumentResultList
Public Class Layout
Inherits BaseClass
Private ReadOnly Config As ConfigManager(Of Config)
Private ReadOnly GridViews As List(Of GridView)
Private ReadOnly Environment As Environment
Public Sub New(pLogConfig As LogConfig, pConfig As ConfigManager(Of DocumentResultList.Config), pGridViews As List(Of GridView), pEnvironment As Environment)
MyBase.New(pLogConfig)
Config = pConfig
GridViews = pGridViews
Environment = pEnvironment
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 Async Function Workspace_SaveAsync(pWorkspaceManager As WorkspaceManager) As Task
Await Task.Run(Sub() Workspace_Save(pWorkspaceManager))
End Function
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 Async Function DockManager_SaveLayoutAsync(pDockManager As DockManager) As Task
' Await Task.Run(Sub() DockManager_SaveLayout(pDockManager))
'End Function
'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)
' Using oStream = New IO.FileStream(oFileName, IO.FileMode.Open)
' pGridView.SaveLayoutToStream(oStream, OptionsLayoutBase.FullLayout)
' End Using
' Catch ex As Exception
' Logger.Error(ex)
' Logger.Info("Error while saving GridLayout: " & ex.Message)
' End Try
'End Sub
'Public Async Function GridView_SaveLayoutAsync(pGridView As GridView) As Task
' Await Task.Run(Sub() GridView_SaveLayout(pGridView))
'End Function
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}_{Environment.User.Language}_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 ScreenEx.IsVisibleOnAnyScreen(Config.Config.WindowLocation) Then
If ScreenEx.LocationIsVisible(Config.Config.WindowLocation) Then
pForm.Location = Config.Config.WindowLocation
End If
If ScreenEx.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
#Region "Resetting Layout"
Public Sub DockManager_ResetLayout(pDockManager As DockManager)
Dim oFile = GetDockmanager_LayoutName()
If IO.File.Exists(oFile) Then
IO.File.Delete(oFile)
End If
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