Imports System.Windows.Forms
Imports DigitalData.Controls.LookupGrid
Imports DigitalData.Modules.Logging

Namespace Modules
    ''' <summary>
    ''' Patterns for control values on a panel
    ''' </summary>
    Public Class Controls
        Inherits BaseModule
        Implements IModule

        Public Const CTRL_VALUE_PANEL = "CTRL_VALUE_PANEL"

        Public Property PatternIdentifier As String = "CTRL" Implements IModule.PatternIdentifier
        Public Property IsComplex As Boolean = True Implements IModule.IsComplex

        Public Sub New(pLogConfig As LogConfig)
            MyBase.New(pLogConfig)
        End Sub

        Public Function Replace(pInput As String, pPanel As Panel) As String
            Dim oResult = pInput
            Dim oCounter = 0

            While ContainsPattern(oResult, PatternIdentifier)
                Try
                    Dim oControlName As String = GetNextPattern(oResult, PatternIdentifier).Value
                    Dim oControl As Control = pPanel.Controls.Find(oControlName, False).FirstOrDefault()

                    If oControl IsNot Nothing Then
                        Dim oReplaceValue As String
                        Select Case oControl.GetType.ToString
                            Case GetType(TextBox).ToString
                                oReplaceValue = oControl.Text
                            Case GetType(LookupControl3).ToString
                                Dim oLookupControl3 As LookupControl3 = oControl
                                If oLookupControl3.Properties.SelectedValues.Count = 1 Then
                                    oReplaceValue = oLookupControl3.Properties.SelectedValues.Item(0)
                                Else
                                    oReplaceValue = "0"
                                End If
                            Case GetType(ComboBox).ToString
                                oReplaceValue = oControl.Text
                            Case GetType(CheckBox).ToString
                                Dim oCheckBox As CheckBox = oControl
                                oReplaceValue = oCheckBox.Checked
                            Case Else
                                oReplaceValue = "0"
                        End Select

                        oResult = ReplacePattern(oResult, PatternIdentifier, oReplaceValue)
                    End If
                Catch ex As Exception
                    Logger.Error(ex)
                Finally
                    IncrementCounterOrThrow(oCounter)
                End Try

            End While

            Return oResult
        End Function
    End Class
End Namespace
