diff --git a/EDMI_ClientSuite/ClassUIConfig.vb b/EDMI_ClientSuite/ClassUIConfig.vb
index 5553635c..040f4df8 100644
--- a/EDMI_ClientSuite/ClassUIConfig.vb
+++ b/EDMI_ClientSuite/ClassUIConfig.vb
@@ -1,14 +1,15 @@
-Public Class ClassUIConfig
+Imports System.Xml.Serialization
+
+Public Class ClassUIConfig
Public Property SkinName As String = "Office 2016 Colorful"
- Public Property FrmEdit_Splitter As Integer = 300
-
- Public Property EditFormConfigs As List(Of EditFormConfig) = New List(Of EditFormConfig)
+ 'Public Property EditFormConfigs As New List(Of KeyValuePair(Of String, EditFormConfig))
+ Public Property EditFormConfigs As New List(Of EditFormConfig)
Public Class EditFormConfig
Public Property SysKey As String
- Public Property SplitterDistance As Integer
- Public Property SplitterOrientation As Integer
+ Public Property SplitterDistance As Integer = 700
+ Public Property SplitterHorizontal As Boolean = True
End Class
End Class
diff --git a/EDMI_ClientSuite/ClientSuite.vbproj b/EDMI_ClientSuite/ClientSuite.vbproj
index d5963203..e6ac3033 100644
--- a/EDMI_ClientSuite/ClientSuite.vbproj
+++ b/EDMI_ClientSuite/ClientSuite.vbproj
@@ -162,6 +162,12 @@
Form
+
+ Form
+
+
+ Form
+
frmDashboard.vb
@@ -198,10 +204,10 @@
Form
-
+
frmEdit.vb
-
+
Form
@@ -282,7 +288,7 @@
frmConfigUser.vb
-
+
frmEdit.vb
diff --git a/EDMI_ClientSuite/FormDefaults/BaseForm.vb b/EDMI_ClientSuite/FormDefaults/BaseForm.vb
new file mode 100644
index 00000000..f91606af
--- /dev/null
+++ b/EDMI_ClientSuite/FormDefaults/BaseForm.vb
@@ -0,0 +1,28 @@
+Imports DevExpress.XtraBars.Ribbon
+Imports DigitalData.Modules.Logging
+
+'''
+''' This BaseClass is used to provide common functionality like the Logger or ErrorHandler to all Forms
+''' To use it, create a form and change the `Inherits` statement in FormName.Designer.vb to this form, eg.:
+'''
+''' Partial Class frmExample
+''' Inherits BaseForm
+'''
+''' ...
+''' End Class
+'''
+Public Class BaseForm
+ Inherits Form
+
+ Protected ReadOnly _Logger As Logger
+ Protected ReadOnly _ErrorHandler As ClassErrorHandler
+
+ Public Sub New()
+ Dim oClassName = [GetType]().Name
+
+ ' My.LogConfig is undefined in the designer
+ ' so we need to check with ?
+ _Logger = My.LogConfig?.GetLogger(oClassName)
+ _ErrorHandler = New ClassErrorHandler(_Logger)
+ End Sub
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/FormDefaults/BaseRibbonForm.vb b/EDMI_ClientSuite/FormDefaults/BaseRibbonForm.vb
new file mode 100644
index 00000000..87b84127
--- /dev/null
+++ b/EDMI_ClientSuite/FormDefaults/BaseRibbonForm.vb
@@ -0,0 +1,31 @@
+Imports DevExpress.XtraBars.Ribbon
+Imports DigitalData.Modules.Logging
+
+'''
+''' This BaseClass is used to provide common functionality like the Logger or ErrorHandler to all Forms
+''' To use it, create a form and change the `Inherits` statement in FormName.Designer.vb to this form, eg.:
+'''
+''' Partial Class frmExample
+''' Inherits BaseRibbonForm
+'''
+''' ...
+''' End Class
+'''
+Public Class BaseRibbonForm
+ Inherits RibbonForm
+
+ Protected ReadOnly _Logger As Logger
+ Protected ReadOnly _ErrorHandler As ClassErrorHandler
+
+ Public Sub New()
+ Dim oClassName = [GetType]().Name
+
+ ' My.LogConfig is undefined in the designer
+ ' so we need to check with ?
+ _Logger = My.LogConfig?.GetLogger(oClassName)
+ _ErrorHandler = New ClassErrorHandler(_Logger)
+ End Sub
+End Class
+
+
+
diff --git a/EDMI_ClientSuite/UserManager/frmUserManager.vb b/EDMI_ClientSuite/UserManager/frmUserManager.vb
index b5cbff06..6eac8670 100644
--- a/EDMI_ClientSuite/UserManager/frmUserManager.vb
+++ b/EDMI_ClientSuite/UserManager/frmUserManager.vb
@@ -137,12 +137,12 @@ Public Class frmUserManager
End Function
Private Sub BarButtonUserEdit_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonUserEdit.ItemClick
- Dim oForm As New frmEdit(ClassConstants.DB_USER_ATTRIBUTE_ID, _UserTable)
+ Dim oForm As New frmEdit(ClassConstants.DB_USER_ATTRIBUTE_ID, ClassConstants.DB_USER_ATTRIBUTE_SYSKEY, _UserTable)
oForm.Show()
End Sub
Private Sub BarButtonGroupEdit_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonGroupEdit.ItemClick
- Dim oForm As New frmEdit(ClassConstants.DB_GROUP_ATTRIBUTE_ID, _GroupTable)
+ Dim oForm As New frmEdit(ClassConstants.DB_GROUP_ATTRIBUTE_ID, ClassConstants.DB_GROUP_ATTRIBUTE_SYSKEY, _GroupTable)
oForm.Show()
End Sub
diff --git a/EDMI_ClientSuite/UserManager/frmEdit.Designer.vb b/EDMI_ClientSuite/frmEdit.Designer.vb
similarity index 70%
rename from EDMI_ClientSuite/UserManager/frmEdit.Designer.vb
rename to EDMI_ClientSuite/frmEdit.Designer.vb
index ca8accaf..14479f3b 100644
--- a/EDMI_ClientSuite/UserManager/frmEdit.Designer.vb
+++ b/EDMI_ClientSuite/frmEdit.Designer.vb
@@ -1,6 +1,6 @@
Partial Class frmEdit
- Inherits DevExpress.XtraBars.Ribbon.RibbonForm
+ Inherits BaseRibbonForm
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
@@ -24,7 +24,7 @@ Partial Class frmEdit
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmEdit))
- Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
+ Me.SplitContainer = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridList = New DevExpress.XtraGrid.GridControl()
Me.ViewList = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl()
@@ -33,13 +33,17 @@ Partial Class frmEdit
Me.BarButtonSave = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonNew = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonDelete = New DevExpress.XtraBars.BarButtonItem()
+ Me.labelParentAttributeId = New DevExpress.XtraBars.BarStaticItem()
+ Me.labelSyskey = New DevExpress.XtraBars.BarStaticItem()
+ Me.BarCheckHorizontalLayout = New DevExpress.XtraBars.BarCheckItem()
+ Me.BarButtonResetLayout = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
- Me.labelParentAttributeId = New DevExpress.XtraBars.BarStaticItem()
- CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.SplitContainerControl1.SuspendLayout()
+ CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SplitContainer.SuspendLayout()
CType(Me.GridList, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ViewList, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -47,19 +51,19 @@ Partial Class frmEdit
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
- 'SplitContainerControl1
+ 'SplitContainer
'
- Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
- Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 146)
- Me.SplitContainerControl1.Name = "SplitContainerControl1"
- Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridList)
- Me.SplitContainerControl1.Panel1.Text = "Panel1"
- Me.SplitContainerControl1.Panel2.Controls.Add(Me.LayoutControl1)
- Me.SplitContainerControl1.Panel2.Text = "Panel2"
- Me.SplitContainerControl1.Size = New System.Drawing.Size(1104, 338)
- Me.SplitContainerControl1.SplitterPosition = 332
- Me.SplitContainerControl1.TabIndex = 0
- Me.SplitContainerControl1.Text = "SplitContainerControl1"
+ Me.SplitContainer.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.SplitContainer.Location = New System.Drawing.Point(0, 146)
+ Me.SplitContainer.Name = "SplitContainer"
+ Me.SplitContainer.Panel1.Controls.Add(Me.GridList)
+ Me.SplitContainer.Panel1.Text = "Panel1"
+ Me.SplitContainer.Panel2.Controls.Add(Me.LayoutControl1)
+ Me.SplitContainer.Panel2.Text = "Panel2"
+ Me.SplitContainer.Size = New System.Drawing.Size(1104, 338)
+ Me.SplitContainer.SplitterPosition = 547
+ Me.SplitContainer.TabIndex = 0
+ Me.SplitContainer.Text = "SplitContainerControl1"
'
'GridList
'
@@ -67,7 +71,7 @@ Partial Class frmEdit
Me.GridList.Location = New System.Drawing.Point(0, 0)
Me.GridList.MainView = Me.ViewList
Me.GridList.Name = "GridList"
- Me.GridList.Size = New System.Drawing.Size(332, 338)
+ Me.GridList.Size = New System.Drawing.Size(547, 338)
Me.GridList.TabIndex = 0
Me.GridList.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewList})
'
@@ -83,7 +87,7 @@ Partial Class frmEdit
Me.LayoutControl1.Name = "LayoutControl1"
Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(-870, 211, 650, 400)
Me.LayoutControl1.Root = Me.LayoutGroup
- Me.LayoutControl1.Size = New System.Drawing.Size(760, 338)
+ Me.LayoutControl1.Size = New System.Drawing.Size(545, 338)
Me.LayoutControl1.TabIndex = 0
Me.LayoutControl1.Text = "LayoutControl1"
'
@@ -92,15 +96,15 @@ Partial Class frmEdit
Me.LayoutGroup.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
Me.LayoutGroup.GroupBordersVisible = False
Me.LayoutGroup.Name = "Root"
- Me.LayoutGroup.Size = New System.Drawing.Size(760, 338)
+ Me.LayoutGroup.Size = New System.Drawing.Size(545, 338)
Me.LayoutGroup.TextVisible = False
'
'RibbonControl1
'
Me.RibbonControl1.ExpandCollapseItem.Id = 0
- Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonSave, Me.BarButtonNew, Me.BarButtonDelete, Me.labelParentAttributeId})
+ Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonSave, Me.BarButtonNew, Me.BarButtonDelete, Me.labelParentAttributeId, Me.labelSyskey, Me.BarCheckHorizontalLayout, Me.BarButtonResetLayout})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
- Me.RibbonControl1.MaxItemId = 6
+ Me.RibbonControl1.MaxItemId = 11
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
@@ -131,11 +135,39 @@ Partial Class frmEdit
Me.BarButtonDelete.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonDelete.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonDelete.Name = "BarButtonDelete"
'
+ 'labelParentAttributeId
+ '
+ Me.labelParentAttributeId.Caption = "AttributeId"
+ Me.labelParentAttributeId.Id = 5
+ Me.labelParentAttributeId.Name = "labelParentAttributeId"
+ '
+ 'labelSyskey
+ '
+ Me.labelSyskey.Caption = "Syskey"
+ Me.labelSyskey.Id = 6
+ Me.labelSyskey.Name = "labelSyskey"
+ '
+ 'BarCheckHorizontalLayout
+ '
+ Me.BarCheckHorizontalLayout.Caption = "Horizontales Layout"
+ Me.BarCheckHorizontalLayout.Id = 9
+ Me.BarCheckHorizontalLayout.ImageOptions.Image = CType(resources.GetObject("BarCheckHorizontalLayout.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarCheckHorizontalLayout.ImageOptions.LargeImage = CType(resources.GetObject("BarCheckHorizontalLayout.ImageOptions.LargeImage"), System.Drawing.Image)
+ Me.BarCheckHorizontalLayout.Name = "BarCheckHorizontalLayout"
+ '
+ 'BarButtonResetLayout
+ '
+ Me.BarButtonResetLayout.Caption = "Layout zurücksetzen"
+ Me.BarButtonResetLayout.Id = 10
+ Me.BarButtonResetLayout.ImageOptions.Image = CType(resources.GetObject("BarButtonResetLayout.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarButtonResetLayout.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonResetLayout.ImageOptions.LargeImage"), System.Drawing.Image)
+ Me.BarButtonResetLayout.Name = "BarButtonResetLayout"
+ '
'RibbonPage1
'
- Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
+ Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
Me.RibbonPage1.Name = "RibbonPage1"
- Me.RibbonPage1.Text = "Aktionen"
+ Me.RibbonPage1.Text = "Allgemein"
'
'RibbonPageGroup1
'
@@ -146,9 +178,17 @@ Partial Class frmEdit
Me.RibbonPageGroup1.ShowCaptionButton = False
Me.RibbonPageGroup1.Text = "Aktionen"
'
+ 'RibbonPageGroup2
+ '
+ Me.RibbonPageGroup2.ItemLinks.Add(Me.BarCheckHorizontalLayout)
+ Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonResetLayout)
+ Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
+ Me.RibbonPageGroup2.Text = "Layout"
+ '
'RibbonStatusBar1
'
Me.RibbonStatusBar1.ItemLinks.Add(Me.labelParentAttributeId)
+ Me.RibbonStatusBar1.ItemLinks.Add(Me.labelSyskey)
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 484)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
@@ -159,18 +199,12 @@ Partial Class frmEdit
Me.RibbonPage2.Name = "RibbonPage2"
Me.RibbonPage2.Text = "RibbonPage2"
'
- 'labelParentAttributeId
- '
- Me.labelParentAttributeId.Caption = "BarStaticItem1"
- Me.labelParentAttributeId.Id = 5
- Me.labelParentAttributeId.Name = "labelParentAttributeId"
- '
'frmEdit
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1104, 505)
- Me.Controls.Add(Me.SplitContainerControl1)
+ Me.Controls.Add(Me.SplitContainer)
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.RibbonControl1)
Me.Name = "frmEdit"
@@ -178,8 +212,8 @@ Partial Class frmEdit
Me.ShowIcon = False
Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "Datensätze bearbeiten"
- CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
- Me.SplitContainerControl1.ResumeLayout(False)
+ CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.SplitContainer.ResumeLayout(False)
CType(Me.GridList, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ViewList, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit()
@@ -190,7 +224,7 @@ Partial Class frmEdit
End Sub
- Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
+ Friend WithEvents SplitContainer As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridList As DevExpress.XtraGrid.GridControl
Friend WithEvents ViewList As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl
@@ -204,4 +238,8 @@ Partial Class frmEdit
Friend WithEvents BarButtonNew As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonDelete As DevExpress.XtraBars.BarButtonItem
Friend WithEvents labelParentAttributeId As DevExpress.XtraBars.BarStaticItem
+ Friend WithEvents labelSyskey As DevExpress.XtraBars.BarStaticItem
+ Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+ Friend WithEvents BarCheckHorizontalLayout As DevExpress.XtraBars.BarCheckItem
+ Friend WithEvents BarButtonResetLayout As DevExpress.XtraBars.BarButtonItem
End Class
diff --git a/EDMI_ClientSuite/UserManager/frmEdit.resx b/EDMI_ClientSuite/frmEdit.resx
similarity index 78%
rename from EDMI_ClientSuite/UserManager/frmEdit.resx
rename to EDMI_ClientSuite/frmEdit.resx
index a1f491e0..d58a3168 100644
--- a/EDMI_ClientSuite/UserManager/frmEdit.resx
+++ b/EDMI_ClientSuite/frmEdit.resx
@@ -176,6 +176,46 @@
5cVUmRFSZEhAVG4sI1RmhBQRoojedqV1j5AiAnrL+czDT1Rlt0gR5t5yuzM8QoowZsqNoRFShIlE5Sfg
iz3pEVKEYaTcSI1YCbi4B2/V6AN6yg014h10/5Bcg69qzJZbhh9xBjdtD1kJBJcJR3B1qpy4HI5ghiwn
UrQgwP9Df+6iycr/ls9EijOR4kykOBMpzqPsfgDZ5w1jF/MagwAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAkdEVYdFRpdGxlAENvbnRlbnQ7QXJyYW5nZTtBbGln
+ bjtDb2x1bW5zO1zGIX4AAAA5SURBVDhPY2hpaflPLgYCBrABZcunM5CKMQzwbdrxH4aJ4Y8aMGrAIDWA
+ VIxiALkYbACIIB//ZwAAbIFcNNtz9AIAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAkdEVYdFRpdGxlAENvbnRlbnQ7QXJyYW5nZTtBbGln
+ bjtDb2x1bW5zO1zGIX4AAABvSURBVFhH7c7BDYAgDIXhLug6DmC6gyO4gts9W5IeCOUm5fIOP5Ji0k8A
+ bK0dqorqBkAMVme7un0xxHG9UtEUcD63ePaTY9L+ePcIIIAAAggggAACCCCAgBRgtXtFU8DqYqnd7TMC
+ SusAO0uHdUE+LKTicYZIPukAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFJlc2V0O1VuZG87E4EW/wAAAKtJ
+ REFUOE+l0r0NgzAQhmEWQRkiFTtkjtRMkCITpYMuY6SkZ4njey1bOqGDYCgefu7MJ2O7MbNLwmKNdHm8
+ x5dwRyu9DDJnPFOjl8atA0wI6eST3yP0GBMG4JfvX3nKLeOZWglptwIwyV3SVB1qJaTfC4BfE4+Z0B/+
+ BSAK4XfozeuAo3YD2CqaTNN/5G3+AthnmixU9SKCQ1LOQPU2FqcPkld/lK8Ii8dZswC12mC3TFCEqwAA
+ AABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFJlc2V0O1VuZG87E4EW/wAAAYVJ
+ REFUWEfFlj1Ow2AMhnsAJK7ThRtwBE7ACEtZGBCH4BSd4SbdOAADUyW24KdKqtfG6ceHqDM8Uuz4tZ18
+ v6thGBYldVaSOitJnZU44/rptcXa2BhbY2fsR3jGxztiMu0BrQfOyAQjV8aL8WkMDYghFs2PXFoPnGEB
+ j1Fg3Bp8YVbsFGjQunxaD5xhAQi1iQfjy4jJfwtacnQ1ADRB91nxN+POYKwvR3jGx7sYT47jn9B64IxR
+ MPER7Hfj3rgwjl8U4B0xxKqW4TjMCa0HzhBBhIQ3Riw4B7GxCSamqwfOCAKFr4pFWqDRHKyOtdYDZwSB
+ 8mzEAi0YjjgnNloPnBGCI9kSbcHE1BxbrQfOCMEZvU2wOlS/03rgjBA8R08TLFHV7rUeOMMC/pvFG+ge
+ AuBUUxETSZP20D0JgSNVRSylU7vfHH9ahsBvi8du2UY0wbap4rKteIKDI94BSMhXnfUwUhY5jiPlF5IM
+ ui+7ks1RdiltwVif71q+BKmzktRZSeqsY1h9A4ZDkwafEbAVAAAAAElFTkSuQmCC
\ No newline at end of file
diff --git a/EDMI_ClientSuite/UserManager/frmEdit.vb b/EDMI_ClientSuite/frmEdit.vb
similarity index 53%
rename from EDMI_ClientSuite/UserManager/frmEdit.vb
rename to EDMI_ClientSuite/frmEdit.vb
index 4a6c2a61..635d2c6d 100644
--- a/EDMI_ClientSuite/UserManager/frmEdit.vb
+++ b/EDMI_ClientSuite/frmEdit.vb
@@ -1,13 +1,16 @@
Imports DevExpress.XtraEditors
Imports DevExpress.XtraGrid
Imports DevExpress.XtraLayout
+Imports DigitalData.Modules.Logging
Public Class frmEdit
Private ReadOnly _Datatable As DataTable
Private _BindingSource As BindingSource
+ Private _LayoutConfig As ClassUIConfig.EditFormConfig
Private _LanguageDatatable As DataTable
Private _AttributeId As Integer
+ Private _Syskey As String
Private Class ControlMetadata
Public AttributeId As Integer
@@ -15,42 +18,96 @@ Public Class frmEdit
Public ColumnName As String
End Class
- Public Sub New(AttributeId As Integer, Datatable As DataTable)
+ Public Sub New(AttributeId As Integer, Syskey As String, Datatable As DataTable)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- _Datatable = Datatable
+ _Syskey = Syskey
_AttributeId = AttributeId
+
+ _Datatable = Datatable
+ _BindingSource = New BindingSource With {
+ .DataSource = _Datatable
+ }
End Sub
Private Async Sub frmEdit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim oGridPatcher = New ClassControlPatcher(Of GridControl)(Me)
- oGridPatcher.
- ProcessContainer(AddressOf ClassGridControl.DefaultGridSettings).
- ProcessContainer(AddressOf ClassGridControl.ReadOnlyGridSettings)
+ Try
+ Dim oGridPatcher = New ClassControlPatcher(Of GridControl)(Me)
+ oGridPatcher.
+ ProcessContainer(AddressOf ClassGridControl.DefaultGridSettings).
+ ProcessContainer(AddressOf ClassGridControl.ReadOnlyGridSettings)
- labelParentAttributeId.Caption = $"Attribut-ID: {_AttributeId}"
+ labelParentAttributeId.Caption = $"Attribut-ID: {_AttributeId}"
+ labelSyskey.Caption = $"Syskey: {_Syskey}"
- _BindingSource = New BindingSource()
- _BindingSource.DataSource = _Datatable
- GridList.DataSource = _BindingSource
+ GridList.DataSource = _BindingSource
- SplitContainerControl1.SplitterPosition = My.UIConfig.FrmEdit_Splitter
+ _LayoutConfig = GetLayoutBySyskey(_Syskey)
+ ApplyLayout()
- Dim oUserLanguage = My.Application.User.Language
- Await LoadLanguageTableAsync(oUserLanguage)
- LoadFormLayout()
+ Await LoadLanguageTableAsync(My.Application.User.Language)
+ LoadDetailForm()
+ Catch ex As Exception
+ _ErrorHandler.ShowErrorMessage(ex)
+ End Try
+ End Sub
+
+ '''
+ ''' Applies to currently saved layout to all controls
+ '''
+ Private Sub ApplyLayout()
+ SplitContainer.Horizontal = _LayoutConfig.SplitterHorizontal
+ SplitContainer.SplitterPosition = _LayoutConfig.SplitterDistance
+ BarCheckHorizontalLayout.Checked = _LayoutConfig.SplitterHorizontal
+ End Sub
+
+ Private Function GetLayoutBySyskey(Syskey As String) As ClassUIConfig.EditFormConfig
+ Dim oConfig = My.UIConfig.EditFormConfigs.Find(Function(c) c.SysKey = Syskey)
+
+ If Not IsNothing(oConfig) Then
+ Return oConfig
+ Else
+ Return New ClassUIConfig.EditFormConfig() With {.SysKey = Syskey}
+ End If
+ End Function
+
+ Private Sub SaveLayoutBySyskey(Syskey As String, Config As ClassUIConfig.EditFormConfig)
+ Dim oIndex = My.UIConfig.EditFormConfigs.FindIndex(Function(c) c.SysKey = Syskey)
+
+ If oIndex >= 0 Then
+ My.UIConfig.EditFormConfigs.Item(oIndex) = Config
+ Else
+ My.UIConfig.EditFormConfigs.Add(Config)
+ End If
+
+ My.UIConfigManager.Save()
+ End Sub
+
+ Private Sub ResetLayoutBySyskey(Syskey As String)
+ Dim oIndex = My.UIConfig.EditFormConfigs.FindIndex(Function(c) c.SysKey = Syskey)
+ Dim oDefaultLayout = New ClassUIConfig.EditFormConfig With {.SysKey = Syskey}
+
+ If oIndex >= 0 Then
+ My.UIConfig.EditFormConfigs.Item(oIndex) = oDefaultLayout
+ End If
+
+ My.UIConfigManager.Save()
End Sub
Private Async Function LoadLanguageTableAsync(UserLanguage As String) As Task
- Dim oSQL = $"SELECT * FROM VWICM_ATTRIBUTE_LANGUAGE WHERE LANGUAGE_CODE = '{UserLanguage}' AND PARENT_ATTRIBUTE_ID = '{_AttributeId}' ORDER BY ""SEQUENCE"";"
+ Try
+ Dim oSQL = $"SELECT * FROM VWICM_ATTRIBUTE_LANGUAGE WHERE LANGUAGE_CODE = '{UserLanguage}' AND PARENT_ATTRIBUTE_ID = '{_AttributeId}' ORDER BY ""SEQUENCE"";"
- Await My.Channel.CreateDatabaseRequestAsync("Language Syskey", False)
- Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL)
- _LanguageDatatable = oResult.Table
+ Await My.Channel.CreateDatabaseRequestAsync("Language Syskey", False)
+ Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL)
+ _LanguageDatatable = oResult.Table
- Await My.Channel.CloseDatabaseRequestAsync()
+ Await My.Channel.CloseDatabaseRequestAsync()
+ Catch ex As Exception
+ _ErrorHandler.ShowErrorMessage(ex)
+ End Try
End Function
Private Function GetColumnEditor(Column As DataColumn, AttributeId As Integer)
@@ -107,7 +164,7 @@ Public Class frmEdit
Return oRow?.Item(ColumnName)
End Function
- Private Sub LoadFormLayout()
+ Private Sub LoadDetailForm()
' Counter is used to match SEQUENCE in Attributes
' to column order in the used View (eg. VWICM_USER)
Dim oCounter = 0
@@ -149,12 +206,25 @@ Public Class frmEdit
End Sub
- Private Sub SplitContainerControl1_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainerControl1.SplitterPositionChanged
- My.UIConfig.FrmEdit_Splitter = SplitContainerControl1.SplitterPosition
- My.UIConfigManager.Save()
+ Private Sub SplitContainerControl1_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainer.SplitterPositionChanged
+ _LayoutConfig.SplitterDistance = SplitContainer.SplitterPosition
+ SaveLayoutBySyskey(_Syskey, _LayoutConfig)
End Sub
Private Sub BarButtonSave_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonSave.ItemClick
SaveRecord()
End Sub
+
+ Private Sub BarCheckHorizontalLayout_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckHorizontalLayout.CheckedChanged
+ SplitContainer.Horizontal = BarCheckHorizontalLayout.Checked
+ _LayoutConfig.SplitterHorizontal = BarCheckHorizontalLayout.Checked
+ SaveLayoutBySyskey(_Syskey, _LayoutConfig)
+ End Sub
+
+ Private Sub BarButtonResetLayout_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonResetLayout.ItemClick
+ Dim oDefaultLayout = New ClassUIConfig.EditFormConfig With {.SysKey = _Syskey}
+ SaveLayoutBySyskey(_Syskey, oDefaultLayout)
+ _LayoutConfig = oDefaultLayout
+ ApplyLayout()
+ End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmMain.Designer.vb b/EDMI_ClientSuite/frmMain.Designer.vb
index 289b7ad5..26cff891 100644
--- a/EDMI_ClientSuite/frmMain.Designer.vb
+++ b/EDMI_ClientSuite/frmMain.Designer.vb
@@ -1,6 +1,6 @@
Partial Class frmMain
- Inherits DevExpress.XtraBars.Ribbon.RibbonForm
+ Inherits BaseRibbonForm
'Form overrides dispose to clean up the component list.
diff --git a/EDMI_ClientSuite/frmMain.vb b/EDMI_ClientSuite/frmMain.vb
index 2be9643a..b48c5fd7 100644
--- a/EDMI_ClientSuite/frmMain.vb
+++ b/EDMI_ClientSuite/frmMain.vb
@@ -8,7 +8,6 @@ Imports DevExpress.LookAndFeel
Imports DevExpress.XtraBars.Ribbon
Public Class frmMain
- Private _Logger As Logger
Private _Timer As ClassTimer
Private _Loading As Boolean = True
@@ -38,75 +37,89 @@ Public Class frmMain
End Sub
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
- ' Initialize Main Timer
- _Timer = New ClassTimer(My.LogConfig, Me, My.SysConfig.HeartbeatInterval)
- AddHandler _Timer.OnlineChanged, AddressOf HandleOnlineChanged
- SetOnlineLabel()
Try
+ ' Initialize Main Timer
+ _Timer = New ClassTimer(My.LogConfig, Me, My.SysConfig.HeartbeatInterval)
+ AddHandler _Timer.OnlineChanged, AddressOf HandleOnlineChanged
+ SetOnlineLabel()
UserLookAndFeel.Default.SetSkinStyle(My.UIConfig.SkinName)
+
+ LabelCurrentUser.Caption = My.Application.User.UserName
+ LabelCurrentMachine.Caption = My.Application.User.MachineName
+ LabelCurrentVersion.Caption = My.Application.Info.Version.ToString
+ LabelCurrentLanguage.Caption = My.Application.User.Language
+
+ Dim oDashboard = New frmDashboard()
+ oDashboard.MdiParent = DocumentManager.MdiParent
+ oDashboard.Show()
+
+ ' --- Process Manager Panel ---
+ Dim oDataTable = New DataTable("PMDocuments")
+ Dim oDocNameColumn = New DataColumn("DocName", GetType(String))
+ oDataTable.Columns.Add(oDocNameColumn)
+
+ Dim oRow = oDataTable.NewRow()
+ oRow.Item("DocName") = "test1.xlsx"
+
+ oDataTable.Rows.Add(oRow)
+
+ ProcessManagerWidget.DataSource = oDataTable
+ AddHandler ProcessManagerWidget.RowDoubleClicked, Sub(RowView As DataRowView)
+ MsgBox($"Clicked on Document {RowView.Row.Item("DocName")}")
+ End Sub
+
+ AddHandler UserLookAndFeel.Default.StyleChanged, AddressOf frmMain_StyleChanged
+
+ LoadLayout()
+
+ _Loading = False
Catch ex As Exception
-
+ _ErrorHandler.ShowErrorMessage(ex)
End Try
-
-
- LabelCurrentUser.Caption = My.Application.User.UserName
- LabelCurrentMachine.Caption = My.Application.User.MachineName
- LabelCurrentVersion.Caption = My.Application.Info.Version.ToString
- LabelCurrentLanguage.Caption = My.Application.User.Language
-
- Dim oDashboard = New frmDashboard()
- oDashboard.MdiParent = DocumentManager.MdiParent
- oDashboard.Show()
-
- ' --- Process Manager Panel ---
- Dim oDataTable = New DataTable("PMDocuments")
- Dim oDocNameColumn = New DataColumn("DocName", GetType(String))
- oDataTable.Columns.Add(oDocNameColumn)
-
- Dim oRow = oDataTable.NewRow()
- oRow.Item("DocName") = "test1.xlsx"
-
- oDataTable.Rows.Add(oRow)
-
- ProcessManagerWidget.DataSource = oDataTable
- AddHandler ProcessManagerWidget.RowDoubleClicked, Sub(RowView As DataRowView)
- MsgBox($"Clicked on Document {RowView.Row.Item("DocName")}")
- End Sub
-
- AddHandler UserLookAndFeel.Default.StyleChanged, AddressOf frmMain_StyleChanged
-
- LoadLayout()
-
- _Loading = False
End Sub
Private Sub FrmMain_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
SaveLayout()
End Sub
- Private Sub LoadLayout()
- Dim oLayoutPathForDockManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DockManager)
- Dim oLayoutPathForDocumentManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DocumentManager)
-
- If File.Exists(oLayoutPathForDockManager) Then
- DockManager.RestoreLayoutFromXml(oLayoutPathForDockManager)
- End If
-
- If File.Exists(oLayoutPathForDocumentManager) Then
- DocumentManager.View.RestoreLayoutFromXml(oLayoutPathForDocumentManager)
+ Private Sub frmMain_StyleChanged(sender As Object, e As EventArgs) Handles Me.StyleChanged
+ If _Loading = False Then
+ My.UIConfig.SkinName = LookAndFeel.ActiveSkinName
+ My.UIConfigManager.Save()
End If
End Sub
+
+ Private Sub LoadLayout()
+ Try
+ Dim oLayoutPathForDockManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DockManager)
+ Dim oLayoutPathForDocumentManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DocumentManager)
+
+ If File.Exists(oLayoutPathForDockManager) Then
+ DockManager.RestoreLayoutFromXml(oLayoutPathForDockManager)
+ End If
+
+ If File.Exists(oLayoutPathForDocumentManager) Then
+ DocumentManager.View.RestoreLayoutFromXml(oLayoutPathForDocumentManager)
+ End If
+ Catch ex As Exception
+ _ErrorHandler.ShowErrorMessage(ex)
+ End Try
+ End Sub
Private Sub SaveLayout()
- Dim oLayoutPathForDockManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DockManager)
- Dim oLayoutPathForDocumentManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DocumentManager)
- Dim oDirectory As String = GetLayoutDirectory()
+ Try
+ Dim oLayoutPathForDockManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DockManager)
+ Dim oLayoutPathForDocumentManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DocumentManager)
+ Dim oDirectory As String = GetLayoutDirectory()
- If Not Directory.Exists(oDirectory) Then
- Directory.CreateDirectory(oDirectory)
- End If
+ If Not Directory.Exists(oDirectory) Then
+ Directory.CreateDirectory(oDirectory)
+ End If
- DockManager.SaveLayoutToXml(oLayoutPathForDockManager)
- DocumentManager.View.SaveLayoutToXml(oLayoutPathForDocumentManager)
+ DockManager.SaveLayoutToXml(oLayoutPathForDockManager)
+ DocumentManager.View.SaveLayoutToXml(oLayoutPathForDocumentManager)
+ Catch ex As Exception
+ _ErrorHandler.ShowErrorMessage(ex)
+ End Try
End Sub
Private Sub BarButtonUserSettings_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonUserSettings.ItemClick
@@ -167,13 +180,6 @@ Public Class frmMain
oForm.Show()
End Sub
- Private Sub frmMain_StyleChanged(sender As Object, e As EventArgs) Handles Me.StyleChanged
- If _Loading = False Then
- My.UIConfig.SkinName = LookAndFeel.ActiveSkinName
- My.UIConfigManager.Save()
- End If
- End Sub
-
' Manually merge the status bars of the parent and child MDI forms.
Private Sub RibbonControl1_Merge(ByVal sender As System.Object, ByVal e As RibbonMergeEventArgs) Handles RibbonControl.Merge
Dim oParentRibbon As RibbonControl = TryCast(sender, RibbonControl)
diff --git a/EDMI_ClientSuite/frmUserBasics.vb b/EDMI_ClientSuite/frmUserBasics.vb
deleted file mode 100644
index 15d03e1c..00000000
--- a/EDMI_ClientSuite/frmUserBasics.vb
+++ /dev/null
@@ -1,31 +0,0 @@
-Imports System.IO
-Imports DigitalData.Modules.Logging
-Public Class frmUserBasics
- Private _Logger As Logger
- Private _MyLogger As LogConfig
- Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
- ' Specify that the link was visited.
- Me.LinkLabel1.LinkVisited = True
- ' Navigate to a URL.
- System.Diagnostics.Process.Start("http://www.didalog.de/Support")
- End Sub
-
- Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
-
- End Sub
-
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Process.Start(_MyLogger.LogDirectory)
- End Sub
-
- Private Sub frmUserBasics_Load(sender As Object, e As EventArgs) Handles Me.Load
- Dim oUserAppdata = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "Digital Data\EDMI_Client_Suite\Log")
-
- _MyLogger = New LogConfig(LogConfig.PathType.CustomPath, oUserAppdata)
- _Logger = _MyLogger.GetLogger()
- End Sub
-
- Private Sub btnApplicationFolder_Click(sender As Object, e As EventArgs) Handles btnApplicationFolder.Click
-
- End Sub
-End Class
\ No newline at end of file