Layout reset, License crash, general improvements

This commit is contained in:
Jonathan Jenne
2022-07-12 15:35:11 +02:00
parent 69c042d290
commit 0ad694cc74
8 changed files with 475 additions and 369 deletions

View File

@@ -50,16 +50,20 @@ Public Class frmMonitor
Private HtmlResultViewers As List(Of RichEditControl)
Private HtmlResultTabs As List(Of XtraTabPage)
Private TreeListResults As TreeList
Private GridControlResults As GridControl
Private GridViewResults As GridView
Private Const STATE_SUCCESS As String = "SUCCESS"
Private Const STATE_FAILURE As String = "FAILURE"
Private Const STATE_WARNING As String = "WARNING"
Private Const STATE_WAITING As String = "WAITING"
Private Const STATE_HIGHLIGHT As String = "HIGHLIGHT"
Private Const LIST_CONTROL_NULL_TEXT As String = "Kein Wert ausgewählt"
Private MarkedColumns As New List(Of GridColumn)
Private ActiveSearch As Search = Nothing
Private LastSearch As Search = Nothing
Private LastLoadedSearch As Search = Nothing
Private Enum NodeImage
[Default] = 0
@@ -127,14 +131,16 @@ Public Class frmMonitor
SearchLoader = New SearchLoader(LogConfig, ConfigManager.Config, Database)
GridBuilder = New GridBuilder()
Dim oGrids As GridView() = New List(Of GridView) From {GridView1, GridView2, GridView3, GridView4, GridViewResults}.ToArray
InitGrid()
InitTreeList()
Dim oGrids As GridView() = New List(Of GridView) From {GridView1, GridView2, GridView3, GridView4}.ToArray
GridBuilder.SetDefaults(oGrids)
GridBuilder.SetClipboardHandler(oGrids)
GridBuilder.SetReadOnlyOptions(oGrids)
GridBuilder.SetDefaults(TreeListResults)
GridBuilder.SetClipboardHandler(TreeListResults)
GridBuilder.SetReadOnlyOptions(TreeListResults)
SQLResultGrids = New List(Of GridControl) From {GridControl1, GridControl2, GridControl3, GridControl4}
@@ -171,6 +177,7 @@ Public Class frmMonitor
SplitContainerSQL.Collapsed = True
SplitContainerFileHTML.Collapsed = True
lbResultCount.Caption = String.Format(lbResultCount.Tag, 0)
Catch ex As Exception
FormHelper.ShowErrorMessage(ex, "frmStart_Load")
@@ -198,7 +205,9 @@ Public Class frmMonitor
Dim oSearch As Search = cmbSearches.EditValue
Dim oMissingParams = False
ActiveSearch = oSearch
If LastLoadedSearch IsNot Nothing AndAlso oSearch.Id = LastLoadedSearch.Id Then
Workspace.SaveWorkspace(oSearch.Id.ToString)
End If
MarkedColumns.Clear()
HideAllTabs()
@@ -215,16 +224,22 @@ Public Class frmMonitor
'Dim oSQL As String = $"EXEC [{ConfigManager.Config.DBPrefix}].[dbo].[PRDD_MONITORING_GET_TREEVIEW_RESULT] '{cmbSearches.EditValue}','irgendwas','irgendwas','irgendwas',1"
Dim oSQL As String = oSearch.SQLCommand
Dim oControls As New List(Of Control)
For Each oItem As LayoutControlItem In ParameterRoot.Items
oControls.Add(oItem.Control)
For Each oItem As Control In LayoutControl1.Controls
Dim oParam = oSearch.Parameters.
Where(Function(param) param.PatternTitle = oItem.Control.Name).
Where(Function(param) param.PatternTitle = oItem.Name).
FirstOrDefault()
If oParam.Required And Not ControlHelper.HasValue(oItem.Control) Then
If oParam Is Nothing Then
Continue For
End If
oControls.Add(oItem)
If oParam.Required And Not ControlHelper.HasValue(oItem) Then
AdornerUIManager2.Elements.Add(New VisualEffects.ValidationHint With {
.TargetElement = oItem.Control,
.TargetElement = oItem,
.Visible = True
})
oMissingParams = True
@@ -261,8 +276,7 @@ Public Class frmMonitor
End If
Next
InitTreeList(oMaxLength)
InitTreeListColumns(oMaxLength)
' Show all columns in DisplayColumns List
For Each oColumn In TreeListResults.Columns
@@ -309,6 +323,7 @@ Public Class frmMonitor
GridViewResults.FocusInvalidRow()
Workspace.LoadWorkspace(oSearch.Id.ToString)
LastLoadedSearch = oSearch
Return True
Catch ex As Exception
@@ -337,40 +352,16 @@ Public Class frmMonitor
End Try
End Sub
Private Sub InitTreeList(pMaxLength As Integer)
TreeListResults.KeyFieldName = "GUID"
TreeListResults.ParentFieldName = "PARENT_ID"
Dim oStateEdit As New RepositoryItemImageComboBox With {
.SmallImages = SvgImageCollection1,
.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("User", "USER", NodeImage.User),
New ImageComboBoxItem("Highlight", "HIGHLIGHT", NodeImage.Highlight)
})
Dim oIconEdit As New RepositoryItemImageComboBox With {
.SmallImages = SvgImageCollection1,
.GlyphAlignment = HorzAlignment.Near
}
oStateEdit.Buttons.Clear()
oStateEdit.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)
})
Private Sub InitTreeListColumns(pMaxLength As Integer)
Dim oColumn1 = TreeListResults.Columns.Item("COLUMN1")
Dim oStateColumn = TreeListResults.Columns.Item("STATE")
Dim oIconColumn = TreeListResults.Columns.Item("ICON")
Dim oStateEdit As RepositoryItemImageComboBox = GetStateEdit()
Dim oIconEdit As RepositoryItemImageComboBox = GetIconEdit()
oColumn1.VisibleIndex = 0
oStateColumn.VisibleIndex = 1
oIconColumn.VisibleIndex = 2
@@ -394,7 +385,7 @@ Public Class frmMonitor
End With
With oIconColumn
.ColumnEdit = oStateEdit
.ColumnEdit = oIconEdit
.MaxWidth = 25
.MinWidth = 25
.Width = 25
@@ -402,75 +393,162 @@ Public Class frmMonitor
.OptionsColumn.AllowSize = False
.ImageOptions.Image = SvgImageCollection1.GetImage(NodeImage.SQL)
End With
End Sub
Private Function GetIconEdit() As RepositoryItemImageComboBox
Dim oIconEdit As New RepositoryItemImageComboBox With {
.SmallImages = SvgImageCollection1,
.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)
})
Return oIconEdit
End Function
Private Sub cmbSearches_SelectedValueChanged(sender As Object, e As EventArgs) Handles cmbSearches.SelectedValueChanged
Dim oSearch As Search = CType(cmbSearches.SelectedItem, Search)
DisposeTreeList()
InitTreeList()
If ActiveSearch IsNot Nothing Then
Workspace.SaveWorkspace(ActiveSearch.Id.ToString)
End If
DisposeGrid()
InitGrid()
ParameterRoot.Clear()
AdornerUIManager2.Hide()
AdornerUIManager2.Elements.Clear()
lbResultCount.Caption = String.Format(lbResultCount.Tag, 0)
TreeListResults.DataSource = Nothing
GridControlResults.DataSource = Nothing
LoadSearch()
End Sub
For Each oParam As SearchParameter In oSearch.Parameters
Dim oControl As Control
Private Sub LoadSearch()
Try
If TypeOf cmbSearches.SelectedItem IsNot Search Then
Exit Sub
End If
Select Case oParam.DataType
Case DataTypeEnum.Boolean
Dim oCheckbox = New CheckEdit With {
Dim oSearch As Search = CType(cmbSearches.SelectedItem, Search)
If ActiveSearch IsNot Nothing Then
Workspace.SaveWorkspace(ActiveSearch.Id.ToString)
End If
LastSearch = ActiveSearch
ActiveSearch = oSearch
AdornerUIManager2.Hide()
AdornerUIManager2.Elements.Clear()
Root.Clear(disposeItemAndControls:=True)
LayoutControl1.Clear(True, True)
'LayoutControl1.Items.Clear()
' LayoutControl1.Controls.Clear()
TreeListResults.DataSource = Nothing
GridControlResults.DataSource = Nothing
If oSearch.Parameters.Count = 0 Then
lbParams.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Never
Else
lbParams.Visibility = DevExpress.XtraLayout.Utils.LayoutVisibility.Always
End If
For Each oParam As SearchParameter In oSearch.Parameters
Dim oControl As Control
Select Case oParam.DataType
Case DataTypeEnum.Boolean
Dim oCheckbox = New CheckEdit With {
.Text = oParam.Title
}
oControl = oCheckbox
oControl = oCheckbox
Case DataTypeEnum.Date
oControl = New DateEdit()
Case DataTypeEnum.Date
oControl = New DateEdit()
Case DataTypeEnum.String
Select Case oParam.ItemType
Case ItemTypeEnum.List
Dim oCombobox = New ComboBoxEdit()
Dim oItems = oParam.ItemString.Split(";"c).ToList()
oCombobox.Properties.Items.AddRange(oItems)
oControl = oCombobox
Case DataTypeEnum.String
Select Case oParam.ItemType
Case ItemTypeEnum.List
Dim oCombobox = New ComboBoxEdit() With {
.Name = oParam.PatternTitle,
.Tag = oParam.PatternTitle
}
Dim oClearButton = GetClearButtonForControl(oCombobox)
Dim oItems = oParam.ItemString.Split(";"c).ToList()
oCombobox.Properties.Items.AddRange(oItems)
oCombobox.Properties.NullText = LIST_CONTROL_NULL_TEXT
oCombobox.Properties.Buttons.Add(oClearButton)
oControl = oCombobox
Case ItemTypeEnum.SQL
Dim oGridCombobox = New LookUpEdit()
Dim oSQL = oParam.ItemString
Dim oTable = Database.GetDatatable(oSQL)
oGridCombobox.Properties.DataSource = oTable
oGridCombobox.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName
oGridCombobox.Properties.ValueMember = oTable.Columns.Item(0).ColumnName
oControl = oGridCombobox
Case ItemTypeEnum.SQL
Dim oGridCombobox = New LookUpEdit() With {
.Name = oParam.PatternTitle,
.Tag = oParam.PatternTitle
}
Dim oClearButton = GetClearButtonForControl(oGridCombobox)
Dim oSQL = oParam.ItemString
Dim oTable = Database.GetDatatable(oSQL)
oGridCombobox.Properties.DataSource = oTable
oGridCombobox.Properties.DisplayMember = oTable.Columns.Item(0).ColumnName
oGridCombobox.Properties.ValueMember = oTable.Columns.Item(0).ColumnName
oGridCombobox.Properties.NullText = LIST_CONTROL_NULL_TEXT
oGridCombobox.Properties.Buttons.Add(oClearButton)
oControl = oGridCombobox
Case Else
oControl = New TextEdit()
End Select
Case Else
oControl = New TextEdit()
End Select
Case Else
oControl = New TextEdit()
Case Else
oControl = New TextEdit()
End Select
End Select
oControl.Name = oParam.PatternTitle
oControl.Name = oParam.PatternTitle
oControl.Tag = oParam.PatternTitle
Dim oItem As LayoutControlItem = ParameterRoot.AddItem()
oItem.Text = oParam.Title
oItem.Control = oControl
oItem.TextLocation = Locations.Top
oItem.TextToControlDistance = 3
oItem.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 10, 0)
Dim oItem As LayoutControlItem = LayoutControl1.AddItem()
oItem.Text = oParam.Title
oItem.Control = oControl
oItem.TextLocation = Locations.Top
oItem.TextToControlDistance = 3
oItem.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 10, 0)
Next
Next
Catch ex As Exception
End Try
End Sub
Private Function GetClearButtonForControl(pControl As Control) As EditorButton
Dim oClearButton As New EditorButton() With {
.Kind = ButtonPredefines.Clear,
.Tag = pControl.Name
}
AddHandler oClearButton.Click, AddressOf ClearButton_Click
Return oClearButton
End Function
Private Sub ClearButton_Click(sender As Object, e As EventArgs)
Dim oButton As EditorButton = sender
Dim oControlName As String = oButton.Tag.ToString
Dim oControl = LayoutControl1.Controls.Find(oControlName, True).SingleOrDefault()
Select Case oControl.GetType
Case GetType(LookUpEdit)
DirectCast(oControl, LookUpEdit).EditValue = Nothing
Case GetType(ComboBoxEdit)
DirectCast(oControl, ComboBoxEdit).EditValue = Nothing
End Select
End Sub
Private Function GetParameterItems(pParam As SearchParameter) As Object
@@ -485,7 +563,7 @@ Public Class frmMonitor
End Select
End Function
Private Sub TreeListResults_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs) Handles TreeListResults.FocusedNodeChanged
Private Sub TreeListResults_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs)
If e.Node Is Nothing Then
Exit Sub
End If
@@ -675,7 +753,7 @@ Public Class frmMonitor
End If
End Function
Private Sub TreeListResults_CustomDrawNodeCell(sender As Object, e As DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs) Handles TreeListResults.CustomDrawNodeCell
Private Sub TreeListResults_CustomDrawNodeCell(sender As Object, e As DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs)
Dim oColumn = TreeListResults.Columns.Item("STATE")
Dim oState = NotNull(e.Node.GetValue(oColumn), Nothing)
@@ -701,7 +779,7 @@ Public Class frmMonitor
e.Handled = False
End Sub
Private Sub TreeListResults_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs) Handles TreeListResults.GetStateImage
Private Sub TreeListResults_GetStateImage(sender As Object, e As DevExpress.XtraTreeList.GetStateImageEventArgs)
'Dim oValues As Dictionary(Of String, String) = GetValuesFromNode(e.Node, DataColumns)
'Dim oSQLCommands = oValues.
' Where(Function(v) v.Key.StartsWith("SELECT")).
@@ -782,7 +860,7 @@ Public Class frmMonitor
End Sub
Private Sub TreeListResults_MouseClick(sender As Object, e As MouseEventArgs) Handles TreeListResults.MouseClick
Private Sub TreeListResults_MouseClick(sender As Object, e As MouseEventArgs)
Dim oInfo As TreeListHitInfo = TreeListResults.CalcHitInfo(New Point(e.X, e.Y))
If oInfo.InRowCell Then
@@ -830,7 +908,7 @@ Public Class frmMonitor
GridControlResults.DataSource = Nothing
End Sub
Private Sub GridViewResults_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles GridViewResults.FocusedRowChanged
Private Sub GridViewResults_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs)
If GridViewResults.FocusedRowHandle < 0 Then
Exit Sub
End If
@@ -916,6 +994,66 @@ Public Class frmMonitor
End If
End Sub
Private Sub btnResetLayout_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnResetLayout.ItemClick
If ActiveSearch IsNot Nothing Then
Workspace.ResetWorkspace(ActiveSearch.Id.ToString)
LastLoadedSearch = Nothing
ActiveSearch = Nothing
DisposeTreeList()
InitTreeList()
DisposeGrid()
InitGrid()
LoadSearch()
lbResultCount.Caption = String.Format(lbResultCount.Tag, 0)
End If
End Sub
Private Sub DisposeGrid()
GridViewResults.Dispose()
GridViewResults = Nothing
GridControlResults.Dispose()
GridControlResults = Nothing
End Sub
Private Sub InitGrid()
GridControlResults = New GridControl() With {
.Name = "GridViewResults",
.Visible = False
}
SplitContainerSQL.Panel1.Controls.Add(GridControlResults)
GridControlResults.ForceInitialize()
GridViewResults = DirectCast(GridControlResults.DefaultView, GridView)
GridBuilder.SetDefaults(GridViewResults)
GridBuilder.SetClipboardHandler(GridViewResults)
GridBuilder.SetReadOnlyOptions(GridViewResults)
End Sub
Private Sub DisposeTreeList()
TreeListResults.Dispose()
TreeListResults = Nothing
End Sub
Private Sub InitTreeList()
TreeListResults = New TreeList() With {
.Name = "TreeListResults",
.Visible = False
}
SplitContainerSQL.Panel1.Controls.Add(TreeListResults)
TreeListResults.ForceInitialize()
TreeListResults.KeyFieldName = "GUID"
TreeListResults.ParentFieldName = "PARENT_ID"
GridBuilder.SetDefaults(TreeListResults)
GridBuilder.SetClipboardHandler(TreeListResults)
GridBuilder.SetReadOnlyOptions(TreeListResults)
End Sub
'Private DisallowedComponentNames As New List(Of String) From {"LayoutControlItem", "LayoutControlGroup", "LayoutControl"}
'Private Sub WorkspaceManager1_PropertyDeserializing(sender As Object, ea As PropertyCancelEventArgs) Handles WorkspaceManager1.PropertyDeserializing, WorkspaceManager1.PropertySerializing
@@ -924,5 +1062,24 @@ Public Class frmMonitor
' ea.Cancel = True
' End If
'End Sub
Private Function GetStateEdit() As RepositoryItemImageComboBox
Dim oStateEdit As New RepositoryItemImageComboBox With {
.SmallImages = SvgImageCollection1,
.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("User", "USER", NodeImage.User),
New ImageComboBoxItem("Highlight", "HIGHLIGHT", NodeImage.Highlight)
})
Return oStateEdit
End Function
End Class