Imports DevExpress.XtraEditors Imports DevExpress.XtraLayout Imports DigitalData.Controls.LookupGrid Imports DigitalData.GUIs.ClientSuite.Base Imports DigitalData.Modules.Logging Namespace Controls Public Class ControlLoader Inherits BaseClass Private _LayoutControlGroup As LayoutControlGroup Private _LayoutControls As List(Of BaseEdit) Public ReadOnly Property LayoutControls As List(Of BaseEdit) Get If _LayoutControls Is Nothing Then _LayoutControls = New List(Of BaseEdit) End If Return _LayoutControls End Get End Property Public Sub New(LogConfig As LogConfig, LayoutControlGroup As LayoutControlGroup) MyBase.New(LogConfig) _LayoutControlGroup = LayoutControlGroup End Sub Public Sub AddControl(Name As String, Value As String, LayoutControlGroup As LayoutControlGroup) Dim oTextEdit As New SimpleLabelItem() With { .Name = Name, .Text = Name & " - " & Value } LayoutControlGroup.AddItem(oTextEdit) End Sub Public Sub AddControl(Name As String, Value As String) AddControl(Name, Value, _LayoutControlGroup) End Sub Public Sub AddSeparator(LayoutControlGroup As LayoutControlGroup) Dim oSeparator = New SimpleSeparator() LayoutControlGroup.AddItem(oSeparator) End Sub Public Sub AddSeparator() AddSeparator(_LayoutControlGroup) End Sub Public Sub LoadControls(Datatable As DataTable, LayoutControlGroup As LayoutControlGroup) For Each oRow As DataRow In Datatable.Rows Dim oCaption As String = oRow.Item("COLNAME") Dim oControlType As String = oRow.Item("CTRLTYPE") Dim oControlId As Int64 = oRow.Item("RECORD_ID") Dim oEditor As BaseEdit = CreateLayoutControl(oControlType, oControlId, oControlId) If oEditor Is Nothing Then Continue For End If oEditor.Tag = New Metadata() With { .Id = oControlId, .Type = oControlType, .Caption = oCaption } LayoutControls.Add(oEditor) LayoutControlGroup.AddItem(oCaption, oEditor) Next LayoutControlGroup.AddItem(New EmptySpaceItem()) End Sub Public Sub LoadControls(Datatable As DataTable) LoadControls(Datatable, _LayoutControlGroup) End Sub Public Function CreateLayoutControl(Type As String, Name As String, Id As Int64) Dim oEditor As BaseEdit = Nothing Logger.Debug("Create new Control of type {0} with name {1}", Type, Name) Select Case Type Case ClassConstants.CONTROL_TEXTEDIT Dim oTextEdit As New TextEdit() With {.Name = Name} oEditor = oTextEdit Case ClassConstants.CONTROL_MEMOEDIT Dim oMemoEdit As New MemoEdit() With {.Name = Name} oEditor = oMemoEdit Case ClassConstants.CONTROL_DATEEDIT Dim oDateEdit As New DateEdit() With {.Name = Name} oEditor = oDateEdit Case ClassConstants.CONTROL_CHECKEDIT Dim oCheckEdit As New CheckEdit() With {.Name = Name} oEditor = oCheckEdit Case ClassConstants.CONTROL_COMBOEDIT Dim oComboEdit As New LookupControl2() With {.Name = Name} oEditor = oComboEdit Case Else oEditor = Nothing End Select Return oEditor End Function End Class End Namespace