Monitor/GUIs.Monitor/Helper/GridLoader.vb
2023-04-05 11:03:17 +02:00

240 lines
8.2 KiB
VB.net

Imports DevExpress.Utils
Imports DevExpress.Utils.Extensions
Imports DevExpress.XtraCharts
Imports DevExpress.XtraEditors
Imports DevExpress.XtraEditors.Controls
Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraTreeList
Imports DigitalData.GUIs.Common
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Public Class GridLoader
Inherits BaseClass
Public Const STATE_SUCCESS As String = "SUCCESS"
Public Const STATE_FAILURE As String = "FAILURE"
Public Const STATE_WARNING As String = "WARNING"
Public Const STATE_WAITING As String = "WAITING"
Public Const STATE_HIGHLIGHT As String = "HIGHLIGHT"
Public ReadOnly Property SvgImageCollection As SvgImageCollection
Public ReadOnly Property GridBuilder As GridBuilder
Private ReadOnly StateIcons As New Dictionary(Of String, NodeImage) From {
{STATE_SUCCESS, NodeImage.Success},
{STATE_FAILURE, NodeImage.Failure}
}
Private Enum NodeImage
[Default] = 0
SQL = 1
File = 2
Mail = 3
Success = 4
Failure = 5
Warning = 6
Waiting = 7
User = 8
Highlight = 9
DateTime = 10
Key = 11
Money = 12
Text = 13
End Enum
Public Sub New(pLogConfig As LogConfig, pSvgImageCollection As SvgImageCollection)
MyBase.New(pLogConfig)
Me.SvgImageCollection = pSvgImageCollection
Me.GridBuilder = New GridBuilder()
End Sub
Public Function InitTreeList() As TreeList
Dim oTreeList = New TreeList() With {
.Name = "TreeListResults",
.Visible = False
}
oTreeList.ForceInitialize()
oTreeList.KeyFieldName = "GUID"
oTreeList.ParentFieldName = "PARENT_ID"
GridBuilder.SetDefaults(oTreeList)
GridBuilder.SetClipboardHandler(oTreeList)
GridBuilder.SetReadOnlyOptions(oTreeList)
Return oTreeList
End Function
Public Function InitGrid() As GridControl
Dim oGrid = New GridControl() With {
.Name = "GridViewResults",
.Visible = False
}
oGrid.ForceInitialize()
Dim oView = DirectCast(oGrid.DefaultView, GridView)
GridBuilder.SetDefaults(oView)
GridBuilder.SetClipboardHandler(oView)
' GridBuilder.SetReadOnlyOptions(oView)
' TODO Spalten die nicht HyperLinks sind readonly machen
Return oGrid
End Function
Public Function InitChartViewResultContainer() As SplitContainerControl
' Vorbereiten der SplitContainer-Struktur inkl. der ChartControls
Dim oChartViewResultContainer As SplitContainerControl
Dim oSplitContainerTop As SplitContainerControl
Dim oSplitContainerBottom As SplitContainerControl
oChartViewResultContainer = New SplitContainerControl With {
.Name = "ChartViewResultContainer",
.Visible = False,
.Dock = DockStyle.Fill,
.Horizontal = False,
.IsSplitterFixed = True
}
oSplitContainerTop = New SplitContainerControl With {
.Name = "SplitContainerTop",
.Dock = DockStyle.Fill,
.Horizontal = True,
.IsSplitterFixed = True
}
oSplitContainerBottom = New SplitContainerControl With {
.Name = "SplitContainerBottom",
.Dock = DockStyle.Fill,
.Horizontal = True,
.IsSplitterFixed = True
}
oChartViewResultContainer.Panel1.AddControl(oSplitContainerTop)
oChartViewResultContainer.Panel2.AddControl(oSplitContainerBottom)
Dim oChartControlTopLeft As ChartControl = New ChartControl With {
.Name = "ChartControlTopLeft",
.Dock = DockStyle.Fill
}
Dim oChartControlTopRight As ChartControl = New ChartControl With {
.Name = "ChartControlTopRight",
.Dock = DockStyle.Fill
}
Dim oChartControlBottomLeft As ChartControl = New ChartControl With {
.Name = "ChartControlBottomLeft",
.Dock = DockStyle.Fill
}
Dim oChartControlBottomRight As ChartControl = New ChartControl With {
.Name = "ChartControlBottomRight",
.Dock = DockStyle.Fill
}
oSplitContainerTop.Panel1.AddControl(oChartControlTopLeft)
oSplitContainerTop.Panel2.AddControl(oChartControlTopRight)
oSplitContainerBottom.Panel1.AddControl(oChartControlBottomLeft)
oSplitContainerBottom.Panel2.AddControl(oChartControlBottomRight)
Return oChartViewResultContainer
End Function
Public Sub InitTreeListColumns(pTreeList As TreeList, pMaxLength As Integer)
Dim oColumn1 = pTreeList.Columns.Item("COLUMN1")
Dim oColumn2 = pTreeList.Columns.Item("COLUMN2")
Dim oColumn3 = pTreeList.Columns.Item("COLUMN3")
Dim oAddedWhenColumn = pTreeList.Columns.Item("ADDED_WHEN")
Dim oStateColumn = pTreeList.Columns.Item("STATE")
Dim oIconColumn = pTreeList.Columns.Item("ICON")
Dim oStateEdit As RepositoryItemImageComboBox = GetStateEdit()
Dim oIconEdit As RepositoryItemImageComboBox = GetIconEdit()
oColumn1.VisibleIndex = 0
oStateColumn.VisibleIndex = 1
oIconColumn.VisibleIndex = 2
Dim oColumnLength = pMaxLength * 5
With oColumn1
.Caption = "Titel"
.MinWidth = oColumnLength
.MaxWidth = oColumnLength
.Width = oColumnLength
.OptionsColumn.AllowSize = False
.OptionsColumn.AllowSort = False
End With
With oColumn2
.Caption = "Wert 1"
End With
With oColumn3
.Caption = "Wert 2"
End With
With oAddedWhenColumn
.Caption = "Datum"
End With
With oStateColumn
.ColumnEdit = oStateEdit
.MaxWidth = 25
.MinWidth = 25
.Width = 25
.Caption = " "
.OptionsColumn.AllowSize = False
.OptionsColumn.AllowSort = False
.ImageOptions.Image = Nothing
End With
With oIconColumn
.ColumnEdit = oIconEdit
.MaxWidth = 25
.MinWidth = 25
.Width = 25
.Caption = " "
.OptionsColumn.AllowSize = False
.OptionsColumn.AllowSort = False
.ImageOptions.Image = Nothing
End With
End Sub
Private Function GetIconEdit() As RepositoryItemImageComboBox
Dim oIconEdit As New RepositoryItemImageComboBox With {
.SmallImages = SvgImageCollection,
.GlyphAlignment = HorzAlignment.Near
}
oIconEdit.Buttons.Clear()
oIconEdit.Items.AddRange(New List(Of ImageComboBoxItem) From {
New ImageComboBoxItem("Email", "MAIL", NodeImage.Mail),
New ImageComboBoxItem("SQL", "SQL", NodeImage.SQL),
New ImageComboBoxItem("File", "FILE", NodeImage.File),
New ImageComboBoxItem("User", "USER", NodeImage.User),
New ImageComboBoxItem("DateTime", "DATETIME", NodeImage.DateTime),
New ImageComboBoxItem("KeyValue", "KEYVALUE", NodeImage.Key),
New ImageComboBoxItem("Money", "MONEY", NodeImage.Money),
New ImageComboBoxItem("Text", "TEXT", NodeImage.Text)
})
Return oIconEdit
End Function
Private Function GetStateEdit() As RepositoryItemImageComboBox
Dim oStateEdit As New RepositoryItemImageComboBox With {
.SmallImages = SvgImageCollection,
.GlyphAlignment = HorzAlignment.Near
}
oStateEdit.Buttons.Clear()
oStateEdit.Items.AddRange(New List(Of ImageComboBoxItem) From {
New ImageComboBoxItem("Success", "SUCCESS", NodeImage.Success),
New ImageComboBoxItem("Failure", "FAILURE", NodeImage.Failure),
New ImageComboBoxItem("Warning", "WARNING", NodeImage.Warning),
New ImageComboBoxItem("Waiting", "WAITING", NodeImage.Waiting),
New ImageComboBoxItem("Default", "DEFAULT", NodeImage.Default),
New ImageComboBoxItem("Highlight", "HIGHLIGHT", NodeImage.Highlight)
})
Return oStateEdit
End Function
End Class