diff --git a/Controls.LookupGrid/LookupControl2.vb b/Controls.LookupGrid/LookupControl2.vb
index ea3f8de0..b1df6d2e 100644
--- a/Controls.LookupGrid/LookupControl2.vb
+++ b/Controls.LookupGrid/LookupControl2.vb
@@ -21,10 +21,6 @@ Public Class RepositoryItemLookupControl2
Public Const CustomEditName As String = "LookupControl2"
- Public Sub New()
-
- End Sub
-
Public Overrides ReadOnly Property EditorTypeName As String
Get
Return CustomEditName
@@ -59,54 +55,110 @@ Public Class LookupControl2
Public Property PreventDuplicates As Boolean
Public Property DataSource As DataTable
Public Property SelectedValues As List(Of String)
+ Get
+ Return _SelectedValues
+ End Get
+ Set(value As List(Of String))
+ _SelectedValues = value
+ UpdateSelectedValues(value)
+ End Set
+ End Property
+
+ Private LookupFormButton As EditorButton
+ Private DropdownButton As EditorButton
Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm"
+
Private Const TEXT_NO_RECORDS = "Keine Datensätze ausgewählt"
+ Private Const TEXT_ONE_RECORD = "Ein Datensatz ausgewählt"
Private Const TEXT_N_RECORDS = "{0} Datensätze ausgewählt"
+ Private _SelectedValues As List(Of String)
+
Shared Sub New()
RepositoryItemLookupControl2.RegisterLookupControl2()
End Sub
Public Sub New()
- Properties.Buttons.Add(New EditorButton() With {
+ MyClass.New(MultiSelect:=False)
+ End Sub
+
+ Public Sub New(MultiSelect As Boolean)
+ LookupFormButton = New EditorButton() With {
.Kind = ButtonPredefines.Ellipsis,
.Tag = TAG_BUTTON_LOOKUP_FORM
- })
+ }
+
+ Properties.Buttons.AddRange({LookupFormButton})
AddHandler ButtonClick, AddressOf HandleButtonClick
AddHandler EditValueChanging, AddressOf HandleEditValueChanging
+ AddHandler QueryPopUp, AddressOf HandleQueryPopup
End Sub
+ '''
+ ''' Prevents popup from opening when multiselect is false
+ '''
+ Private Sub HandleQueryPopup(sender As Object, e As CancelEventArgs)
+ If MultiSelect = False Then
+ e.Cancel = True
+ End If
+ End Sub
+
+ '''
+ ''' Prevents Editvalue changing when multiselect is true
+ '''
Private Sub HandleEditValueChanging(sender As Object, e As ChangingEventArgs)
- e.Cancel = True
+ If MultiSelect Then
+ e.Cancel = True
+ End If
End Sub
+ '''
+ ''' Handles opening frmLookup when ellipsis button is clicked
+ '''
Private Sub HandleButtonClick(sender As Object, e As ButtonPressedEventArgs)
- If e.Button.Tag <> TAG_BUTTON_LOOKUP_FORM Then
- Exit Sub
- End If
+ Select Case e.Button.Tag
+ Case TAG_BUTTON_LOOKUP_FORM
+ Dim oForm As frmLookupGrid = GetLookupForm()
+ Dim oResult = oForm.ShowDialog()
- Dim oForm As frmLookupGrid = GetLookupForm()
- Dim oResult = oForm.ShowDialog()
+ If oResult = Windows.Forms.DialogResult.OK Then
+ Dim oValues = oForm.SelectedValues
- If oResult = Windows.Forms.DialogResult.OK Then
- Dim oValues = oForm.SelectedValues
+ UpdateSelectedValues(oValues)
+ SelectedValues = oValues
+ ElseIf oResult = Windows.Forms.DialogResult.Cancel Then
+ Dim oValues = New List(Of String)
- UpdateSelectedValues(oValues)
+ UpdateSelectedValues(oValues)
+ SelectedValues = oValues
+ End If
- SelectedValues = oValues
- End If
-
- oForm.Dispose()
+ oForm.Dispose()
+ End Select
End Sub
Private Sub UpdateSelectedValues(Values As List(Of String))
+ If Values Is Nothing Then
+ Exit Sub
+ End If
+
If MultiSelect = True Then
Properties.DataSource = Values
- Properties.NullText = IIf(Values.Count = 0, TEXT_NO_RECORDS, String.Format(TEXT_N_RECORDS, Values.Count))
+
+ Select Case Values.Count
+ Case 0
+ Properties.NullText = TEXT_NO_RECORDS
+ Case 1
+ Properties.NullText = TEXT_ONE_RECORD
+ Case Else
+ Properties.NullText = String.Format(TEXT_N_RECORDS, Values.Count)
+ End Select
Else
+ Properties.NullText = Values.FirstOrDefault()
Text = Values.FirstOrDefault()
+ EditValue = Nothing
End If
End Sub
diff --git a/Controls.LookupGrid/My Project/AssemblyInfo.vb b/Controls.LookupGrid/My Project/AssemblyInfo.vb
index a9d9594c..2eb9f91d 100644
--- a/Controls.LookupGrid/My Project/AssemblyInfo.vb
+++ b/Controls.LookupGrid/My Project/AssemblyInfo.vb
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
'
-
+
diff --git a/Controls.LookupGrid/frmLookupGrid.vb b/Controls.LookupGrid/frmLookupGrid.vb
index e0beba62..44517082 100644
--- a/Controls.LookupGrid/frmLookupGrid.vb
+++ b/Controls.LookupGrid/frmLookupGrid.vb
@@ -17,6 +17,7 @@ Public Class frmLookupGrid
view = viewLookup
grid = gridLookup
+
If DataSource Is Nothing Then
Exit Sub
End If
@@ -136,7 +137,7 @@ Public Class frmLookupGrid
End Sub
Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
- SelectedValues.Clear()
+ SelectedValues = New List(Of String)
DialogResult = DialogResult.Cancel
Close()
diff --git a/DDMonorepo.sln b/DDMonorepo.sln
index a21dd992..bced3c9e 100644
--- a/DDMonorepo.sln
+++ b/DDMonorepo.sln
@@ -73,6 +73,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUIs.Test", "GUIs.Test", "{
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "JobRunner", "Service.JobRunner\JobRunner.vbproj", "{926E6474-5613-4373-BB99-B101158B91EF}"
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LookupControlGui", "LookupControlGui\LookupControlGui.vbproj", "{B65E24B3-D334-455D-A0BF-B33B8358B013}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -179,6 +181,10 @@ Global
{926E6474-5613-4373-BB99-B101158B91EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
{926E6474-5613-4373-BB99-B101158B91EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
{926E6474-5613-4373-BB99-B101158B91EF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B65E24B3-D334-455D-A0BF-B33B8358B013}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B65E24B3-D334-455D-A0BF-B33B8358B013}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B65E24B3-D334-455D-A0BF-B33B8358B013}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B65E24B3-D334-455D-A0BF-B33B8358B013}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -209,6 +215,7 @@ Global
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{7386AB04-DF8D-4DFB-809D-1FAC8212CB7E} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{926E6474-5613-4373-BB99-B101158B91EF} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
+ {B65E24B3-D334-455D-A0BF-B33B8358B013} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}
diff --git a/GUIs.Test.TestGUI/ConfigTest.vb b/GUIs.Test.TestGUI/ConfigTest.vb
index 8e0dbbc7..356bc62a 100644
--- a/GUIs.Test.TestGUI/ConfigTest.vb
+++ b/GUIs.Test.TestGUI/ConfigTest.vb
@@ -12,7 +12,6 @@ Public Class ConfigTest
End Sub
Public Class Config
-
Public Property StringEntry As String = "TEST"
Public Property BoolEntry As Boolean = True
Public Property IntEntry As Integer = 123
diff --git a/GUIs.Test.TestGUI/Form1.Designer.vb b/GUIs.Test.TestGUI/Form1.Designer.vb
index 8888ec79..e744c1bb 100644
--- a/GUIs.Test.TestGUI/Form1.Designer.vb
+++ b/GUIs.Test.TestGUI/Form1.Designer.vb
@@ -22,7 +22,6 @@ Partial Class Form1
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
Private Sub InitializeComponent()
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Form1))
Me.Button1 = New System.Windows.Forms.Button()
Me.Button3 = New System.Windows.Forms.Button()
Me.Label1 = New System.Windows.Forms.Label()
@@ -44,8 +43,6 @@ Partial Class Form1
Me.TextBox1 = New System.Windows.Forms.TextBox()
Me.Label6 = New System.Windows.Forms.Label()
Me.Button4 = New System.Windows.Forms.Button()
- Me.LookupControl1 = New DigitalData.Controls.LookupGrid.LookupControl()
- Me.Button6 = New System.Windows.Forms.Button()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
@@ -231,34 +228,11 @@ Partial Class Form1
Me.Button4.Text = "Test Background Worker Logging"
Me.Button4.UseVisualStyleBackColor = True
'
- 'LookupControl1
- '
- Me.LookupControl1.AutoSize = True
- Me.LookupControl1.BackColor = System.Drawing.Color.Transparent
- Me.LookupControl1.DataSource = Nothing
- Me.LookupControl1.Location = New System.Drawing.Point(695, 214)
- Me.LookupControl1.MultiSelect = True
- Me.LookupControl1.Name = "LookupControl1"
- Me.LookupControl1.SelectedValues = CType(resources.GetObject("LookupControl1.SelectedValues"), System.Collections.Generic.List(Of String))
- Me.LookupControl1.Size = New System.Drawing.Size(270, 23)
- Me.LookupControl1.TabIndex = 23
- '
- 'Button6
- '
- Me.Button6.Location = New System.Drawing.Point(764, 308)
- Me.Button6.Name = "Button6"
- Me.Button6.Size = New System.Drawing.Size(75, 23)
- Me.Button6.TabIndex = 24
- Me.Button6.Text = "Button6"
- Me.Button6.UseVisualStyleBackColor = True
- '
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1050, 487)
- Me.Controls.Add(Me.Button6)
- Me.Controls.Add(Me.LookupControl1)
Me.Controls.Add(Me.Button4)
Me.Controls.Add(Me.Label6)
Me.Controls.Add(Me.TextBox1)
@@ -310,6 +284,4 @@ Partial Class Form1
Friend WithEvents TextBox1 As TextBox
Friend WithEvents Label6 As Label
Friend WithEvents Button4 As Button
- Friend WithEvents LookupControl1 As DigitalData.Controls.LookupGrid.LookupControl
- Friend WithEvents Button6 As Button
End Class
diff --git a/GUIs.Test.TestGUI/Form1.resx b/GUIs.Test.TestGUI/Form1.resx
index 7a53cff0..1af7de15 100644
--- a/GUIs.Test.TestGUI/Form1.resx
+++ b/GUIs.Test.TestGUI/Form1.resx
@@ -117,13 +117,4 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- AAEAAAD/////AQAAAAAAAAAMAgAAAJoBbXNjb3JsaWIsIFZlcnNpb249NC4wLjAuMCwgQ3VsdHVyZT1u
- ZXV0cmFsLCBQdWJsaWNLZXlUb2tlbj1iNzdhNWM1NjE5MzRlMDg5XV0sIG1zY29ybGliLCBWZXJzaW9u
- PTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUB
- AAAAMFN5c3RlbS5Db2xsZWN0aW9ucy5HZW5lcmljLkxpc3RgMVtbU3lzdGVtLlN0cmluZwMAAAAGX2l0
- ZW1zBV9zaXplCF92ZXJzaW9uBgAACAgCAAAACQMAAAAAAAAAAAAAABEDAAAAAAAAAAs=
-
-
\ No newline at end of file
diff --git a/GUIs.Test.TestGUI/Form1.vb b/GUIs.Test.TestGUI/Form1.vb
index 6f8babf9..a41b5a2a 100644
--- a/GUIs.Test.TestGUI/Form1.vb
+++ b/GUIs.Test.TestGUI/Form1.vb
@@ -79,11 +79,6 @@ Public Class Form1
datatable.Rows.Add(dr)
datatable.Rows.Add(dr2)
datatable.Rows.Add(dr3)
-
- LookupControl1.DataSource = datatable
- LookupControl1.SelectedValues = New List(Of String) From {"foo"}
-
-
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles GetValue.Click
diff --git a/GUIs.Test.TestGUI/TestGUI.vbproj b/GUIs.Test.TestGUI/TestGUI.vbproj
index 07ece0c7..95ee6b2a 100644
--- a/GUIs.Test.TestGUI/TestGUI.vbproj
+++ b/GUIs.Test.TestGUI/TestGUI.vbproj
@@ -176,10 +176,6 @@
{991d0231-4623-496d-8bd0-9ca906029cbc}
Filesystem
-
- {3dcd6d1a-c830-4241-b7e4-27430e7ea483}
- LookupControl
-
{903b2d7d-3b80-4be9-8713-7447b704e1b0}
Logging
diff --git a/LookupControlGui/App.config b/LookupControlGui/App.config
new file mode 100644
index 00000000..5534e287
--- /dev/null
+++ b/LookupControlGui/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/LookupControlGui/Form1.Designer.vb b/LookupControlGui/Form1.Designer.vb
new file mode 100644
index 00000000..20e29cfc
--- /dev/null
+++ b/LookupControlGui/Form1.Designer.vb
@@ -0,0 +1,89 @@
+
+Partial Class Form1
+ Inherits System.Windows.Forms.Form
+
+ 'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
+
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ Try
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ Finally
+ MyBase.Dispose(disposing)
+ End Try
+ End Sub
+
+ 'Wird vom Windows Form-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ 'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
+ 'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
+ 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+
+ Private Sub InitializeComponent()
+ Dim EditorButtonImageOptions1 As DevExpress.XtraEditors.Controls.EditorButtonImageOptions = New DevExpress.XtraEditors.Controls.EditorButtonImageOptions()
+ Dim SerializableAppearanceObject1 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim SerializableAppearanceObject2 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim SerializableAppearanceObject3 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim SerializableAppearanceObject4 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim EditorButtonImageOptions2 As DevExpress.XtraEditors.Controls.EditorButtonImageOptions = New DevExpress.XtraEditors.Controls.EditorButtonImageOptions()
+ Dim SerializableAppearanceObject5 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim SerializableAppearanceObject6 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim SerializableAppearanceObject7 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Dim SerializableAppearanceObject8 As DevExpress.Utils.SerializableAppearanceObject = New DevExpress.Utils.SerializableAppearanceObject()
+ Me.Button1 = New System.Windows.Forms.Button()
+ Me.LookupControl = New DigitalData.Controls.LookupGrid.LookupControl2()
+ Me.LookupControl21View = New DevExpress.XtraGrid.Views.Grid.GridView()
+ CType(Me.LookupControl.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LookupControl21View, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'Button1
+ '
+ Me.Button1.Location = New System.Drawing.Point(12, 12)
+ Me.Button1.Name = "Button1"
+ Me.Button1.Size = New System.Drawing.Size(94, 23)
+ Me.Button1.TabIndex = 2
+ Me.Button1.Text = "Get Text"
+ Me.Button1.UseVisualStyleBackColor = True
+ '
+ 'LookupControl
+ '
+ Me.LookupControl.AllowAddNewValues = False
+ Me.LookupControl.DataSource = Nothing
+ Me.LookupControl.Location = New System.Drawing.Point(393, 31)
+ Me.LookupControl.MultiSelect = True
+ Me.LookupControl.Name = "LookupControl"
+ Me.LookupControl.PreventDuplicates = False
+ Me.LookupControl.Properties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo, "", -1, True, True, False, EditorButtonImageOptions1, New DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), SerializableAppearanceObject1, SerializableAppearanceObject2, SerializableAppearanceObject3, SerializableAppearanceObject4, "", "openDropdown", Nothing, DevExpress.Utils.ToolTipAnchor.[Default]), New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Ellipsis, "", -1, True, True, False, EditorButtonImageOptions2, New DevExpress.Utils.KeyShortcut(System.Windows.Forms.Keys.None), SerializableAppearanceObject5, SerializableAppearanceObject6, SerializableAppearanceObject7, SerializableAppearanceObject8, "", "openLookupForm", Nothing, DevExpress.Utils.ToolTipAnchor.[Default])})
+ Me.LookupControl.Properties.PopupView = Me.LookupControl21View
+ Me.LookupControl.SelectedValues = Nothing
+ Me.LookupControl.Size = New System.Drawing.Size(342, 20)
+ Me.LookupControl.TabIndex = 3
+ '
+ 'LookupControl21View
+ '
+ Me.LookupControl21View.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
+ Me.LookupControl21View.Name = "LookupControl21View"
+ Me.LookupControl21View.OptionsSelection.EnableAppearanceFocusedCell = False
+ Me.LookupControl21View.OptionsView.ShowGroupPanel = False
+ '
+ 'Form1
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(800, 450)
+ Me.Controls.Add(Me.LookupControl)
+ Me.Controls.Add(Me.Button1)
+ Me.Name = "Form1"
+ Me.Text = "Form1"
+ CType(Me.LookupControl.Properties, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LookupControl21View, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents Button1 As Button
+ Friend WithEvents LookupControl As DigitalData.Controls.LookupGrid.LookupControl2
+ Friend WithEvents LookupControl21View As DevExpress.XtraGrid.Views.Grid.GridView
+End Class
diff --git a/LookupControlGui/Form1.resx b/LookupControlGui/Form1.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/LookupControlGui/Form1.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/LookupControlGui/Form1.vb b/LookupControlGui/Form1.vb
new file mode 100644
index 00000000..fb9958f7
--- /dev/null
+++ b/LookupControlGui/Form1.vb
@@ -0,0 +1,37 @@
+
+
+
+Public Class Form1
+ Private _Datasource As New List(Of String) From {"Foo", "bar", "baz", "quux"}
+
+ Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+ Dim oDatatable = GetDatatable()
+ Dim oSelectedValues = _Datasource.Take(1).ToList()
+
+ LookupControl.DataSource = oDatatable
+ LookupControl.SelectedValues = oSelectedValues
+ End Sub
+
+ Private Function GetDatatable() As DataTable
+ Dim oDatatable As New DataTable
+ Dim oColumns As New List(Of DataColumn) From {
+ New DataColumn("Col1", GetType(String))
+ }
+
+ oDatatable.Columns.AddRange(oColumns.ToArray)
+
+ For Each Item In _Datasource
+ Dim oRow = oDatatable.NewRow()
+ oRow.Item("Col1") = Item
+ oDatatable.Rows.Add(oRow)
+ Next
+
+
+ Return oDatatable
+ End Function
+
+ Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
+ MsgBox(LookupControl.SelectedValues.Count)
+ End Sub
+End Class
diff --git a/LookupControlGui/LookupControlGui.vbproj b/LookupControlGui/LookupControlGui.vbproj
new file mode 100644
index 00000000..e7f8927a
--- /dev/null
+++ b/LookupControlGui/LookupControlGui.vbproj
@@ -0,0 +1,132 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {B65E24B3-D334-455D-A0BF-B33B8358B013}
+ WinExe
+ LookupControlGui.My.MyApplication
+ LookupControlGui
+ LookupControlGui
+ 512
+ WindowsForms
+ v4.6.1
+ true
+
+
+ AnyCPU
+ true
+ full
+ true
+ true
+ bin\Debug\
+ LookupControlGui.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ AnyCPU
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ LookupControlGui.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ Form1.vb
+ Form
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ Form1.vb
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
+ {3dcd6d1a-c830-4241-b7e4-27430e7ea483}
+ LookupControl
+
+
+
+
\ No newline at end of file
diff --git a/LookupControlGui/My Project/Application.Designer.vb b/LookupControlGui/My Project/Application.Designer.vb
new file mode 100644
index 00000000..50b0d981
--- /dev/null
+++ b/LookupControlGui/My Project/Application.Designer.vb
@@ -0,0 +1,38 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ 'NOTE: This file is auto-generated; do not modify it directly. To make changes,
+ ' or if you encounter build errors in this file, go to the Project Designer
+ ' (go to Project Properties or double-click the My Project node in
+ ' Solution Explorer), and make changes on the Application tab.
+ '
+ Partial Friend Class MyApplication
+
+ _
+ Public Sub New()
+ MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
+ Me.IsSingleInstance = false
+ Me.EnableVisualStyles = true
+ Me.SaveMySettingsOnExit = true
+ Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
+ End Sub
+
+ _
+ Protected Overrides Sub OnCreateMainForm()
+ Me.MainForm = Global.LookupControlGui.Form1
+ End Sub
+ End Class
+End Namespace
diff --git a/LookupControlGui/My Project/Application.myapp b/LookupControlGui/My Project/Application.myapp
new file mode 100644
index 00000000..1243847f
--- /dev/null
+++ b/LookupControlGui/My Project/Application.myapp
@@ -0,0 +1,11 @@
+
+
+ true
+ Form1
+ false
+ 0
+ true
+ 0
+ 0
+ true
+
diff --git a/LookupControlGui/My Project/AssemblyInfo.vb b/LookupControlGui/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..66ae7a4b
--- /dev/null
+++ b/LookupControlGui/My Project/AssemblyInfo.vb
@@ -0,0 +1,35 @@
+Imports System
+Imports System.Reflection
+Imports System.Runtime.InteropServices
+
+' Allgemeine Informationen über eine Assembly werden über die folgenden
+' Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
+' die einer Assembly zugeordnet sind.
+
+' Werte der Assemblyattribute überprüfen
+
+
+
+
+
+
+
+
+
+
+'Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird.
+
+
+' Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
+'
+' Hauptversion
+' Nebenversion
+' Buildnummer
+' Revision
+'
+' Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
+' übernehmen, indem Sie "*" eingeben:
+'
+
+
+
diff --git a/LookupControlGui/My Project/Resources.Designer.vb b/LookupControlGui/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..3cf88756
--- /dev/null
+++ b/LookupControlGui/My Project/Resources.Designer.vb
@@ -0,0 +1,62 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My.Resources
+
+ 'This class was auto-generated by the StronglyTypedResourceBuilder
+ 'class via a tool like ResGen or Visual Studio.
+ 'To add or remove a member, edit your .ResX file then rerun ResGen
+ 'with the /str option, or rebuild your VS project.
+ '''
+ ''' A strongly-typed resource class, for looking up localized strings, etc.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Returns the cached ResourceManager instance used by this class.
+ '''
+ _
+ Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
+ Get
+ If Object.ReferenceEquals(resourceMan, Nothing) Then
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("LookupControlGui.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Overrides the current thread's CurrentUICulture property for all
+ ''' resource lookups using this strongly typed resource class.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set(ByVal value As Global.System.Globalization.CultureInfo)
+ resourceCulture = value
+ End Set
+ End Property
+ End Module
+End Namespace
diff --git a/LookupControlGui/My Project/Resources.resx b/LookupControlGui/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/LookupControlGui/My Project/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/LookupControlGui/My Project/Settings.Designer.vb b/LookupControlGui/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..dcfe7c8c
--- /dev/null
+++ b/LookupControlGui/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' This code was generated by a tool.
+' Runtime Version:4.0.30319.42000
+'
+' Changes to this file may cause incorrect behavior and will be lost if
+' the code is regenerated.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+Namespace My
+
+ _
+ Partial Friend NotInheritable Class MySettings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
+
+#Region "My.Settings Auto-Save Functionality"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
+ If My.Application.SaveMySettingsOnExit Then
+ My.Settings.Save()
+ End If
+ End Sub
+#End If
+#End Region
+
+ Public Shared ReadOnly Property [Default]() As MySettings
+ Get
+
+#If _MyType = "WindowsForms" Then
+ If Not addedHandler Then
+ SyncLock addedHandlerLockObject
+ If Not addedHandler Then
+ AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
+ addedHandler = True
+ End If
+ End SyncLock
+ End If
+#End If
+ Return defaultInstance
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.LookupControlGui.My.MySettings
+ Get
+ Return Global.LookupControlGui.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/LookupControlGui/My Project/Settings.settings b/LookupControlGui/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/LookupControlGui/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Modules.Interfaces/ActiveDirectoryInterface.vb b/Modules.Interfaces/ActiveDirectoryInterface.vb
index 56ddbb10..bd12e115 100644
--- a/Modules.Interfaces/ActiveDirectoryInterface.vb
+++ b/Modules.Interfaces/ActiveDirectoryInterface.vb
@@ -52,8 +52,8 @@ Public Class ActiveDirectoryInterface
Dim oSyncedUsers As New List(Of ADUser)
Dim oGroupId As Int64 = Nothing
- Dim oFirebirdSync As New SyncUsers.FirebirdSync(_logConfig, _firebird)
- Dim oSQLSync As New SyncUsers.MSSQLSync(_logConfig, _mssql)
+ Dim oFirebirdSync As New SyncUsers.SyncUsersFirebird(_logConfig, _firebird)
+ Dim oSQLSync As New SyncUsers.SyncUsersMSSQL(_logConfig, _mssql)
Dim oSyncedUsersFirebird, oSyncedUsersMSSQL As List(Of ADUser)
Try
diff --git a/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb b/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb
index b15e9d4d..c772db48 100644
--- a/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb
+++ b/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.Firebird.vb
@@ -3,7 +3,7 @@ Imports DigitalData.Modules.Interfaces
Imports DigitalData.Modules.Logging
Namespace SyncUsers
- Public Class FirebirdSync
+ Public Class SyncUsersFirebird
Implements ISyncUsers
Private ReadOnly _logConfig As LogConfig
diff --git a/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.MSSQL.vb b/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.MSSQL.vb
index 7448a9b2..032a7dfc 100644
--- a/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.MSSQL.vb
+++ b/Modules.Interfaces/ActiveDirectoryInterface/SyncUsers.MSSQL.vb
@@ -2,14 +2,16 @@
Imports DigitalData.Modules.Logging
Namespace SyncUsers
- Public Class MSSQLSync
+ Public Class SyncUsersMSSQL
Implements ISyncUsers
Private _logConfig As LogConfig
Private _logger As Logger
Private _mssql As MSSQLServer
- Public Sub New(LogConfig As LogConfig, MSSQL As Database.MSSQLServer)
+ Private Const ADDED_WHO = "Active Directory Sync"
+
+ Public Sub New(LogConfig As LogConfig, MSSQL As MSSQLServer)
_logConfig = LogConfig
_logger = LogConfig.GetLogger()
_mssql = MSSQL
@@ -88,7 +90,7 @@ Namespace SyncUsers
Private Sub AddUserToGroup(UserId As Integer, GroupId As Integer) Implements ISyncUsers.AddUserToGroup
Try
- Dim oSQL As String = $"INSERT INTO TBDD_GROUPS_USER (USER_ID, GROUP_ID) VALUES ({UserId}, {GroupId})"
+ Dim oSQL As String = $"INSERT INTO TBDD_GROUPS_USER (USER_ID, GROUP_ID, ADDED_WHO) VALUES ({UserId}, {GroupId}, '{ADDED_WHO}')"
Dim oResult = _mssql.NewExecutenonQuery(oSQL)
If oResult = False Then
@@ -135,7 +137,7 @@ Namespace SyncUsers
Private Function CreateUser(User As ADUser) As Integer Implements ISyncUsers.CreateUser
Try
- Dim oSQL As String = $"INSERT INTO TBDD_USER (PRENAME, NAME, USERNAME, EMAIL) VALUES ('{User.GivenName}', '{User.Surname}', '{User.samAccountName}', '{User.Email}')"
+ Dim oSQL As String = $"INSERT INTO TBDD_USER (PRENAME, NAME, USERNAME, EMAIL, ADDED_WHO) VALUES ('{User.GivenName}', '{User.Surname}', '{User.samAccountName}', '{User.Email}', '{ADDED_WHO}')"
Dim oResult = _mssql.NewExecutenonQuery(oSQL)
If oResult = True Then
@@ -154,7 +156,7 @@ Namespace SyncUsers
Dim oCustomAttributes = User.CustomAttributes
For Each oAttribute In oCustomAttributes
- Dim oSQL As String = $"UPDATE TBDD_USER SET {oAttribute.MSSQLColumn} = '{oAttribute.Value}' WHERE GUID = {UserId}"
+ Dim oSQL As String = $"UPDATE TBDD_USER SET {oAttribute.MSSQLColumn} = '{oAttribute.Value}', CHANGED_WHO = '{ADDED_WHO}' WHERE GUID = {UserId}"
Dim oResult = _mssql.NewExecutenonQuery(oSQL)
If oResult = False Then