More Logging for Config Module, Add ControlPatcher, Add More UIConfig Items

This commit is contained in:
Jonathan Jenne 2019-02-22 15:13:26 +01:00
parent c6537536f5
commit bad7cea8d6
16 changed files with 276 additions and 94 deletions

View File

@ -1,8 +1,6 @@
Imports System.IO
Imports System.Xml.Serialization
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Filesystem
Imports System.Xml
Public Class ConfigManager(Of T)
Private Const USER_CONFIG_NAME As String = "UserConfig.xml"
@ -51,22 +49,22 @@ Public Class ConfigManager(Of T)
_Serializer = New XmlSerializer(_Blueprint.GetType)
If Not Directory.Exists(UserConfigPath) Then
_Logger.Debug("UserConfigPath {0} did not exist and was created", UserConfigPath)
Directory.CreateDirectory(UserConfigPath)
'Throw New DirectoryNotFoundException($"Path {UserConfigPath} does not exist!")
End If
If Not _File.TestPathIsDirectory(UserConfigPath) Then
_Logger.Warn("UserConfigPath {0} is not a directory", UserConfigPath)
Throw New ArgumentException($"Path {UserConfigPath} is not a directory!")
End If
If Not Directory.Exists(ComputerConfigPath) Then
_Logger.Debug("ComputerConfigPath {0} did not exist and was created", ComputerConfigPath)
Directory.CreateDirectory(ComputerConfigPath)
'Throw New DirectoryNotFoundException($"Path {ComputerConfigPath} does not exist!")
End If
If Not _File.TestPathIsDirectory(ComputerConfigPath) Then
_Logger.Warn("ComputerConfigPath {0} is not a directory", ComputerConfigPath)
Throw New ArgumentException($"Path {ComputerConfigPath} is not a directory!")
End If
@ -160,7 +158,10 @@ Public Class ConfigManager(Of T)
oConfig = _Serializer.Deserialize(oReader)
End Using
' If oConfig is Nothing, a config file was created but nothing was written to it.
' In this case we need to create oConfig from defaults so we have at least some config object
If oConfig Is Nothing Then
_Logger.Debug("Config file is valid but empty. Loading default values")
oConfig = Activator.CreateInstance(_Blueprint.GetType)
End If

View File

@ -0,0 +1,40 @@
''' <summary>
''' Applies Modifications to a certain type of controls
''' </summary>
''' <example>
''' Dim oGridPatcher = New ClassControlPatcher(Of GridControl)(Me)
''' oGridPatcher.
''' ProcessContainer(AddressOf ClassGridControl.DefaultGridSettings).
''' ProcessContainer(AddressOf ClassGridControl.ReadOnlyGridSettings).
''' ProcessControl(AddressOf ClassGridControl.CheckboxSelectGridSettings, GridNotAssignedToParent).
''' ProcessControl(AddressOf ClassGridControl.CheckboxSelectGridSettings, GridAssignedToParent)
''' </example>
''' <typeparam name="T">The control to Patch</typeparam>
Public Class ClassControlPatcher(Of T As Control)
Private ReadOnly _Container As Control
Public Sub New(Container As Control)
_Container = Container
End Sub
Public Function ProcessContainer(Action As Action(Of T)) As ClassControlPatcher(Of T)
Return ProcessContainer(_Container, Action)
End Function
Public Function ProcessControl(Action As Action(Of T), ByVal Control As Control) As ClassControlPatcher(Of T)
Action(Control)
Return Me
End Function
Private Function ProcessContainer(ByVal Container As Control, Action As Action(Of T)) As ClassControlPatcher(Of T)
For Each oControl As Control In Container.Controls
If oControl.[GetType]() = GetType(T) Then
Action(oControl)
Else
ProcessContainer(oControl, Action)
End If
Next
Return Me
End Function
End Class

View File

@ -1,3 +1,5 @@
Public Class ClassUIConfig
Public Property SkinName As String = "Office 2016 Colorful"
Public Property FrmEdit_Splitter As Integer = 300
End Class

View File

@ -1,38 +0,0 @@
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Public Class ClassUIUtils
Public Shared Function ConfigureGridVieDefaults(View As GridView)
View.OptionsView.ShowAutoFilterRow = True
View.OptionsView.EnableAppearanceEvenRow = True
With View.Appearance
.EvenRow.BackColor = Color.Aquamarine
.FilterPanel.BackColor = Color.Orange
End With
Return View
End Function
Public Shared Function ConfigureGridViewReadOnly(View As GridView)
View.OptionsBehavior.Editable = False
View.OptionsBehavior.ReadOnly = True
Return View
End Function
Public Shared Function ConfigureGridControlDefaults(Grid As GridControl, Optional [ReadOnly] As Boolean = False) As GridControl
For Each oView In Grid.Views
Select Case oView.GetType
Case GetType(GridView)
oView = ConfigureGridVieDefaults(oView)
If [ReadOnly] Then
oView = ConfigureGridViewReadOnly(oView)
End If
End Select
Next
Return Grid
End Function
End Class

View File

@ -119,14 +119,15 @@
<Compile Include="ClassCommonCommands.vb" />
<Compile Include="ClassConfig.vb" />
<Compile Include="ClassConstants.vb" />
<Compile Include="ClassControlPatcher.vb" />
<Compile Include="ClassDragDrop.vb" />
<Compile Include="ClassErrorHandler.vb" />
<Compile Include="ClassLayout.vb" />
<Compile Include="ClassService.vb" />
<Compile Include="ClassTimer.vb" />
<Compile Include="ClassUIConfig.vb" />
<Compile Include="ClassUIUtils.vb" />
<Compile Include="ClassUtils.vb" />
<Compile Include="ControlDefaults\ClassGridControl.vb" />
<Compile Include="DockManagerTest.Designer.vb">
<DependentUpon>DockManagerTest.vb</DependentUpon>
</Compile>

View File

@ -0,0 +1,64 @@
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Public Class ClassGridControl
Public Shared Sub DefaultGridSettings(grid As GridControl)
For Each oView In grid.Views
If TypeOf oView Is GridView Then
DefaultGridViewSettings(oView)
End If
Next
End Sub
Public Shared Sub ReadOnlyGridSettings(grid As GridControl)
For Each oView In grid.Views
If TypeOf oView Is GridView Then
ReadonlyGridViewSettings(oView)
End If
Next
End Sub
Public Shared Sub CheckboxSelectGridSettings(grid As GridControl)
For Each oView In grid.Views
If TypeOf oView Is GridView Then
CheckboxSelectGridViewSettings(oView)
End If
Next
End Sub
''' <summary>
''' Set a view to readonly
''' </summary>
Private Shared Sub ReadonlyGridViewSettings(ByRef View As GridView)
View.OptionsBehavior.Editable = False
View.OptionsBehavior.ReadOnly = True
End Sub
''' <summary>
''' Set view Multiselect with checkboxes
''' </summary>
Private Shared Sub CheckboxSelectGridViewSettings(ByRef View As GridView)
View.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
View.OptionsSelection.MultiSelect = True
End Sub
''' <summary>
''' Set default settings for view
''' </summary>
Private Shared Sub DefaultGridViewSettings(ByRef View As GridView)
View.OptionsView.ShowAutoFilterRow = True
' Color Settings
View.OptionsView.EnableAppearanceEvenRow = True
View.Appearance.EvenRow.BackColor = Color.Aquamarine
View.Appearance.FilterPanel.BackColor = Color.Orange
AddHandler View.RowStyle, AddressOf GridView_RowStyle
End Sub
Private Shared Sub GridView_RowStyle(sender As Object, e As RowStyleEventArgs)
If e.RowHandle = GridControl.AutoFilterRowHandle Then
e.Appearance.BackColor = Color.LightSalmon
End If
End Sub
End Class

View File

@ -156,6 +156,7 @@ Partial Class frmEntityDesigner
Me.RibbonControl1.MaxItemId = 2
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategory1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl1.Size = New System.Drawing.Size(800, 146)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
@ -177,13 +178,13 @@ Partial Class frmEntityDesigner
'
Me.RibbonPage3.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3})
Me.RibbonPage3.Name = "RibbonPage3"
Me.RibbonPage3.Text = "Control Actions"
Me.RibbonPage3.Text = "Aktionen"
'
'RibbonPageGroup3
'
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
Me.RibbonPageGroup3.Text = "RibbonPageGroup3"
Me.RibbonPageGroup3.Text = "Aktionen"
'
'RibbonStatusBar1
'

View File

@ -84,8 +84,6 @@ Partial Class UserControlAssignment
'
Me.ViewNotAssignedToParent.GridControl = Me.GridNotAssignedToParent
Me.ViewNotAssignedToParent.Name = "ViewNotAssignedToParent"
Me.ViewNotAssignedToParent.OptionsSelection.MultiSelect = True
Me.ViewNotAssignedToParent.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect
'
'PanelControl2
'
@ -174,8 +172,6 @@ Partial Class UserControlAssignment
'
Me.ViewAssignedToParent.GridControl = Me.GridAssignedToParent
Me.ViewAssignedToParent.Name = "ViewAssignedToParent"
Me.ViewAssignedToParent.OptionsSelection.MultiSelect = True
Me.ViewAssignedToParent.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.CheckBoxRowSelect
'
'PanelControl3
'

View File

@ -33,15 +33,12 @@ Public Class UserControlAssignment
labelParentList.Text = TextParentList
' Load grid customizations
GridParentList = ClassUIUtils.ConfigureGridControlDefaults(GridParentList, [ReadOnly]:=True)
GridNotAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridNotAssignedToParent, [ReadOnly]:=True)
ViewNotAssignedToParent.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
ViewNotAssignedToParent.OptionsSelection.MultiSelect = True
GridAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridAssignedToParent, [ReadOnly]:=True)
ViewAssignedToParent.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
ViewAssignedToParent.OptionsSelection.MultiSelect = True
Dim oGridPatcher = New ClassControlPatcher(Of GridControl)(Me)
oGridPatcher.
ProcessContainer(AddressOf ClassGridControl.DefaultGridSettings).
ProcessContainer(AddressOf ClassGridControl.ReadOnlyGridSettings).
ProcessControl(AddressOf ClassGridControl.CheckboxSelectGridSettings, GridNotAssignedToParent).
ProcessControl(AddressOf ClassGridControl.CheckboxSelectGridSettings, GridAssignedToParent)
' Load view layouts
Try
@ -61,7 +58,6 @@ Public Class UserControlAssignment
Catch ex As Exception
End Try
End Sub
Private Function MaybeCopyToDataTable(RowCollection As EnumerableRowCollection(Of DataRow)) As DataTable

View File

@ -23,6 +23,7 @@ Partial Class frmEdit
<System.Diagnostics.DebuggerStepThrough()>
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.GridList = New DevExpress.XtraGrid.GridControl()
Me.ViewList = New DevExpress.XtraGrid.Views.Grid.GridView()
@ -32,9 +33,10 @@ Partial Class frmEdit
Me.BarButtonItem1 = 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.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.GridList, System.ComponentModel.ISupportInitialize).BeginInit()
@ -95,36 +97,37 @@ Partial Class frmEdit
'RibbonControl1
'
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonItem1})
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 2
Me.RibbonControl1.MaxItemId = 4
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl1.Size = New System.Drawing.Size(1104, 146)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
'BarButtonItem1
'
Me.BarButtonItem1.Caption = "BarButtonItem1"
Me.BarButtonItem1.Caption = "Speichern"
Me.BarButtonItem1.Id = 1
Me.BarButtonItem1.ImageOptions.Image = CType(resources.GetObject("BarButtonItem1.ImageOptions.Image"), System.Drawing.Image)
Me.BarButtonItem1.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem1.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
Me.RibbonPage1.Text = "Aktionen"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem3)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
'
'RibbonPageGroup2
'
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "RibbonPageGroup2"
Me.RibbonPageGroup1.ShowCaptionButton = False
Me.RibbonPageGroup1.Text = "Aktionen"
'
'RibbonStatusBar1
'
@ -138,6 +141,22 @@ Partial Class frmEdit
Me.RibbonPage2.Name = "RibbonPage2"
Me.RibbonPage2.Text = "RibbonPage2"
'
'BarButtonItem2
'
Me.BarButtonItem2.Caption = "Neu"
Me.BarButtonItem2.Id = 2
Me.BarButtonItem2.ImageOptions.Image = CType(resources.GetObject("BarButtonItem2.ImageOptions.Image"), System.Drawing.Image)
Me.BarButtonItem2.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'BarButtonItem3
'
Me.BarButtonItem3.Caption = "Löschen"
Me.BarButtonItem3.Id = 3
Me.BarButtonItem3.ImageOptions.Image = CType(resources.GetObject("BarButtonItem3.ImageOptions.Image"), System.Drawing.Image)
Me.BarButtonItem3.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem3.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonItem3.Name = "BarButtonItem3"
'
'frmEdit
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@ -148,8 +167,9 @@ Partial Class frmEdit
Me.Controls.Add(Me.RibbonControl1)
Me.Name = "frmEdit"
Me.Ribbon = Me.RibbonControl1
Me.ShowIcon = False
Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "frmEdit"
Me.Text = "Datensätze bearbeiten"
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.GridList, System.ComponentModel.ISupportInitialize).EndInit()
@ -170,8 +190,9 @@ Partial Class frmEdit
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem
End Class

View File

@ -117,4 +117,68 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BarButtonItem1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAC3RFWHRUaXRsZQBTYXZlO/no
+QkAAABYSURBVDhPY/j//z9FGExMzlq/F4j/gzCUD2ajYzS5vSA+zABcilDE0OVAfPoYAMPY1GI1AB9G
V4shSAqmvgEgNjF41AA8BpCKkQ3Yji5JBN4ON4B8/J8BAL6u0wsmtxusAAAAAElFTkSuQmCC
</value>
</data>
<data name="BarButtonItem1.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAC3RFWHRUaXRsZQBTYXZlO/no
+QkAAAENSURBVFhH7ZfRCcMwDESzWaBfmaXrdJDO0T0CGcPVidicheQm0DgE8vHAlY6nI38dUkqn4g57
4g57Uv14Pd+j8BESgTnDuyark2dwj3zTFlgonOHjVthkddr5wjdtARsGfDzKAN2zJ3JinikP4IUFFRNe
BuiePZET80x5AC8sqJjwMkD37ImcmGfKA3hhQcWElwG6Z0/kxDxTHsALCyomvAzQPXsiJ+aZ8gBeWFAx
4WVcIme+By5ZoAn7Iifvf4aPgG/eBVoFHgJmu2AfeeHaXaASb4V9jOzuAneBu8D1CkxCJd8C+8gL1+4C
h8E3bYHZhg9g5pu2AD6V99/gX8A98c2qwBm4w564w36k4QtaC2pTkRLrNgAAAABJRU5ErkJggg==
</value>
</data>
<data name="BarButtonItem2.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAG3RFWHRUaXRsZQBBZGQ7UGx1
cztCYXJzO1JpYmJvbjuVBjMvAAAAYElEQVQ4T92MUQqAMAxDd0Ev5am8XbTSlEwyRBwIfrzRpelrAF5h
Q7KsG5KYbceG5EeCnG3HhkQFI86HxadMFRTxJ1q85NXtAiXzEuiOzBOMOEqdQHfEhoSCOP5GcA/aDplf
q/kc1pC+AAAAAElFTkSuQmCC
</value>
</data>
<data name="BarButtonItem2.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAG3RFWHRUaXRsZQBBZGQ7UGx1
cztCYXJzO1JpYmJvbjuVBjMvAAAAj0lEQVRYR+3OUQqEMAxFUTfoplyVu4vNhyDpRR4Sokg+DsKdafsW
M3sVxkoYK2GshLESRsW67XYVf1dhVPSAHtAD/j0gXp4lvuOm4OhwhviOm4KjwxniO24Kjg5niO+4KaiU
yxUYFTRgfG9dz58wKsaF3xvwBEZFD6AB44v/vYNR0QOyYKyEsRLGShjr2HIAeeWOhN7Trl4AAAAASUVO
RK5CYII=
</value>
</data>
<data name="BarButtonItem3.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAKXRFWHRUaXRsZQBSZW1vdmU7
RGVsZXRlO0JhcnM7UmliYm9uO1N0YW5kYXJkO2NWSDAAAADCSURBVDhPjZNLCgIxEERzOGFWegkvIH4Q
Rhyv6UkUV20VpCTpTquLB0n9GAZSzKzct6s1mHn+B2Qv7PCs8gsYuPqwB5lbzbKzoXCqgkhH4Kks9jLO
zggj0Hz5SL0NpCM4D8vkM1CDfmQBaZl0AwQBP9LSlUl3EQiORkKZBIEg7D+bLKNsEBAclUUY6S4I+PIB
hB/bdr6WGy8d+VkW0IYjNPgwWiOUBTw/MlOcwKMKaVkgo5EnmCRyZOfDGcjyAU5mVt7SQJzMJkqbYgAA
AABJRU5ErkJggg==
</value>
</data>
<data name="BarButtonItem3.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAKXRFWHRUaXRsZQBSZW1vdmU7
RGVsZXRlO0JhcnM7UmliYm9uO1N0YW5kYXJkO2NWSDAAAAFuSURBVFhHxZZNSgQxFIRn5gIOeiU3LhxB
j+BRRRTFWc9VXMWqJg+e6XpNXoS4+BYpUj/Q3dC7Usq/IsWZSHEmUrw83/6JJuvgzy1SrEFX4AXc1XM3
LucevIKjz/dIEQaWf4ACvkFqRM1gOb3M+ARyxErAxQPgahqN7AhfbjBz3/b9Ohi4+ATagN4RqpznB9W1
Egguk8dqbIO2RqTKiRRhMDIj0uVEijB5ekYMlRMpwtiyNWK4nEgRZkU0YricSBEBEWqEJ1VOpIiQLaIR
SzmQmRFSZMgG6pnbgOXFVJkRUmRIQFRuLCNUZoQUEaKI3naldY+QIgJ6y/nMw09UZbdIEebecrszPEKK
MGbKjaERUoSJROUn4Is96RFShGGk3EiNWAm4uAdv1egDesoNNeIddP+QXIOvasyWW4YfcQY3bQ9ZCQSX
CUdwdaqcuByOYIYsJ1K0IMD/Q3/uosnK/5bPRIozkeJMpDgTKc6j7H4A2ecNYxfzGoMAAAAASUVORK5C
YII=
</value>
</data>
</root>

View File

@ -1,4 +1,5 @@
Imports DevExpress.XtraEditors
Imports DevExpress.XtraGrid
Imports DevExpress.XtraLayout
Public Class frmEdit
@ -16,11 +17,16 @@ Public Class frmEdit
End Sub
Private Async Sub frmEdit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
GridList = ClassUIUtils.ConfigureGridControlDefaults(GridList, [ReadOnly]:=True)
Dim oGridPatcher = New ClassControlPatcher(Of GridControl)(Me)
oGridPatcher.
ProcessContainer(AddressOf ClassGridControl.DefaultGridSettings).
ProcessContainer(AddressOf ClassGridControl.ReadOnlyGridSettings)
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
GridList.DataSource = _Datatable
SplitContainerControl1.SplitterPosition = My.UIConfig.FrmEdit_Splitter
Dim oUserLanguage = My.Application.User.Language
Await LoadLanguageTableAsync(oUserLanguage)
LoadFormLayout()
@ -101,4 +107,9 @@ Public Class frmEdit
LayoutControlGroup1.AddItem(New EmptySpaceItem())
LayoutControlGroup1.LayoutMode = Utils.LayoutMode.Flow
End Sub
Private Sub SplitContainerControl1_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainerControl1.SplitterPositionChanged
My.UIConfig.FrmEdit_Splitter = SplitContainerControl1.SplitterPosition
My.UIConfigManager.Save()
End Sub
End Class

View File

@ -36,6 +36,7 @@ Partial Class frmUserManager
Me.OfficeNavigationBar1 = New DevExpress.XtraBars.Navigation.OfficeNavigationBar()
Me.NavbarUser2Group = New DevExpress.XtraBars.Navigation.NavigationBarItem()
Me.NavbarGroup2Group = New DevExpress.XtraBars.Navigation.NavigationBarItem()
Me.UCGroupToGroup = New DigitalData.GUIs.ClientSuite.UserControlAssignment()
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.OfficeNavigationBar1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
@ -49,6 +50,7 @@ Partial Class frmUserManager
Me.RibbonControl.MdiMergeStyle = DevExpress.XtraBars.Ribbon.RibbonMdiMergeStyle.Always
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategoryUserManager})
Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl.Size = New System.Drawing.Size(1070, 146)
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
'
@ -134,14 +136,14 @@ Partial Class frmUserManager
'
'UCUserToGroup
'
Me.UCUserToGroup.Dock = System.Windows.Forms.DockStyle.Fill
Me.UCUserToGroup.Location = New System.Drawing.Point(0, 146)
Me.UCUserToGroup.Location = New System.Drawing.Point(335, 163)
Me.UCUserToGroup.Name = "UCUserToGroup"
Me.UCUserToGroup.Size = New System.Drawing.Size(1070, 328)
Me.UCUserToGroup.Size = New System.Drawing.Size(391, 271)
Me.UCUserToGroup.TabIndex = 0
Me.UCUserToGroup.TextAssignedToParent = "Zugeordnete Benutzer zu Gruppe:"
Me.UCUserToGroup.TextNotAssignedToParent = "Nicht zugeordnete Benutzer:"
Me.UCUserToGroup.TextParentList = "Verfügbare Gruppen:"
Me.UCUserToGroup.Visible = False
'
'OfficeNavigationBar1
'
@ -149,7 +151,6 @@ Partial Class frmUserManager
Me.OfficeNavigationBar1.Items.AddRange(New DevExpress.XtraBars.Navigation.NavigationBarItem() {Me.NavbarUser2Group, Me.NavbarGroup2Group})
Me.OfficeNavigationBar1.Location = New System.Drawing.Point(0, 474)
Me.OfficeNavigationBar1.Name = "OfficeNavigationBar1"
Me.OfficeNavigationBar1.SelectedItem = Me.NavbarUser2Group
Me.OfficeNavigationBar1.Size = New System.Drawing.Size(1070, 45)
Me.OfficeNavigationBar1.TabIndex = 2
Me.OfficeNavigationBar1.Text = "OfficeNavigationBar1"
@ -165,17 +166,30 @@ Partial Class frmUserManager
Me.NavbarGroup2Group.ShowPeekFormOnItemHover = DevExpress.Utils.DefaultBoolean.[True]
Me.NavbarGroup2Group.Text = "Gruppenzuordnung"
'
'UCGroupToGroup
'
Me.UCGroupToGroup.Location = New System.Drawing.Point(22, 163)
Me.UCGroupToGroup.Name = "UCGroupToGroup"
Me.UCGroupToGroup.Size = New System.Drawing.Size(276, 234)
Me.UCGroupToGroup.TabIndex = 5
Me.UCGroupToGroup.TextAssignedToParent = "Zugeordnete Gruppen:"
Me.UCGroupToGroup.TextNotAssignedToParent = "Nicht zugeordnete Gruppen:"
Me.UCGroupToGroup.TextParentList = "Verfügbare Gruppen:"
Me.UCGroupToGroup.Visible = False
'
'frmUserManager
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1070, 540)
Me.Controls.Add(Me.UCGroupToGroup)
Me.Controls.Add(Me.UCUserToGroup)
Me.Controls.Add(Me.OfficeNavigationBar1)
Me.Controls.Add(Me.RibbonStatusBar)
Me.Controls.Add(Me.RibbonControl)
Me.Name = "frmUserManager"
Me.Ribbon = Me.RibbonControl
Me.ShowIcon = False
Me.StatusBar = Me.RibbonStatusBar
Me.Text = "User Manager"
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
@ -201,4 +215,5 @@ Partial Class frmUserManager
Friend WithEvents OfficeNavigationBar1 As DevExpress.XtraBars.Navigation.OfficeNavigationBar
Friend WithEvents NavbarUser2Group As DevExpress.XtraBars.Navigation.NavigationBarItem
Friend WithEvents NavbarGroup2Group As DevExpress.XtraBars.Navigation.NavigationBarItem
Friend WithEvents UCGroupToGroup As UserControlAssignment
End Class

View File

@ -22,6 +22,12 @@ Public Class frmUserManager
RibbonControl.SelectPage(RibbonPageUserManager)
End Sub
Private Sub frmUserManager_VisibleChanged(sender As Object, e As EventArgs) Handles Me.VisibleChanged
If Visible Then
RibbonControl.SelectPage(RibbonPageUserManager)
End If
End Sub
Private Async Function InitUserToGroupData() As Task
Dim oUserTable = Await GetAttributeListAsync("User")
Dim oGroupTable = Await GetAttributeListAsync("Group")
@ -82,18 +88,22 @@ Public Class frmUserManager
Await UpdateUserToGroupData()
End Sub
Private Sub OfficeNavigationBar1_ItemClick(sender As Object, e As DevExpress.XtraBars.Navigation.NavigationBarItemEventArgs) Handles OfficeNavigationBar1.ItemClick
End Sub
Private Sub OfficeNavigationBar1_SelectedItemChanged(sender As Object, e As DevExpress.XtraBars.Navigation.NavigationBarItemEventArgs) Handles OfficeNavigationBar1.SelectedItemChanged
Select Case OfficeNavigationBar1.SelectedItem.Name
Case "NavbarUser2Group"
UCUserToGroup.Visible = True
UCUserToGroup.Dock = DockStyle.Fill
UCGroupToGroup.Visible = False
UCGroupToGroup.Dock = DockStyle.None
Case "NavbarGroup2Group"
UCGroupToGroup.Visible = True
UCGroupToGroup.Dock = DockStyle.Fill
UCUserToGroup.Visible = False
UCUserToGroup.Dock = DockStyle.None
End Select
End Sub
End Class

View File

@ -175,17 +175,15 @@ Public Class frmMain
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 parentRRibbon As RibbonControl = TryCast(sender, RibbonControl)
Dim childRibbon As RibbonControl = e.MergedChild
parentRRibbon.StatusBar.MergeStatusBar(childRibbon.StatusBar)
Private Sub RibbonControl1_Merge(ByVal sender As System.Object, ByVal e As RibbonMergeEventArgs) Handles RibbonControl.Merge
Dim oParentRibbon As RibbonControl = TryCast(sender, RibbonControl)
Dim oChildRibbon As RibbonControl = e.MergedChild
oParentRibbon.StatusBar.MergeStatusBar(oChildRibbon.StatusBar)
End Sub
' Manually unmerge the status bars.
Private Sub RibbonControl1_UnMerge(ByVal sender As System.Object,
ByVal e As RibbonMergeEventArgs) Handles RibbonControl.UnMerge
Dim parentRRibbon As RibbonControl = TryCast(sender, RibbonControl)
parentRRibbon.StatusBar.UnMergeStatusBar()
Private Sub RibbonControl1_UnMerge(ByVal sender As System.Object, ByVal e As RibbonMergeEventArgs) Handles RibbonControl.UnMerge
Dim oParentRibbon As RibbonControl = TryCast(sender, RibbonControl)
oParentRibbon.StatusBar.UnMergeStatusBar()
End Sub
End Class

View File

@ -64,7 +64,7 @@ Public NotInheritable Class frmSplash
_Worker.RunWorkerAsync()
End Sub
Private Async Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)
Private Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)
Dim oService As New ClassService(My.LogConfig)
_Worker.ReportProgress(SetProgress(1), "Connecting to service..")