266 lines
9.6 KiB
VB.net
266 lines
9.6 KiB
VB.net
Imports DevExpress.Utils
|
|
Imports DevExpress.XtraEditors.Controls
|
|
Imports DevExpress.XtraEditors.Repository
|
|
Imports DevExpress.XtraGrid.Columns
|
|
Imports DevExpress.XtraGrid.Views.Grid
|
|
Imports DigitalData.Modules.Logging
|
|
Imports DigitalData.Modules.Language.Utils
|
|
Imports DigitalData.GUIs.ZooFlow.Administration.ClassConstants
|
|
Imports DevExpress.XtraGrid
|
|
|
|
Public Class frmAdmin_Start
|
|
Private CurrentModule As String
|
|
Private CurrentPage As String
|
|
Private CurrentItem As ClassDetailForm.DetailData
|
|
|
|
Private DetailForm As ClassDetailForm
|
|
|
|
Public Sub New()
|
|
' Dieser Aufruf ist für den Designer erforderlich.
|
|
InitializeComponent()
|
|
|
|
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
|
|
InitializeBaseForm(My.LogConfig)
|
|
End Sub
|
|
|
|
Private Sub frmAdministration_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
|
DetailForm = New ClassDetailForm(My.LogConfig)
|
|
AddHandler DetailForm.DetailFormClosed, AddressOf DetailForm_Closed
|
|
|
|
DetailForm.LoadData()
|
|
TreeListMenu.ExpandAll()
|
|
End Sub
|
|
|
|
Private Sub DetailForm_Closed(sender As Object, e As IAdminForm)
|
|
If e.HasChanges And CurrentPage IsNot Nothing Then
|
|
DetailForm.LoadData()
|
|
|
|
Dim oKey = $"{CurrentPage}-OVERVIEW"
|
|
|
|
If DetailForm.DetailDataList.ContainsKey(oKey) Then
|
|
Load_GridData(DetailForm.DetailDataList.Item(oKey))
|
|
Else
|
|
MsgBox($"Could not load data for Page [{oKey}] because it does not exist!", MsgBoxStyle.Critical, Text)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Private Function Handle_LoadPage(Page As String) As Boolean
|
|
If DetailForm.DetailSettingsList.ContainsKey(Page) Then
|
|
Dim oNode = DetailForm.DetailSettingsList.Item(Page)
|
|
CurrentModule = oNode.Module
|
|
labelTitle.Text = oNode.GridTitle
|
|
btnAddRecord.Caption = oNode.NewRecordTitle
|
|
If btnAddRecord.Caption = "" Then
|
|
btnAddRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
Else
|
|
btnAddRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
End If
|
|
Else
|
|
MsgBox($"Tag [{Page}] not found! Exiting." & vbNewLine &
|
|
$"Check the [ENTITY_TITLE] Column in Table [TBZF_ADMIN_SOURCE_SQL]. It must match with the Tag [{Page}] of the corresponding Tree List nodes!", MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
End If
|
|
|
|
' This dictionary can contain the same entity multiple times to save
|
|
' OVERVIEW, INSERT, UPDATE, etc. data records, so we specifically look for the overview key
|
|
Dim oKey = $"{Page}-OVERVIEW"
|
|
|
|
If DetailForm.DetailDataList.ContainsKey(oKey) Then
|
|
|
|
Dim oItem = DetailForm.DetailDataList.Item(oKey)
|
|
Load_GridData(oItem)
|
|
CurrentItem = oItem
|
|
Else
|
|
MsgBox($"Page [{Page}] not found in AdminItems! Exiting." & vbNewLine &
|
|
"Check your definitions in the TreeList NodeEditor and in SourceSQL", MsgBoxStyle.Critical, Text)
|
|
Return False
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Sub TreeListMenu_FocusedNodeChanged(sender As Object, e As DevExpress.XtraTreeList.FocusedNodeChangedEventArgs) Handles TreeListMenu.FocusedNodeChanged
|
|
Try
|
|
If e.Node Is Nothing OrElse e.Node.Tag Is Nothing OrElse e.Node.Tag = String.Empty Then
|
|
RibbonPageGroup1.Enabled = False
|
|
labelTitle.Text = "Start"
|
|
Exit Sub
|
|
End If
|
|
|
|
If Handle_LoadPage(e.Node.Tag.ToString) Then
|
|
RibbonPageGroup1.Enabled = True
|
|
CurrentPage = e.Node.Tag.ToString
|
|
btnAddRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
Select Case CurrentPage
|
|
Case PAGE_IDB_DOCTYPE
|
|
btnAddRecord.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
|
|
|
|
End Select
|
|
End If
|
|
|
|
Catch ex As Exception
|
|
ShowErrorMessage(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub Style_ActiveColumn(ActiveColumn As GridColumn)
|
|
Dim oActiveEditor As New RepositoryItemImageComboBox With {
|
|
.SmallImages = ActiveImages,
|
|
.GlyphAlignment = HorzAlignment.Center
|
|
}
|
|
oActiveEditor.Buttons.Clear()
|
|
oActiveEditor.Items.AddRange(New List(Of ImageComboBoxItem) From {
|
|
New ImageComboBoxItem("Active", True, 0),
|
|
New ImageComboBoxItem("Inactive", False, 1)
|
|
})
|
|
|
|
With ActiveColumn
|
|
.Caption = " "
|
|
.Name = "columnActive"
|
|
.Visible = True
|
|
.VisibleIndex = 0
|
|
.ColumnEdit = oActiveEditor
|
|
.MaxWidth = 30
|
|
.MinWidth = 30
|
|
.Image = ActiveImages.GetImage(0)
|
|
.OptionsColumn.AllowEdit = False
|
|
End With
|
|
End Sub
|
|
|
|
Private Sub Load_GridData(Source As ClassDetailForm.DetailData)
|
|
If Source Is Nothing OrElse Source.SQLResult Is Nothing Then
|
|
Exit Sub
|
|
End If
|
|
|
|
ViewMain.ShowLoadingPanel()
|
|
Source.SQLResult = My.DatabaseECM.GetDatatable(Source.SQLCommand)
|
|
GridMain.DataSource = Source.SQLResult
|
|
GridMain.ForceInitialize()
|
|
ViewMain.PopulateColumns()
|
|
|
|
If ViewMain.Columns.Item(COLUMN_NAME_ACTIVE) Is Nothing Then
|
|
Dim oActiveColumn = New GridColumn() With {.FieldName = COLUMN_NAME_ACTIVE}
|
|
ViewMain.Columns.Add(oActiveColumn)
|
|
Style_ActiveColumn(oActiveColumn)
|
|
Else
|
|
Style_ActiveColumn(ViewMain.Columns.Item(COLUMN_NAME_ACTIVE))
|
|
End If
|
|
|
|
With ViewMain.Appearance.EvenRow
|
|
.BackColor = Color.Snow
|
|
.Options.UseBackColor = True
|
|
End With
|
|
|
|
With ViewMain.Appearance.FocusedCell
|
|
.BackColor = Color.Gold
|
|
.Options.UseBackColor = True
|
|
End With
|
|
|
|
With ViewMain.OptionsBehavior
|
|
.Editable = False
|
|
.ReadOnly = True
|
|
End With
|
|
|
|
With ViewMain.OptionsView
|
|
.ShowAutoFilterRow = True
|
|
.EnableAppearanceEvenRow = True
|
|
.ShowIndicator = False
|
|
.ShowHorizontalLines = DefaultBoolean.True
|
|
.ShowVerticalLines = DefaultBoolean.True
|
|
End With
|
|
|
|
With ViewMain.OptionsClipboard
|
|
.CopyColumnHeaders = DefaultBoolean.False
|
|
End With
|
|
|
|
With ViewMain.OptionsFind
|
|
.AlwaysVisible = True
|
|
End With
|
|
|
|
AddHandler ViewMain.KeyDown, AddressOf GridView1_KeyDown
|
|
|
|
ViewMain.BestFitColumns()
|
|
ViewMain.HideLoadingPanel()
|
|
End Sub
|
|
|
|
Public Sub GridView1_KeyDown(sender As GridView, e As KeyEventArgs)
|
|
Dim oView As GridView = sender
|
|
If e.Control AndAlso e.KeyCode = Keys.C And e.Modifiers = Keys.Control Then
|
|
Dim oCellValue = oView.GetRowCellValue(oView.FocusedRowHandle, oView.FocusedColumn)
|
|
If oCellValue IsNot Nothing AndAlso oCellValue.ToString() <> String.Empty Then
|
|
Clipboard.SetText(oCellValue.ToString)
|
|
End If
|
|
e.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub GridView1_RowClick(sender As Object, e As RowClickEventArgs) Handles ViewMain.RowClick
|
|
Try
|
|
If e.Clicks = 2 And e.Button = MouseButtons.Left Then
|
|
Dim oPrimaryKey = Get_PrimaryKey(e.RowHandle)
|
|
|
|
If oPrimaryKey IsNot Nothing Then
|
|
DetailForm.Handle_OpenDetail(oPrimaryKey, CurrentPage, False)
|
|
Else
|
|
Throw New ArgumentNullException("PrimaryKey")
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
ShowErrorMessage(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Function Get_PrimaryKey(RowHandle As Integer)
|
|
Try
|
|
Dim oView As GridView = ViewMain
|
|
Dim oRowView As DataRowView = oView.GetRow(RowHandle)
|
|
Dim oItem As ClassDetailForm.DetailData = CurrentItem
|
|
Dim oGuid = oRowView.Row.Item(oItem.PrimaryKey)
|
|
|
|
Return oGuid
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
Return Nothing
|
|
End Try
|
|
End Function
|
|
|
|
Private Sub BarButtonItem9_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem9.ItemClick
|
|
DetailForm.LoadData()
|
|
ShowStatus("Source SQL neu geladen")
|
|
End Sub
|
|
|
|
Private Sub ShowStatus(v As String)
|
|
labelStatus.Caption = v
|
|
labelStatus.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
|
|
End Sub
|
|
|
|
Private Sub ResetStatus()
|
|
labelStatus.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
|
|
End Sub
|
|
|
|
Private Sub btnAddRecord_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnAddRecord.ItemClick
|
|
Try
|
|
DetailForm.Handle_OpenDetail(Nothing, CurrentPage, True)
|
|
Catch ex As Exception
|
|
ShowErrorMessage(ex)
|
|
End Try
|
|
End Sub
|
|
|
|
Private Sub btnEditRecord_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnEditRecord.ItemClick
|
|
Try
|
|
If ViewMain.FocusedRowHandle = GridControl.InvalidRowHandle Then
|
|
Exit Sub
|
|
End If
|
|
|
|
Dim oPrimaryKey = Get_PrimaryKey(ViewMain.FocusedRowHandle)
|
|
|
|
If oPrimaryKey IsNot Nothing Or CurrentPage = PAGE_GI_RELATIONS Then
|
|
DetailForm.Handle_OpenDetail(oPrimaryKey, CurrentPage, False)
|
|
End If
|
|
Catch ex As Exception
|
|
Logger.Error(ex)
|
|
End Try
|
|
End Sub
|
|
End Class |