Imports DevExpress.Utils
Imports DevExpress.XtraBars.Docking
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging

Namespace DocumentResultList
    Public Class Layout
        Inherits BaseClass

        Private Config As ConfigManager(Of Config)

        Public Sub New(pLogConfig As LogConfig, pConfig As ConfigManager(Of DocumentResultList.Config))
            MyBase.New(pLogConfig)
            Config = pConfig
        End Sub

        Public Sub DockManager_SaveLayout(pDockManager As DockManager)
            Try
                Dim oXml As String = GetDockmanager_LayoutName()
                pDockManager.SaveLayoutToXml(oXml)
            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 oXml As String = GetDockmanager_LayoutName()
                pDockManager.RestoreLayoutFromXml(oXml)
            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 oXml As String = GetGrid_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

        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
    End Class

End Namespace