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