diff --git a/Config/ConfigManager.vb b/Config/ConfigManager.vb
deleted file mode 100644
index 0d97ca03..00000000
--- a/Config/ConfigManager.vb
+++ /dev/null
@@ -1,174 +0,0 @@
-Imports System.IO
-Imports System.Xml.Serialization
-Imports DigitalData.Modules.Logging
-
-Public Class ConfigManager(Of T)
- Private Const USER_CONFIG_NAME As String = "UserConfig.xml"
- Private Const COMPUTER_CONFIG_NAME As String = "ComputerConfig.xml"
-
- Private ReadOnly _LogConfig As LogConfig
- Private ReadOnly _Logger As Logger
- Private ReadOnly _File As Filesystem.File
- Private ReadOnly _UserPath As String
- Private ReadOnly _ComputerPath As String
- Private _CurrentDataPath As String
-
- '''
- ''' The blueprint class from which the default config is created
- '''
- Private ReadOnly _Blueprint As T
- Private ReadOnly _Serializer As XmlSerializer
-
- Public ReadOnly Property Config As T
-
-
- '''
- ''' Creates a new instance of the ConfigManager
- '''
- '''
- ''' Public Class Config
- ''' Public Property StringEntry As String = "TEST"
- ''' Public Property BoolEntry As Boolean = True
- ''' Public Property IntEntry As Integer = 123
- ''' End Class
- '''
- ''' Dim oConfigManager = New ConfigManager(Of Config)(_LogConfig, Application.UserAppDataPath, Application.CommonAppDataPath)
- '''
- ''' LogConfig instance
- ''' The first path to check for a config file, eg. AppData
- ''' The second path to check for a config file, eg. ProgramData
- Public Sub New(LogConfig As LogConfig, UserConfigPath As String, ComputerConfigPath As String)
- _LogConfig = LogConfig
- _Logger = LogConfig.GetLogger()
- _File = New Filesystem.File(_LogConfig)
-
- _UserPath = Path.Combine(UserConfigPath, USER_CONFIG_NAME)
- _ComputerPath = Path.Combine(ComputerConfigPath, COMPUTER_CONFIG_NAME)
-
- _Blueprint = Activator.CreateInstance(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)
- 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)
- 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
-
- _Config = LoadConfig()
- End Sub
-
- '''
- ''' Save the current config object to `UserConfigPath`
- '''
- Public Sub Save()
- WriteToFile(_Config, _UserPath)
- End Sub
-
- '''
- ''' First check if a user config exists and if it does, load it.
- ''' If not, check if a systemwide config exists and and if it does, load it.
- ''' Otherwise, create a user config using the default values from the supplied config class `T`
- '''
- '''
- Private Function LoadConfig() As T
- Dim oConfig As T
-
- If IO.File.Exists(_UserPath) Then
- _Logger.Debug("Loading config from UserPath: {0}", _UserPath)
- _CurrentDataPath = _UserPath
- oConfig = ReadFromFile(_UserPath)
- ElseIf IO.File.Exists(_ComputerPath) Then
- _Logger.Debug("Loading config from ComputerPath: {0}", _ComputerPath)
- _CurrentDataPath = _ComputerPath
- oConfig = ReadFromFile(_ComputerPath)
- Else
- _Logger.Debug("Creating default config in UserPath: {0}", _UserPath)
- _CurrentDataPath = _UserPath
- oConfig = Activator.CreateInstance(_Blueprint.GetType)
-
- WriteToFile(_Config, _UserPath)
- End If
-
- Return oConfig
- End Function
-
- '''
- ''' Serialize a config object to byte array
- '''
- '''
- '''
- Private Function Serialize(Data As T) As Byte()
- Try
- _Logger.Debug("Serializing config object")
-
- Using oStream = New MemoryStream()
- _Serializer.Serialize(oStream, Data)
- Return oStream.ToArray()
- End Using
- Catch ex As Exception
- _Logger.Error(ex)
- Throw ex
- End Try
- End Function
-
- '''
- ''' Write an object to disk as xml
- '''
- ''' The object to write
- ''' The file name to write to
- Private Sub WriteToFile(Data As T, Path As String)
- Try
- _Logger.Debug("Saving config to: {0}", Path)
- Dim oBytes = Serialize(Data)
-
- Using oFileStream = New FileStream(Path, FileMode.Create, FileAccess.Write)
- oFileStream.Write(oBytes, 0, oBytes.Length)
- oFileStream.Flush()
- End Using
- Catch ex As Exception
- _Logger.Error(ex)
- Throw ex
- End Try
- End Sub
-
- '''
- ''' Reads an xml from disk and deserializes to object
- '''
- '''
- Private Function ReadFromFile(Path As String) As T
- Try
- _Logger.Debug("Loading config from: {0}", Path)
- Dim oConfig As T
-
- Using oReader As New StreamReader(Path)
- 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
-
- Return oConfig
- Catch ex As Exception
- _Logger.Error(ex)
- Throw ex
- End Try
- End Function
-End Class
diff --git a/Config/SinceVersionAttribute.vb b/Config/SinceVersionAttribute.vb
deleted file mode 100644
index f3b94c7e..00000000
--- a/Config/SinceVersionAttribute.vb
+++ /dev/null
@@ -1,9 +0,0 @@
-Public Class SinceVersionAttribute
- Inherits Attribute
-
- Public Version As Version
-
- Public Sub New(Version As String)
- Me.Version = New Version(Version)
- End Sub
-End Class
\ No newline at end of file
diff --git a/LookupGrid/LookupControl.Designer.vb b/Controls.LookupGrid/LookupControl.Designer.vb
similarity index 100%
rename from LookupGrid/LookupControl.Designer.vb
rename to Controls.LookupGrid/LookupControl.Designer.vb
diff --git a/LookupGrid/LookupControl.resx b/Controls.LookupGrid/LookupControl.resx
similarity index 100%
rename from LookupGrid/LookupControl.resx
rename to Controls.LookupGrid/LookupControl.resx
diff --git a/LookupGrid/LookupControl.vb b/Controls.LookupGrid/LookupControl.vb
similarity index 100%
rename from LookupGrid/LookupControl.vb
rename to Controls.LookupGrid/LookupControl.vb
diff --git a/LookupGrid/LookupControl.vbproj b/Controls.LookupGrid/LookupControl.vbproj
similarity index 96%
rename from LookupGrid/LookupControl.vbproj
rename to Controls.LookupGrid/LookupControl.vbproj
index a5a03a59..9ebcc41b 100644
--- a/LookupGrid/LookupControl.vbproj
+++ b/Controls.LookupGrid/LookupControl.vbproj
@@ -105,9 +105,6 @@
Form
-
- Component
-
LookupControl.vb
@@ -117,7 +114,6 @@
Component
-
@@ -152,9 +148,6 @@
frmLookupGrid.vb
-
- GridLookupEditExOLD.vb
-
LookupControl.vb
diff --git a/Controls.LookupGrid/LookupControl2.vb b/Controls.LookupGrid/LookupControl2.vb
new file mode 100644
index 00000000..ea3f8de0
--- /dev/null
+++ b/Controls.LookupGrid/LookupControl2.vb
@@ -0,0 +1,139 @@
+Imports System.ComponentModel
+Imports System.Drawing
+Imports DevExpress.XtraEditors
+Imports DevExpress.XtraEditors.Drawing
+Imports DevExpress.XtraEditors.Registrator
+Imports DevExpress.XtraEditors.Repository
+Imports DevExpress.XtraEditors.ViewInfo
+Imports DevExpress.XtraEditors.Popup
+Imports DevExpress.Accessibility
+Imports DevExpress.XtraEditors.Controls
+
+
+
+
+Public Class RepositoryItemLookupControl2
+ Inherits RepositoryItemGridLookUpEdit
+
+ Shared Sub New()
+ RegisterLookupControl2()
+ End Sub
+
+ Public Const CustomEditName As String = "LookupControl2"
+
+ Public Sub New()
+
+ End Sub
+
+ Public Overrides ReadOnly Property EditorTypeName As String
+ Get
+ Return CustomEditName
+ End Get
+ End Property
+
+ Public Shared Sub RegisterLookupControl2()
+ Dim img As Image = Nothing
+ EditorRegistrationInfo.Default.Editors.Add(New EditorClassInfo(CustomEditName, GetType(LookupControl2), GetType(RepositoryItemLookupControl2), GetType(GridLookUpEditBaseViewInfo), New ButtonEditPainter(), True, img, GetType(ButtonEditAccessible)))
+ End Sub
+
+ Public Overrides Sub Assign(item As RepositoryItem)
+ BeginUpdate()
+ Try
+ MyBase.Assign(item)
+ Dim source As RepositoryItemLookupControl2 = TryCast(item, RepositoryItemLookupControl2)
+ If source Is Nothing Then
+ Return
+ End If
+ Finally
+ EndUpdate()
+ End Try
+ End Sub
+End Class
+
+
+Public Class LookupControl2
+ Inherits GridLookUpEdit
+
+ Public Property MultiSelect As Boolean
+ Public Property AllowAddNewValues As Boolean
+ Public Property PreventDuplicates As Boolean
+ Public Property DataSource As DataTable
+ Public Property SelectedValues As List(Of String)
+
+ Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm"
+ Private Const TEXT_NO_RECORDS = "Keine Datensätze ausgewählt"
+ Private Const TEXT_N_RECORDS = "{0} Datensätze ausgewählt"
+
+ Shared Sub New()
+ RepositoryItemLookupControl2.RegisterLookupControl2()
+ End Sub
+
+ Public Sub New()
+ Properties.Buttons.Add(New EditorButton() With {
+ .Kind = ButtonPredefines.Ellipsis,
+ .Tag = TAG_BUTTON_LOOKUP_FORM
+ })
+
+ AddHandler ButtonClick, AddressOf HandleButtonClick
+ AddHandler EditValueChanging, AddressOf HandleEditValueChanging
+ End Sub
+
+ Private Sub HandleEditValueChanging(sender As Object, e As ChangingEventArgs)
+ e.Cancel = True
+ End Sub
+
+ Private Sub HandleButtonClick(sender As Object, e As ButtonPressedEventArgs)
+ If e.Button.Tag <> TAG_BUTTON_LOOKUP_FORM Then
+ Exit Sub
+ End If
+
+ Dim oForm As frmLookupGrid = GetLookupForm()
+ Dim oResult = oForm.ShowDialog()
+
+ If oResult = Windows.Forms.DialogResult.OK Then
+ Dim oValues = oForm.SelectedValues
+
+ UpdateSelectedValues(oValues)
+
+ SelectedValues = oValues
+ End If
+
+ oForm.Dispose()
+ End Sub
+
+ Private Sub UpdateSelectedValues(Values As List(Of String))
+ If MultiSelect = True Then
+ Properties.DataSource = Values
+ Properties.NullText = IIf(Values.Count = 0, TEXT_NO_RECORDS, String.Format(TEXT_N_RECORDS, Values.Count))
+ Else
+ Text = Values.FirstOrDefault()
+ End If
+ End Sub
+
+ Private Function GetLookupForm() As frmLookupGrid
+ Dim oForm As New frmLookupGrid() With {
+ .MultiSelect = MultiSelect,
+ .AddNewValues = AllowAddNewValues,
+ .PreventDuplicates = PreventDuplicates,
+ .DataSource = DataSource,
+ .SelectedValues = SelectedValues,
+ .StartPosition = Windows.Forms.FormStartPosition.Manual,
+ .Location = PointToScreen(New Point(Width, 0))
+ }
+
+ Return oForm
+ End Function
+
+
+ Public Shadows ReadOnly Property Properties As RepositoryItemLookupControl2
+ Get
+ Return TryCast(MyBase.Properties, RepositoryItemLookupControl2)
+ End Get
+ End Property
+
+ Public Overrides ReadOnly Property EditorTypeName As String
+ Get
+ Return RepositoryItemLookupControl2.CustomEditName
+ End Get
+ End Property
+End Class
diff --git a/LookupGrid/LookupGridControl.Designer.vb b/Controls.LookupGrid/LookupGridControl.Designer.vb
similarity index 100%
rename from LookupGrid/LookupGridControl.Designer.vb
rename to Controls.LookupGrid/LookupGridControl.Designer.vb
diff --git a/LookupGrid/LookupGridControl.vb b/Controls.LookupGrid/LookupGridControl.vb
similarity index 100%
rename from LookupGrid/LookupGridControl.vb
rename to Controls.LookupGrid/LookupGridControl.vb
diff --git a/LookupGrid/LookupGridHandler.vb b/Controls.LookupGrid/LookupGridHandler.vb
similarity index 100%
rename from LookupGrid/LookupGridHandler.vb
rename to Controls.LookupGrid/LookupGridHandler.vb
diff --git a/LookupGrid/LookupGridRegistration.vb b/Controls.LookupGrid/LookupGridRegistration.vb
similarity index 100%
rename from LookupGrid/LookupGridRegistration.vb
rename to Controls.LookupGrid/LookupGridRegistration.vb
diff --git a/LookupGrid/LookupGridView.Designer.vb b/Controls.LookupGrid/LookupGridView.Designer.vb
similarity index 100%
rename from LookupGrid/LookupGridView.Designer.vb
rename to Controls.LookupGrid/LookupGridView.Designer.vb
diff --git a/LookupGrid/LookupGridView.vb b/Controls.LookupGrid/LookupGridView.vb
similarity index 100%
rename from LookupGrid/LookupGridView.vb
rename to Controls.LookupGrid/LookupGridView.vb
diff --git a/Config/My Project/Application.Designer.vb b/Controls.LookupGrid/My Project/Application.Designer.vb
similarity index 100%
rename from Config/My Project/Application.Designer.vb
rename to Controls.LookupGrid/My Project/Application.Designer.vb
diff --git a/Config/My Project/Application.myapp b/Controls.LookupGrid/My Project/Application.myapp
similarity index 100%
rename from Config/My Project/Application.myapp
rename to Controls.LookupGrid/My Project/Application.myapp
diff --git a/LookupGrid/My Project/AssemblyInfo.vb b/Controls.LookupGrid/My Project/AssemblyInfo.vb
similarity index 100%
rename from LookupGrid/My Project/AssemblyInfo.vb
rename to Controls.LookupGrid/My Project/AssemblyInfo.vb
diff --git a/LookupGrid/My Project/Resources.Designer.vb b/Controls.LookupGrid/My Project/Resources.Designer.vb
similarity index 100%
rename from LookupGrid/My Project/Resources.Designer.vb
rename to Controls.LookupGrid/My Project/Resources.Designer.vb
diff --git a/Config/My Project/Resources.resx b/Controls.LookupGrid/My Project/Resources.resx
similarity index 100%
rename from Config/My Project/Resources.resx
rename to Controls.LookupGrid/My Project/Resources.resx
diff --git a/LookupGrid/My Project/Settings.Designer.vb b/Controls.LookupGrid/My Project/Settings.Designer.vb
similarity index 100%
rename from LookupGrid/My Project/Settings.Designer.vb
rename to Controls.LookupGrid/My Project/Settings.Designer.vb
diff --git a/Config/My Project/Settings.settings b/Controls.LookupGrid/My Project/Settings.settings
similarity index 100%
rename from Config/My Project/Settings.settings
rename to Controls.LookupGrid/My Project/Settings.settings
diff --git a/LookupGrid/My Project/licenses.licx b/Controls.LookupGrid/My Project/licenses.licx
similarity index 100%
rename from LookupGrid/My Project/licenses.licx
rename to Controls.LookupGrid/My Project/licenses.licx
diff --git a/LookupGrid/frmLookupGrid.Designer.vb b/Controls.LookupGrid/frmLookupGrid.Designer.vb
similarity index 100%
rename from LookupGrid/frmLookupGrid.Designer.vb
rename to Controls.LookupGrid/frmLookupGrid.Designer.vb
diff --git a/LookupGrid/frmLookupGrid.resx b/Controls.LookupGrid/frmLookupGrid.resx
similarity index 100%
rename from LookupGrid/frmLookupGrid.resx
rename to Controls.LookupGrid/frmLookupGrid.resx
diff --git a/LookupGrid/frmLookupGrid.vb b/Controls.LookupGrid/frmLookupGrid.vb
similarity index 100%
rename from LookupGrid/frmLookupGrid.vb
rename to Controls.LookupGrid/frmLookupGrid.vb
diff --git a/DDMonorepo.sln b/DDMonorepo.sln
index dd0beef4..0019dc38 100644
--- a/DDMonorepo.sln
+++ b/DDMonorepo.sln
@@ -9,7 +9,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUIs", "GUIs", "{8FFE925E-8
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Setups", "Setups", "{D887B4BE-E457-4E45-8E22-D086E92DD2B7}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMDesigner", "EDMDesigner\EDMDesigner.vbproj", "{5284F4E5-A6C1-4BCF-896F-3ABEA985B741}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMDesigner", "GUIs.Test.EDMDesigner\EDMDesigner.vbproj", "{5284F4E5-A6C1-4BCF-896F-3ABEA985B741}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Logging", "Modules.Logging\Logging.vbproj", "{903B2D7D-3B80-4BE9-8713-7447B704E1B0}"
EndProject
@@ -17,7 +17,7 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Windream", "Modules.Windrea
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Services", "Services", "{7AF3F9C2-C939-4A08-95C1-0453207E298A}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestGUI", "TestGUI\TestGUI.vbproj", "{93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "TestGUI", "GUIs.Test.TestGUI\TestGUI.vbproj", "{93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Database", "Modules.Database\Database.vbproj", "{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}"
EndProject
@@ -27,11 +27,11 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDTestService", "DDTestServ
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Variables", "Variables\Variables.vbproj", "{836C9ADE-E04E-4E1E-B17A-201E68014790}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Config", "Config\Config.vbproj", "{44982F9B-6116-44E2-85D0-F39650B1EF99}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Config", "Modules.Config\Config.vbproj", "{44982F9B-6116-44E2-85D0-F39650B1EF99}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Controls", "Controls", "{F98C0329-C004-417F-B2AB-7466E88D8220}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LookupControl", "LookupGrid\LookupControl.vbproj", "{3DCD6D1A-C830-4241-B7E4-27430E7EA483}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "LookupControl", "Controls.LookupGrid\LookupControl.vbproj", "{3DCD6D1A-C830-4241-B7E4-27430E7EA483}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Filesystem", "Filesystem\Filesystem.vbproj", "{991D0231-4623-496D-8BD0-9CA906029CBC}"
EndProject
@@ -49,15 +49,15 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDZUGFeRDService", "DDZUGFe
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Interfaces", "Modules.Interfaces\Interfaces.vbproj", "{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZUGFeRDTest", "ZUGFeRDTest\ZUGFeRDTest.vbproj", "{16156434-E471-43F1-8030-76A0DA17CD5A}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ZUGFeRDTest", "GUIs.Test.ZUGFeRDTest\ZUGFeRDTest.vbproj", "{16156434-E471-43F1-8030-76A0DA17CD5A}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "Jobs", "Jobs\Jobs.vbproj", "{39EC839A-3C30-4922-A41E-6B09D1DDE5C3}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DD_CommunicationService", "DD_CommunicationService\DD_CommunicationService.vbproj", "{1FB2854F-C050-427D-9FAC-1D8F232E8025}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUI_EDMI", "GUI_EDMI\GUI_EDMI.vbproj", "{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUI_EDMI", "GUIs.Test.GUI_EDMI\GUI_EDMI.vbproj", "{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClientSuite", "EDMI_ClientSuite\ClientSuite.vbproj", "{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClientSuite", "GUIs.ClientSuite\ClientSuite.vbproj", "{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEDMService", "SERVICES\DDEDM_NetworkService\DDEDMService.vbproj", "{A8C3F298-76AB-4359-AB3C-986E313B4336}"
EndProject
@@ -67,6 +67,12 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEDMLicenseService", "DDLi
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "License", "Modules.License\License.vbproj", "{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}"
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ADSyncTest", "GUIs.Test.ADSyncTest\ADSyncTest.vbproj", "{7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}"
+EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "JobRunner", "JobRunner\JobRunner.vbproj", "{59461E98-A5AF-438C-A651-5021ACAE82AD}"
+EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "GUIs.Test", "GUIs.Test", "{CC368D6A-6AC4-4EB9-A092-14700FABEF7A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -165,15 +171,23 @@ Global
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Release|Any CPU.Build.0 = Release|Any CPU
+ {7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}.Release|Any CPU.Build.0 = Release|Any CPU
+ {59461E98-A5AF-438C-A651-5021ACAE82AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {59461E98-A5AF-438C-A651-5021ACAE82AD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {59461E98-A5AF-438C-A651-5021ACAE82AD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {59461E98-A5AF-438C-A651-5021ACAE82AD}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
- {5284F4E5-A6C1-4BCF-896F-3ABEA985B741} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
+ {5284F4E5-A6C1-4BCF-896F-3ABEA985B741} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{903B2D7D-3B80-4BE9-8713-7447B704E1B0} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{4C86DF8F-A280-40D4-85B0-10B1BF66C15C} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
- {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
+ {93130E7D-A950-4CBD-A0D9-7A6FAF94DDC0} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{AF664D85-0A4B-4BAB-A2F8-83110C06553A} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{63B0EAA3-8BF5-46DA-9040-15E781F4C3B1} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
@@ -184,15 +198,17 @@ Global
{3207D8E7-36E3-4714-9B03-7B5B3D6D351A} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{7DEEC36E-EA5F-4711-AD1E-FD8894F4AD77} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{AB6F09BF-E794-4F6A-94BB-C97C0BA84D64} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
- {16156434-E471-43F1-8030-76A0DA17CD5A} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
+ {16156434-E471-43F1-8030-76A0DA17CD5A} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{39EC839A-3C30-4922-A41E-6B09D1DDE5C3} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{1FB2854F-C050-427D-9FAC-1D8F232E8025} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
- {88EDAD5B-1B98-43E4-B068-1251E7AF01A0} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
+ {88EDAD5B-1B98-43E4-B068-1251E7AF01A0} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
{406C95F4-9FEA-45B6-8385-1768CDBBF1A7} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
{A8C3F298-76AB-4359-AB3C-986E313B4336} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{5B1171DC-FFFE-4813-A20D-786AAE47B320} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{5EBACBFA-F11A-4BBF-8D02-91461F2293ED} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
+ {7386AB04-DF8D-4DFB-809D-1FAC8212CB7E} = {CC368D6A-6AC4-4EB9-A092-14700FABEF7A}
+ {59461E98-A5AF-438C-A651-5021ACAE82AD} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}
diff --git a/DDZUGFeRDService/App.config b/DDZUGFeRDService/App.config
index a6961b43..c60c3482 100644
--- a/DDZUGFeRDService/App.config
+++ b/DDZUGFeRDService/App.config
@@ -31,8 +31,11 @@
10
-
- Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=ddd
+
+
+
+
+ False
diff --git a/DDZUGFeRDService/My Project/Settings.Designer.vb b/DDZUGFeRDService/My Project/Settings.Designer.vb
index 808abbc7..66da4ee7 100644
--- a/DDZUGFeRDService/My Project/Settings.Designer.vb
+++ b/DDZUGFeRDService/My Project/Settings.Designer.vb
@@ -119,11 +119,19 @@ Namespace My
_
- Public ReadOnly Property MSSQL_CONNECTION() As String
+ Global.System.Configuration.DefaultSettingValueAttribute("")> _
+ Public ReadOnly Property MSSQL_CONNECTIONSTRING() As String
Get
- Return CType(Me("MSSQL_CONNECTION"),String)
+ Return CType(Me("MSSQL_CONNECTIONSTRING"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property MSSQL_ENABLED() As Boolean
+ Get
+ Return CType(Me("MSSQL_ENABLED"),Boolean)
End Get
End Property
End Class
diff --git a/DDZUGFeRDService/My Project/Settings.settings b/DDZUGFeRDService/My Project/Settings.settings
index 3a3afdf8..05b0c648 100644
--- a/DDZUGFeRDService/My Project/Settings.settings
+++ b/DDZUGFeRDService/My Project/Settings.settings
@@ -23,8 +23,11 @@
10
-
- Data Source=172.24.12.41\tests;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=ddd
+
+
+
+
+ False
\ No newline at end of file
diff --git a/DDZUGFeRDService/ThreadRunner.vb b/DDZUGFeRDService/ThreadRunner.vb
index 4e8db193..3d2601b4 100644
--- a/DDZUGFeRDService/ThreadRunner.vb
+++ b/DDZUGFeRDService/ThreadRunner.vb
@@ -22,18 +22,27 @@ Public Class ThreadRunner
Private _originalEmailDirectory As String
Private _zugferd As ZUGFeRDInterface
Private _jobArguments As WorkerArgs
+ Private _mssql As MSSQLServer
Private Const TIMER_INTERVAL_MS = 10_000
- Public Sub New(LogConfig As LogConfig, Firebird As Firebird)
+ Public Sub New(LogConfig As LogConfig, Firebird As Firebird, Optional MSSQL As MSSQLServer = Nothing)
_logConfig = LogConfig
_logger = _logConfig.GetLogger()
_firebird = Firebird
_zugferd = New ZUGFeRDInterface(_logConfig)
+ _mssql = MSSQL
Dim args As New WorkerArgs()
args = LoadFolderConfig(args)
args = LoadPropertyMapFor(args, "DEFAULT")
+
+ ' Use MSSQL Server if available
+ If _mssql IsNot Nothing Then
+ _logger.Debug("Data will be inserted into MSSQL Server.")
+ args.InsertIntoSQLServer = True
+ End If
+
_jobArguments = args
_logger.Debug("Checking SuccessDirectory {0}", args.SuccessDirectory)
@@ -104,7 +113,7 @@ Public Class ThreadRunner
_logger.Debug("Background worker running..")
- Dim job As New ImportZUGFeRDFiles(_logConfig, _firebird)
+ Dim job As New ImportZUGFeRDFiles(_logConfig, _firebird, _mssql)
job.Start(args)
Catch ex As Exception
_logger.Warn("Background worker failed!")
diff --git a/DDZUGFeRDService/ZUGFeRDService.vb b/DDZUGFeRDService/ZUGFeRDService.vb
index c93dc77f..eb7070ca 100644
--- a/DDZUGFeRDService/ZUGFeRDService.vb
+++ b/DDZUGFeRDService/ZUGFeRDService.vb
@@ -1,16 +1,18 @@
Imports System.IO
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Logging.LogConfig
Public Class ZUGFeRDService
Private _logConfig As LogConfig
Private _logger As Logger
Private _firebird As Firebird
+ Private _mssql As MSSQLServer = Nothing
Private _threadRunner As ThreadRunner
Protected Overrides Sub OnStart(ByVal args() As String)
- _logConfig = New LogConfig(LogConfig.PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
+ _logConfig = New LogConfig(PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
_logConfig.Debug = True
_logger = _logConfig.GetLogger()
_logger.Info($"{My.Settings.SERVICE_NAME} is starting.")
@@ -20,14 +22,22 @@ Public Class ZUGFeRDService
Dim oUser As String = My.Settings.DB_USER
Dim oPassword As String = My.Settings.DB_PASSWORD
Dim oJobInterval As Integer = My.Settings.JOB_INTERVAL
-
- _logger.Debug("Datasource: {0}", oDataSource)
- _logger.Debug("Database: {0}", oDatabase)
+ Dim oMSSQLConnectionString As String = My.Settings.MSSQL_CONNECTIONSTRING
+ Dim oMSSQLEnabled As Boolean = My.Settings.MSSQL_ENABLED
_firebird = New Firebird(_logConfig, oDataSource, oDatabase, oUser, oPassword)
+ If oMSSQLEnabled = True Then
+ _mssql = New MSSQLServer(_logConfig, oMSSQLConnectionString)
+
+ If _mssql.DBInitialized = False Then
+ _logger.Warn("MSSQL Connection could not be initialized. Disabling MSSQL.")
+ _mssql = Nothing
+ End If
+ End If
+
Try
- _threadRunner = New ThreadRunner(_logConfig, _firebird)
+ _threadRunner = New ThreadRunner(_logConfig, _firebird, _mssql)
_threadRunner.Start(oJobInterval)
Catch ex As Exception
_logger.Error(ex)
diff --git a/EDMI_ClientSuite/FormDefaults/BaseForm.vb b/EDMI_ClientSuite/FormDefaults/BaseForm.vb
deleted file mode 100644
index d647492e..00000000
--- a/EDMI_ClientSuite/FormDefaults/BaseForm.vb
+++ /dev/null
@@ -1,43 +0,0 @@
-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
-
- Private ReadOnly _Logger As Logger
- Private ReadOnly _ErrorHandler As ClassErrorHandler
-
- Protected ReadOnly Property Logger As Logger
- Get
- Return _Logger
- End Get
- End Property
-
- Public Sub New()
- ' Get the full name of the inheriting form
- ' so the log messages have the right classname
- Dim oClassName = [GetType]().FullName
-
- ' My.LogConfig is undefined in the designer
- _Logger = My.LogConfig?.GetLogger(oClassName)
- _ErrorHandler = New ClassErrorHandler(_Logger)
-
- ' When you add something, be careful if it
- ' depends on a global var like My.LogConfig
- ' you might need to check for its existence with ?
- End Sub
-
- Public Sub ShowErrorMessage(Exception As Exception)
- _ErrorHandler.ShowErrorMessage(Exception)
- End Sub
-End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/FormDefaults/BaseRibbonForm.vb b/EDMI_ClientSuite/FormDefaults/BaseRibbonForm.vb
deleted file mode 100644
index b130bb3f..00000000
--- a/EDMI_ClientSuite/FormDefaults/BaseRibbonForm.vb
+++ /dev/null
@@ -1,60 +0,0 @@
-Imports DevExpress.XtraBars.Docking
-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
-'''
-''' Only BaseRibbonForms can have panels attached to it!
-'''
-Public Class BaseRibbonForm
- Inherits RibbonForm
-
- Private ReadOnly _Logger As Logger
- Private ReadOnly _ErrorHandler As ClassErrorHandler
-
- Protected ReadOnly Property Logger As Logger
- Get
- Return _Logger
- End Get
- End Property
-
- Public Sub New()
- ' Get the full name of the inheriting form
- ' so the log messages have the right classname
- Dim oClassName = [GetType]().FullName
-
- ' My.LogConfig is undefined in the designer
- _Logger = My.LogConfig?.GetLogger(oClassName)
- _ErrorHandler = New ClassErrorHandler(_Logger)
-
- ' When you add something, be careful if it
- ' depends on a global var like My.LogConfig
- ' you might need to check for its existence with ?
- End Sub
-
- Public Sub ShowErrorMessage(Exception As Exception)
- _ErrorHandler.ShowErrorMessage(Exception)
- End Sub
-
- '''
- ''' Returns a list of panels that will be show when the form is opened.
- ''' This can be overridden by all inheriting forms to extend the list of panels
- ''' Panels will be created by PanelManager.
- '''
- '''
- ''' A list of PanelInformation
- Public Overridable Function GetInitialPanels() As List(Of PanelInfo)
- Return New List(Of PanelInfo)
- End Function
-End Class
-
-
-
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ClassControlBuilder.vb b/EDMI_ClientSuite/FormEntityDesigner/ClassControlBuilder.vb
deleted file mode 100644
index 1998a7d6..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ClassControlBuilder.vb
+++ /dev/null
@@ -1,70 +0,0 @@
-Imports DigitalData.Controls.LookupGrid
-Imports DigitalData.GUIs.ClientSuite.ClassControlUtils
-
-Public Class ClassControlBuilder
-#Region "State"
- Private _DesignMode As Boolean
-#End Region
-
-#Region "Constants"
- Private DEFAULT_SIZE As Size = New Size(200, 27)
-
- Private DEFAULT_TEXT As String = "Unnamed Control"
-#End Region
-
- Public Sub New(DesignMode As Boolean)
- _DesignMode = DesignMode
- End Sub
-
- Private Function GetRandomControlName(Name As String)
- Return $"{Name}-{ClassUtils.ShortGUID()}"
- End Function
-
- Public Function CreateLabel() As Label
- Dim Metadata As New ControlMetadata() With {
- .Id = 4711,
- .Type = ControlType.Label
- }
-
- Dim oLabel As New Label() With {
- .Name = GetRandomControlName("Label"),
- .Text = DEFAULT_TEXT,
- .AutoSize = False,
- .Size = DEFAULT_SIZE,
- .Tag = Metadata
- }
-
- Return oLabel
- End Function
-
- Public Function CreateTextbox() As TextBox
- Dim Metadata As New ControlMetadata() With {
- .Id = 4711,
- .Type = ControlType.TextBox
- }
-
- Dim oTextbox As New TextBox() With {
- .Name = GetRandomControlName("Textbox"),
- .Size = DEFAULT_SIZE,
- .Tag = Metadata
- }
-
- Return oTextbox
- End Function
-
- Public Function CreateCombobox() As LookupControl
- Dim Metadata As New ControlMetadata() With {
- .Id = 4711,
- .Type = ControlType.Combobox
- }
-
- Dim oCombobox As New LookupControl() With {
- .Name = GetRandomControlName("Combobox"),
- .Size = DEFAULT_SIZE,
- .Tag = Metadata
- }
-
- Return oCombobox
- End Function
-
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ClassControlLocalization.vb b/EDMI_ClientSuite/FormEntityDesigner/ClassControlLocalization.vb
deleted file mode 100644
index 95ab1efc..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ClassControlLocalization.vb
+++ /dev/null
@@ -1,27 +0,0 @@
-Imports System.ComponentModel
-
-Public Class ClassControlLocalization
- Private Shared Function Lookup(key As String)
- Try
- Return My.Resources.ControlProperties.ResourceManager.GetString(key)
- Catch ex As Exception
- Return key
- End Try
- End Function
-
- Public Class LocalizedDescriptionAttribute
- Inherits DescriptionAttribute
-
- Public Sub New(key As String)
- MyBase.New(Lookup(key))
- End Sub
- End Class
-
- Public Class LocalizedCategoryAttribute
- Inherits CategoryAttribute
-
- Public Sub New(key As String)
- MyBase.New(Lookup(key))
- End Sub
- End Class
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ClassControlUtils.vb b/EDMI_ClientSuite/FormEntityDesigner/ClassControlUtils.vb
deleted file mode 100644
index 2fd6517f..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ClassControlUtils.vb
+++ /dev/null
@@ -1,14 +0,0 @@
-Public Class ClassControlUtils
- Public Enum ControlType
- Label = 0
- TextBox = 1
- Combobox = 2
- End Enum
-
- Public Class ControlMetadata
- Public Id As Integer
- Public Type As ControlType
- End Class
-
-
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb
deleted file mode 100644
index ba7e6905..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb
+++ /dev/null
@@ -1,40 +0,0 @@
-Imports System.ComponentModel
-Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
-Imports DigitalData.GUIs.ClientSuite.ClassControlUtils
-
-Namespace ControlProperties
- Public MustInherit Class ClassBaseProperties
-
-
-
- <[ReadOnly](True)>
- Public Property Id As Integer
-
-
-
- <[ReadOnly](True)>
- Public Property Type As ControlType
-
-
-
- Public Property Name As String
-
-
-
- Public Property Location As Point
-
-
-
- Public Property Size As Size
-
-
-
- Public Property Font() As Font
-
-
-
- Public Property Color() As Color
-
- End Class
-End Namespace
-
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb
deleted file mode 100644
index 8e9f2623..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb
+++ /dev/null
@@ -1,27 +0,0 @@
-Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
-
-Namespace ControlProperties
- Public MustInherit Class ClassInputProperties
- Inherits ClassBaseProperties
-
-
-
- Public Property IsRequired() As Boolean
-
-
-
- Public Property IsReadOnly() As Boolean
-
-
-
- Public Property DefaultValue() As String
-
-
-
- Public Property TabIndex() As Integer
-
-
-
- Public Property TabStop() As Boolean
- End Class
-End Namespace
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb
deleted file mode 100644
index 93dafd11..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb
+++ /dev/null
@@ -1,20 +0,0 @@
-Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
-
-Namespace ControlProperties
- Public Class ClassMultiInputProperties
- Inherits ClassInputProperties
-
- Private _static_list As String
-
-
-
- Public Property StaticList As StaticList
- Get
- Return New StaticList(_static_list)
- End Get
- Set(value As StaticList)
- _static_list = value?.Value
- End Set
- End Property
- End Class
-End Namespace
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassComboboxProperties.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassComboboxProperties.vb
deleted file mode 100644
index 996c49cb..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassComboboxProperties.vb
+++ /dev/null
@@ -1,7 +0,0 @@
-Namespace ControlProperties
- Public Class ClassComboboxProperties
- Inherits ClassMultiInputProperties
- End Class
-
-End Namespace
-
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb
deleted file mode 100644
index ffff5f5f..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb
+++ /dev/null
@@ -1,14 +0,0 @@
-Imports System.ComponentModel
-Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
-
-Namespace ControlProperties
- Public Class ClassLabelProperties
- Inherits ClassBaseProperties
-
-
-
- Public Property Caption As String
- End Class
-
-End Namespace
-
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb
deleted file mode 100644
index 6a126901..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb
+++ /dev/null
@@ -1,13 +0,0 @@
-Imports System.ComponentModel
-Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
-
-Namespace ControlProperties
- Public Class ClassTextboxProperties
- Inherits ClassInputProperties
-
-
-
-
- Public Property Multiline() As Boolean
- End Class
-End Namespace
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlSnapPanel.Designer.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlSnapPanel.Designer.vb
deleted file mode 100644
index 36e9204e..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlSnapPanel.Designer.vb
+++ /dev/null
@@ -1,47 +0,0 @@
-Partial Class ControlSnapPanel
- Inherits Panel
-
- _
- Public Sub New(ByVal container As System.ComponentModel.IContainer)
- MyClass.New()
-
- 'Erforderlich für die Unterstützung des Windows.Forms-Klassenkompositions-Designers
- If (container IsNot Nothing) Then
- container.Add(Me)
- End If
-
- End Sub
-
- _
- Public Sub New()
- MyBase.New()
-
- 'Dieser Aufruf ist für den Komponenten-Designer erforderlich.
- InitializeComponent()
-
- End Sub
-
- 'Die Komponente überschreibt den Löschvorgang zum Bereinigen der Komponentenliste.
- _
- 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 Komponenten-Designer benötigt.
- Private components As System.ComponentModel.IContainer
-
- 'Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
- 'Das Bearbeiten ist mit dem Komponenten-Designer möglich.
- 'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
- _
- Private Sub InitializeComponent()
- components = New System.ComponentModel.Container()
- End Sub
-
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlSnapPanel.vb b/EDMI_ClientSuite/FormEntityDesigner/ControlSnapPanel.vb
deleted file mode 100644
index 28807130..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlSnapPanel.vb
+++ /dev/null
@@ -1,56 +0,0 @@
-Public Class ControlSnapPanel
- Inherits Panel
-
- Private _ShowGrid As Boolean = True
- Private _GridSize As Integer = 16
-
- Private Property AutoScaleMode As AutoScaleMode
-
- Public Property GridSize As Integer
- Get
- Return _GridSize
- End Get
- Set(value As Integer)
- _GridSize = value
- Refresh()
- End Set
- End Property
-
- Public Property ShowGrid As Boolean
- Get
- Return _ShowGrid
- End Get
- Set(value As Boolean)
- _ShowGrid = value
- Refresh()
- End Set
- End Property
-
- Protected Overrides Sub OnControlAdded(e As ControlEventArgs)
- AddHandler e.Control.LocationChanged, AddressOf AlignToGrid
- AddHandler e.Control.DragDrop, AddressOf AlignToGrid
- MyBase.OnControlAdded(e)
- End Sub
-
- Protected Overrides Sub OnControlRemoved(e As ControlEventArgs)
- RemoveHandler e.Control.LocationChanged, AddressOf AlignToGrid
- RemoveHandler e.Control.DragDrop, AddressOf AlignToGrid
- MyBase.OnControlRemoved(e)
- End Sub
-
- Protected Overrides Sub OnPaint(e As PaintEventArgs)
- If _ShowGrid Then
- ControlPaint.DrawGrid(e.Graphics, ClientRectangle, New Size(_GridSize, _GridSize), BackColor)
- End If
- MyBase.OnPaint(e)
- End Sub
-
- Private Sub AlignToGrid(sender As Object, e As EventArgs)
- If _ShowGrid Then
- Dim item As Control = CType(sender, Control)
- Dim x As Integer = Math.Round(item.Left / _GridSize) * _GridSize
- Dim y As Integer = Math.Round(item.Top / _GridSize) * _GridSize
- item.Location = New Point(x, y)
- End If
- End Sub
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.Designer.vb b/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.Designer.vb
deleted file mode 100644
index fd61135c..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.Designer.vb
+++ /dev/null
@@ -1,242 +0,0 @@
-
-Partial Class frmEntityDesigner
- Inherits BaseRibbonForm
-
- '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()
- Me.components = New System.ComponentModel.Container()
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmEntityDesigner))
- Me.PanelMain = New DigitalData.GUIs.ClientSuite.ControlSnapPanel(Me.components)
- Me.TabControlMain = New DevExpress.XtraTab.XtraTabControl()
- Me.TabPageControls = New DevExpress.XtraTab.XtraTabPage()
- Me.Label1 = New System.Windows.Forms.Label()
- Me.btnCombobox = New System.Windows.Forms.Button()
- Me.btnTextbox = New System.Windows.Forms.Button()
- Me.btnLabel = New System.Windows.Forms.Button()
- Me.TabPageProperties = New DevExpress.XtraTab.XtraTabPage()
- Me.PropertyGridMain = New DevExpress.XtraVerticalGrid.PropertyGridControl()
- Me.SplitContainerControlMain = New DevExpress.XtraEditors.SplitContainerControl()
- Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
- Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
- Me.RibbonPageCategory1 = New DevExpress.XtraBars.Ribbon.RibbonPageCategory()
- Me.RibbonPage3 = New DevExpress.XtraBars.Ribbon.RibbonPage()
- Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
- Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
- Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
- CType(Me.TabControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.TabControlMain.SuspendLayout()
- Me.TabPageControls.SuspendLayout()
- Me.TabPageProperties.SuspendLayout()
- CType(Me.PropertyGridMain, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.SplitContainerControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.SplitContainerControlMain.SuspendLayout()
- CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.SuspendLayout()
- '
- 'PanelMain
- '
- Me.PanelMain.AllowDrop = True
- Me.PanelMain.Dock = System.Windows.Forms.DockStyle.Fill
- Me.PanelMain.GridSize = 8
- Me.PanelMain.Location = New System.Drawing.Point(0, 0)
- Me.PanelMain.Name = "PanelMain"
- Me.PanelMain.ShowGrid = True
- Me.PanelMain.Size = New System.Drawing.Size(808, 458)
- Me.PanelMain.TabIndex = 0
- '
- 'TabControlMain
- '
- Me.TabControlMain.Dock = System.Windows.Forms.DockStyle.Fill
- Me.TabControlMain.Location = New System.Drawing.Point(0, 0)
- Me.TabControlMain.Name = "TabControlMain"
- Me.TabControlMain.SelectedTabPage = Me.TabPageControls
- Me.TabControlMain.Size = New System.Drawing.Size(224, 458)
- Me.TabControlMain.TabIndex = 0
- Me.TabControlMain.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.TabPageControls, Me.TabPageProperties})
- '
- 'TabPageControls
- '
- Me.TabPageControls.Controls.Add(Me.Label1)
- Me.TabPageControls.Controls.Add(Me.btnCombobox)
- Me.TabPageControls.Controls.Add(Me.btnTextbox)
- Me.TabPageControls.Controls.Add(Me.btnLabel)
- Me.TabPageControls.Name = "TabPageControls"
- Me.TabPageControls.Size = New System.Drawing.Size(222, 433)
- Me.TabPageControls.Text = "Controls"
- '
- 'Label1
- '
- Me.Label1.Dock = System.Windows.Forms.DockStyle.Top
- Me.Label1.Location = New System.Drawing.Point(0, 0)
- Me.Label1.Name = "Label1"
- Me.Label1.Size = New System.Drawing.Size(222, 31)
- Me.Label1.TabIndex = 2
- Me.Label1.Text = "Ziehen Sie zum Erstellen einen Controll-Button auf das Panel"
- '
- 'btnCombobox
- '
- Me.btnCombobox.Location = New System.Drawing.Point(3, 92)
- Me.btnCombobox.Name = "btnCombobox"
- Me.btnCombobox.Size = New System.Drawing.Size(216, 23)
- Me.btnCombobox.TabIndex = 1
- Me.btnCombobox.Text = "Combobox"
- Me.btnCombobox.UseVisualStyleBackColor = True
- '
- 'btnTextbox
- '
- Me.btnTextbox.Location = New System.Drawing.Point(3, 63)
- Me.btnTextbox.Name = "btnTextbox"
- Me.btnTextbox.Size = New System.Drawing.Size(216, 23)
- Me.btnTextbox.TabIndex = 1
- Me.btnTextbox.Text = "Textbox"
- Me.btnTextbox.UseVisualStyleBackColor = True
- '
- 'btnLabel
- '
- Me.btnLabel.Location = New System.Drawing.Point(3, 34)
- Me.btnLabel.Name = "btnLabel"
- Me.btnLabel.Size = New System.Drawing.Size(216, 23)
- Me.btnLabel.TabIndex = 0
- Me.btnLabel.Text = "Label"
- Me.btnLabel.UseVisualStyleBackColor = True
- '
- 'TabPageProperties
- '
- Me.TabPageProperties.Controls.Add(Me.PropertyGridMain)
- Me.TabPageProperties.Name = "TabPageProperties"
- Me.TabPageProperties.Size = New System.Drawing.Size(222, 258)
- Me.TabPageProperties.Text = "Properties"
- '
- 'PropertyGridMain
- '
- Me.PropertyGridMain.Dock = System.Windows.Forms.DockStyle.Fill
- Me.PropertyGridMain.Location = New System.Drawing.Point(0, 0)
- Me.PropertyGridMain.Name = "PropertyGridMain"
- Me.PropertyGridMain.Size = New System.Drawing.Size(222, 258)
- Me.PropertyGridMain.TabIndex = 0
- '
- 'SplitContainerControlMain
- '
- Me.SplitContainerControlMain.Dock = System.Windows.Forms.DockStyle.Fill
- Me.SplitContainerControlMain.FixedPanel = DevExpress.XtraEditors.SplitFixedPanel.Panel2
- Me.SplitContainerControlMain.Location = New System.Drawing.Point(0, 146)
- Me.SplitContainerControlMain.Name = "SplitContainerControlMain"
- Me.SplitContainerControlMain.Panel1.Controls.Add(Me.PanelMain)
- Me.SplitContainerControlMain.Panel1.Text = "Panel1"
- Me.SplitContainerControlMain.Panel2.Controls.Add(Me.TabControlMain)
- Me.SplitContainerControlMain.Panel2.Text = "Panel2"
- Me.SplitContainerControlMain.Size = New System.Drawing.Size(1044, 458)
- Me.SplitContainerControlMain.SplitterPosition = 224
- Me.SplitContainerControlMain.TabIndex = 1
- Me.SplitContainerControlMain.Text = "SplitContainerControl1"
- '
- 'RibbonControl1
- '
- Me.RibbonControl1.ExpandCollapseItem.Id = 0
- Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonItem1})
- Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
- 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(1044, 146)
- Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
- '
- 'BarButtonItem1
- '
- Me.BarButtonItem1.Caption = "Control Löschen"
- 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"
- '
- 'RibbonPageCategory1
- '
- Me.RibbonPageCategory1.Name = "RibbonPageCategory1"
- Me.RibbonPageCategory1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage3})
- Me.RibbonPageCategory1.Text = "Entitäten Designer"
- '
- 'RibbonPage3
- '
- Me.RibbonPage3.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3})
- Me.RibbonPage3.Name = "RibbonPage3"
- Me.RibbonPage3.Text = "Aktionen"
- '
- 'RibbonPageGroup3
- '
- Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem1)
- Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
- Me.RibbonPageGroup3.Text = "Aktionen"
- '
- 'RibbonStatusBar1
- '
- Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 604)
- Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
- Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
- Me.RibbonStatusBar1.Size = New System.Drawing.Size(1044, 21)
- '
- 'RibbonPage2
- '
- Me.RibbonPage2.Name = "RibbonPage2"
- Me.RibbonPage2.Text = "RibbonPage2"
- '
- 'frmEntityDesigner
- '
- Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
- Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(1044, 625)
- Me.Controls.Add(Me.SplitContainerControlMain)
- Me.Controls.Add(Me.RibbonStatusBar1)
- Me.Controls.Add(Me.RibbonControl1)
- Me.Name = "frmEntityDesigner"
- Me.Ribbon = Me.RibbonControl1
- Me.StatusBar = Me.RibbonStatusBar1
- Me.Text = "Entitäten Designer"
- CType(Me.TabControlMain, System.ComponentModel.ISupportInitialize).EndInit()
- Me.TabControlMain.ResumeLayout(False)
- Me.TabPageControls.ResumeLayout(False)
- Me.TabPageProperties.ResumeLayout(False)
- CType(Me.PropertyGridMain, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.SplitContainerControlMain, System.ComponentModel.ISupportInitialize).EndInit()
- Me.SplitContainerControlMain.ResumeLayout(False)
- CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
- Me.ResumeLayout(False)
- Me.PerformLayout()
-
- End Sub
- Friend WithEvents TabControlMain As DevExpress.XtraTab.XtraTabControl
- Friend WithEvents TabPageProperties As DevExpress.XtraTab.XtraTabPage
- Friend WithEvents PropertyGridMain As DevExpress.XtraVerticalGrid.PropertyGridControl
- Friend WithEvents TabPageControls As DevExpress.XtraTab.XtraTabPage
- Friend WithEvents PanelMain As ControlSnapPanel
- Friend WithEvents btnTextbox As Button
- Friend WithEvents btnLabel As Button
- Friend WithEvents SplitContainerControlMain As DevExpress.XtraEditors.SplitContainerControl
- Friend WithEvents btnCombobox As Button
- Friend WithEvents Label1 As Label
- Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
- Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
- Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
- Friend WithEvents RibbonPageCategory1 As DevExpress.XtraBars.Ribbon.RibbonPageCategory
- Friend WithEvents RibbonPage3 As DevExpress.XtraBars.Ribbon.RibbonPage
- Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
- Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.vb b/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.vb
deleted file mode 100644
index 01632f45..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.vb
+++ /dev/null
@@ -1,258 +0,0 @@
-Imports System.ComponentModel
-Imports DevExpress.XtraEditors.Repository
-Imports DevExpress.XtraVerticalGrid
-Imports DigitalData.GUIs.ClientSuite.ClassControlUtils
-Imports DigitalData.GUIs.ClientSuite.ControlProperties
-
-Public Class frmEntityDesigner
- Private _IsMouseDown As Boolean = False
- Private _IsMouseMoving As Boolean = False
-
- Private _BeginPosition As Point = Nothing
- Private _EndPosition As Point = Nothing
- Private _LastCursorPosition As Point = Nothing
-
- Private _CurrentControl As Control = Nothing
- Private _ControlBuilder As ClassControlBuilder = Nothing
-
- Private _DragDropButtonList As New List(Of Button)
-
- Private Sub frmEntityDesigner_Load(sender As Object, e As EventArgs) Handles Me.Load
- ' Assign Control Types to DragDrop Buttons
- btnLabel.Tag = ControlType.Label
- btnTextbox.Tag = ControlType.TextBox
- btnCombobox.Tag = ControlType.Combobox
-
- ' Add Default Editors for certain datatypes in the PropertyGrid
- Dim oColorEditor = New RepositoryItemColorEdit()
- Dim oBooleanEditor = New RepositoryItemCheckEdit()
-
- PropertyGridMain.DefaultEditors.Add(GetType(Color), oColorEditor)
- PropertyGridMain.DefaultEditors.Add(GetType(Boolean), oBooleanEditor)
-
- ' Create the control builder
- _ControlBuilder = New ClassControlBuilder(DesignMode:=True)
-
- ' Create a list of all DragDrop buttons
- _DragDropButtonList.Add(btnLabel)
- _DragDropButtonList.Add(btnTextbox)
- _DragDropButtonList.Add(btnCombobox)
-
- ' Add EventHandlers for each button
- For Each oButton As Button In _DragDropButtonList
- AddHandler oButton.MouseDown, AddressOf DragDropButton_MouseDown
- AddHandler oButton.MouseMove, AddressOf DragDropButton_MouseMove
- Next
- End Sub
-
-#Region "Control Buttons Events"
- Private Sub DragDropButton_MouseDown(sender As Object, e As MouseEventArgs)
- _IsMouseDown = True
- End Sub
-
- Private Sub DragDropButton_MouseMove(sender As Button, e As MouseEventArgs)
- If _IsMouseDown Then
- Dim oButton = sender
- Dim oType As ControlType = oButton.Tag
-
- oButton.DoDragDrop(oType.ToString, DragDropEffects.Copy)
- End If
- End Sub
-
- Private Sub SnapPanelMain_DragEnter(sender As Object, e As DragEventArgs) Handles PanelMain.DragEnter
- If (e.Data.GetDataPresent(DataFormats.Text)) Then
- e.Effect = DragDropEffects.Copy
- Else
- e.Effect = DragDropEffects.None
- End If
- End Sub
-
- Private Sub SnapPanelMain_DragDrop(sender As Object, e As DragEventArgs) Handles PanelMain.DragDrop
- Dim data As String = e.Data.GetData(DataFormats.Text)
- Dim type = ClassUtils.ToEnum(Of ClassControlUtils.ControlType)(data)
-
- HandleDragDrop(type)
- End Sub
-#End Region
-
-#Region "Control Events"
- Private Sub Control_MouseDown(sender As Control, e As MouseEventArgs)
- If e.Button = MouseButtons.Left Then
- _CurrentControl = sender
- _BeginPosition = e.Location
-
- ' Set the mode flag to signal the MouseMove event handler that it
- ' needs to now calculate new positions for our control
- _IsMouseMoving = True
- End If
- End Sub
-
- Private Sub Control_MouseMove(sender As Object, e As MouseEventArgs)
- If _CurrentControl Is Nothing Or Not _IsMouseMoving Then
- Exit Sub
- End If
-
- Cursor = Cursors.Hand
-
- Dim oCursorPosition As Point = PanelMain.PointToClient(Cursor.Position)
- Dim oNewPosition As New Point(oCursorPosition.X - _BeginPosition.X, oCursorPosition.Y - _BeginPosition.Y)
-
- ' If control will be moved out the of bounds of the panel at TOP/LEFT side, exit.
- If oNewPosition.X < 0 Or oNewPosition.Y < 0 Then
- Exit Sub
- End If
-
- _CurrentControl.Location = oNewPosition
- End Sub
-
- Private Sub Control_MouseUp(sender As Object, e As MouseEventArgs)
- If Not _IsMouseMoving Then
- Exit Sub
- End If
-
- _IsMouseMoving = False
- _EndPosition = e.Location
-
- Cursor = Cursors.Default
- End Sub
-
- Private Sub Control_MouseClick(sender As Control, e As MouseEventArgs)
- TabControlMain.SelectedTabPage = TabPageProperties
- HandleLoadProperties(sender)
- End Sub
-
- Private Sub Control_MouseEnter(sender As Control, e As EventArgs)
- Cursor = Cursors.Hand
- End Sub
-
- Private Sub Control_MouseLeave(sender As Control, e As EventArgs)
- Cursor = Cursors.Default
- End Sub
-
- Private Sub SetEventHandlers(Control As Control)
- AddHandler Control.MouseDown, AddressOf Control_MouseDown
- AddHandler Control.MouseMove, AddressOf Control_MouseMove
- AddHandler Control.MouseUp, AddressOf Control_MouseUp
- AddHandler Control.MouseClick, AddressOf Control_MouseClick
- AddHandler Control.MouseEnter, AddressOf Control_MouseEnter
- AddHandler Control.MouseLeave, AddressOf Control_MouseLeave
- End Sub
-#End Region
-
- Private Sub HandleLoadProperties(Control As Control)
- Dim oMetadata As ControlMetadata = Control.Tag
- Dim oType = oMetadata.Type
- Dim oProps As ClassBaseProperties = Nothing
-
- Select Case oType
- Case ControlType.Label
- oProps = New ClassLabelProperties With {
- .Id = oMetadata.Id,
- .Name = Control.Name,
- .Type = oType,
- .Location = Control.Location,
- .Size = Control.Size,
- .Font = Control.Font,
- .Color = Control.ForeColor,
- .Caption = Control.Text
- }
- Case ControlType.TextBox
- oProps = New ClassTextboxProperties With {
- .Id = oMetadata.Id,
- .Name = Control.Name,
- .Type = oType,
- .Location = Control.Location,
- .Size = Control.Size,
- .Font = Control.Font,
- .Color = ForeColor,
- .IsReadOnly = False,
- .IsRequired = False,
- .Multiline = False,
- .TabIndex = 0,
- .TabStop = 1,
- .DefaultValue = ""
- }
- Case ControlType.Combobox
- oProps = New ClassComboboxProperties() With {
- .Id = oMetadata.Id,
- .Name = Control.Name,
- .Type = oType,
- .Location = Control.Location,
- .Size = Control.Size,
- .Font = Control.Font,
- .Color = ForeColor,
- .IsReadOnly = False,
- .IsRequired = False,
- .TabIndex = 0,
- .TabStop = 1,
- .DefaultValue = "",
- .StaticList = New StaticList()
- }
- Case Else
- Exit Sub
- End Select
-
- PropertyGridMain.SelectedObject = oProps
- End Sub
-
- Private Sub HandleDragDrop(type As ControlType)
- Dim oCursorPosition As Point = PanelMain.PointToClient(Cursor.Position)
- Dim oControl As Control = Nothing
-
- Select Case type
- Case ControlType.Label
- oControl = _ControlBuilder.CreateLabel()
- Case ControlType.TextBox
- oControl = _ControlBuilder.CreateTextbox()
- Case ControlType.Combobox
- oControl = _ControlBuilder.CreateCombobox()
- Case Else
- MsgBox($"Unknown Control Type {type.ToString}")
- Exit Sub
- End Select
-
- ' Set Location to current cursor position
- oControl.Location = oCursorPosition
-
- ' Attach Eventhandlers
- SetEventHandlers(oControl)
-
- ' Add the control to the panel
- PanelMain.Controls.Add(oControl)
- End Sub
-
- Private Sub PropertyGridMain_RowChanged(sender As Object, e As DevExpress.XtraVerticalGrid.Events.RowChangedEventArgs) Handles PropertyGridMain.RowChanged
- If e.ChangeType <> RowChangeTypeEnum.Value Then
- Exit Sub
- End If
-
- Dim oPropertyName As String = e.Properties.FieldName
- Dim oPropertyValue = e.Properties.Value
-
-
- Select Case oPropertyName
- Case "Name"
- _CurrentControl.Name = oPropertyValue
- Case "Location"
- _CurrentControl.Location = oPropertyValue
- Case "X"
- _CurrentControl.Location = New Point(oPropertyValue, _CurrentControl.Location.Y)
- Case "Y"
- _CurrentControl.Location = New Point(_CurrentControl.Location.X, oPropertyValue)
- Case "Size"
- _CurrentControl.Size = oPropertyValue
- Case "Width"
- _CurrentControl.Size = New Size(oPropertyValue, _CurrentControl.Height)
- Case "Height"
- _CurrentControl.Size = New Size(_CurrentControl.Width, oPropertyValue)
- Case "Font"
- _CurrentControl.Font = oPropertyValue
- Case "Color"
- _CurrentControl.ForeColor = oPropertyValue
- Case "Caption"
- If TypeOf _CurrentControl Is Label Then
- _CurrentControl.Text = oPropertyValue
- End If
- End Select
- End Sub
-End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.Designer.vb b/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.Designer.vb
deleted file mode 100644
index 7ab76bce..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.Designer.vb
+++ /dev/null
@@ -1,158 +0,0 @@
- _
-Partial Class frmFormDesigner
- Inherits BaseRibbonForm
-
- 'Form overrides dispose to clean up the component list.
- _
- Protected Overrides Sub Dispose(ByVal disposing As Boolean)
- If disposing AndAlso components IsNot Nothing Then
- components.Dispose()
- End If
- MyBase.Dispose(disposing)
- End Sub
-
- 'Required by the Windows Form Designer
- Private components As System.ComponentModel.IContainer
-
- 'NOTE: The following procedure is required by the Windows Form Designer
- 'It can be modified using the Windows Form Designer.
- 'Do not modify it using the code editor.
- _
- Private Sub InitializeComponent()
- Me.components = New System.ComponentModel.Container()
- Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
- Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
- Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
- Me.LayoutControlMain = New DevExpress.XtraLayout.LayoutControl()
- Me.LayoutControlGroupMain = New DevExpress.XtraLayout.LayoutControlGroup()
- Me.ToolboxControl1 = New DevExpress.XtraToolbox.ToolboxControl()
- Me.ToolboxGroup1 = New DevExpress.XtraToolbox.ToolboxGroup()
- Me.ToolboxItemTextbox = New DevExpress.XtraToolbox.ToolboxItem()
- Me.ToolboxItemMemo = New DevExpress.XtraToolbox.ToolboxItem()
- Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
- Me.ToolboxItem1 = New DevExpress.XtraToolbox.ToolboxItem()
- CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.LayoutControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.LayoutControlGroupMain, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.SuspendLayout()
- '
- 'RibbonControl
- '
- Me.RibbonControl.ExpandCollapseItem.Id = 0
- Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem})
- Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
- Me.RibbonControl.MaxItemId = 1
- Me.RibbonControl.Name = "RibbonControl"
- Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
- Me.RibbonControl.Size = New System.Drawing.Size(870, 146)
- Me.RibbonControl.StatusBar = Me.RibbonStatusBar
- '
- 'RibbonPage1
- '
- Me.RibbonPage1.Name = "RibbonPage1"
- Me.RibbonPage1.Text = "RibbonPage1"
- '
- 'RibbonStatusBar
- '
- Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 508)
- Me.RibbonStatusBar.Name = "RibbonStatusBar"
- Me.RibbonStatusBar.Ribbon = Me.RibbonControl
- Me.RibbonStatusBar.Size = New System.Drawing.Size(870, 21)
- '
- 'LayoutControlMain
- '
- Me.LayoutControlMain.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
- Me.LayoutControlMain.Dock = System.Windows.Forms.DockStyle.Fill
- Me.LayoutControlMain.Location = New System.Drawing.Point(0, 146)
- Me.LayoutControlMain.Name = "LayoutControlMain"
- Me.LayoutControlMain.Root = Me.LayoutControlGroupMain
- Me.LayoutControlMain.Size = New System.Drawing.Size(658, 362)
- Me.LayoutControlMain.TabIndex = 2
- Me.LayoutControlMain.Text = "LayoutControl1"
- '
- 'LayoutControlGroupMain
- '
- Me.LayoutControlGroupMain.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
- Me.LayoutControlGroupMain.GroupBordersVisible = False
- Me.LayoutControlGroupMain.Name = "LayoutControlGroupMain"
- Me.LayoutControlGroupMain.Size = New System.Drawing.Size(658, 362)
- Me.LayoutControlGroupMain.TextVisible = False
- '
- 'ToolboxControl1
- '
- Me.ToolboxControl1.Caption = "Form Controls"
- Me.ToolboxControl1.Dock = System.Windows.Forms.DockStyle.Right
- Me.ToolboxControl1.Groups.Add(Me.ToolboxGroup1)
- Me.ToolboxControl1.Location = New System.Drawing.Point(658, 146)
- Me.ToolboxControl1.Name = "ToolboxControl1"
- Me.ToolboxControl1.OptionsView.ShowMenuButton = False
- Me.ToolboxControl1.OptionsView.ShowToolboxCaption = True
- Me.ToolboxControl1.Size = New System.Drawing.Size(212, 362)
- Me.ToolboxControl1.TabIndex = 4
- Me.ToolboxControl1.Text = "Form Controls"
- '
- 'ToolboxGroup1
- '
- Me.ToolboxGroup1.BeginGroupCaption = ""
- Me.ToolboxGroup1.Caption = "ToolboxGroup1"
- Me.ToolboxGroup1.Items.Add(Me.ToolboxItemTextbox)
- Me.ToolboxGroup1.Items.Add(Me.ToolboxItemMemo)
- Me.ToolboxGroup1.Items.Add(Me.ToolboxItem1)
- Me.ToolboxGroup1.Name = "ToolboxGroup1"
- '
- 'ToolboxItemTextbox
- '
- Me.ToolboxItemTextbox.BeginGroupCaption = Nothing
- Me.ToolboxItemTextbox.Caption = "Textbox"
- Me.ToolboxItemTextbox.Name = "ToolboxItemTextbox"
- '
- 'ToolboxItemMemo
- '
- Me.ToolboxItemMemo.BeginGroupCaption = Nothing
- Me.ToolboxItemMemo.Caption = "Multiline Textbox"
- Me.ToolboxItemMemo.Name = "ToolboxItemMemo"
- '
- 'RibbonPageGroup1
- '
- Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
- Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
- '
- 'ToolboxItem1
- '
- Me.ToolboxItem1.BeginGroupCaption = Nothing
- Me.ToolboxItem1.Caption = "ToolboxItem1"
- Me.ToolboxItem1.Name = "ToolboxItem1"
- '
- 'frmFormDesigner
- '
- Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
- Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(870, 529)
- Me.Controls.Add(Me.LayoutControlMain)
- Me.Controls.Add(Me.ToolboxControl1)
- Me.Controls.Add(Me.RibbonStatusBar)
- Me.Controls.Add(Me.RibbonControl)
- Me.Name = "frmFormDesigner"
- Me.Ribbon = Me.RibbonControl
- Me.StatusBar = Me.RibbonStatusBar
- Me.Text = "frmFormDesigner"
- CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.LayoutControlMain, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.LayoutControlGroupMain, System.ComponentModel.ISupportInitialize).EndInit()
- Me.ResumeLayout(False)
- Me.PerformLayout()
-
- End Sub
-
- Friend WithEvents RibbonControl As DevExpress.XtraBars.Ribbon.RibbonControl
- Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
- Friend WithEvents RibbonStatusBar As DevExpress.XtraBars.Ribbon.RibbonStatusBar
- Friend WithEvents LayoutControlMain As DevExpress.XtraLayout.LayoutControl
- Friend WithEvents LayoutControlGroupMain As DevExpress.XtraLayout.LayoutControlGroup
- Friend WithEvents ToolboxControl1 As DevExpress.XtraToolbox.ToolboxControl
- Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
- Friend WithEvents ToolboxGroup1 As DevExpress.XtraToolbox.ToolboxGroup
- Friend WithEvents ToolboxItemTextbox As DevExpress.XtraToolbox.ToolboxItem
- Friend WithEvents ToolboxItemMemo As DevExpress.XtraToolbox.ToolboxItem
- Friend WithEvents ToolboxItem1 As DevExpress.XtraToolbox.ToolboxItem
-End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.vb b/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.vb
deleted file mode 100644
index 4b287a52..00000000
--- a/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.vb
+++ /dev/null
@@ -1,68 +0,0 @@
-Imports DevExpress.XtraEditors
-Imports DevExpress.XtraLayout
-
-Public Class frmFormDesigner
- Private Const CONTROL_TEXTEDIT = "TextBox"
- Private Const CONTROL_MEMOEDIT = "Memoedit"
- Private Const CONTROL_COMBOEDIT = "Combobox"
- Private Const CONTROL_CHECKEDIT = "Checkbox"
- Private Const CONTROL_RADIOEDIT = "Radiobutton"
- Private Const CONTROL_DATEEDIT = "Datepicker"
-
- Private Sub frmFormDesigner_Load(sender As Object, e As EventArgs) Handles MyBase.Load
-
- Dim oFormId As Int64 = 104
-
- My.Channel.CreateDatabaseRequest("Load Controls", True)
-
- Dim oSQL As String = $"SELECT * FROM VWICM_FORMCONTROL WHERE FORMID = {oFormId}"
- Dim oResult = My.Channel.ReturnDatatable(oSQL)
- Dim oTable = oResult.Table
-
- If Not oResult.OK Then
- ShowErrorMessage(New ApplicationException(oResult.ErrorMessage))
- End If
-
- My.Channel.CloseDatabaseRequest()
-
- LoadControls(oTable)
- End Sub
-
- Private Sub LoadControls(Datatable As DataTable)
- For Each oRow As DataRow In Datatable.Rows
-
- Dim oEditor As BaseEdit = Nothing
- Dim oCaption As String = oRow.Item("COLNAME")
- Dim oControlType As String = oRow.Item("CTRLTYPE")
- Dim oControlId As String = oRow.Item("RECORD_ID").ToString
-
- Select Case oControlType
- Case CONTROL_TEXTEDIT
- Dim oTextEdit As New TextEdit() With {.Name = oControlId}
- oEditor = oTextEdit
- Case CONTROL_MEMOEDIT
- Dim oMemoEdit As New MemoEdit() With {.Name = oControlId}
- oEditor = oMemoEdit
- Case CONTROL_DATEEDIT
- Dim oDateEdit As New DateEdit() With {.Name = oControlId}
- oEditor = oDateEdit
- Case CONTROL_CHECKEDIT
- Dim oCheckEdit As New CheckEdit() With {.Name = oControlId}
- oEditor = oCheckEdit
- Case CONTROL_COMBOEDIT
- Dim oComboEdit As New ComboBoxEdit() With {.Name = oControlId}
- oEditor = oComboEdit
- Case Else
-
- End Select
-
- If oEditor Is Nothing Then
- Continue For
- End If
-
- LayoutControlGroupMain.AddItem(oCaption, oEditor)
- Next
-
- LayoutControlGroupMain.AddItem(New EmptySpaceItem())
- End Sub
-End Class
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.DocumentResult.datasource b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.DocumentResult.datasource
similarity index 65%
rename from EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.DocumentResult.datasource
rename to EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.DocumentResult.datasource
index f6bab7be..7c84b32e 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.DocumentResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.DocumentResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.DocumentResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ DigitalData.Modules.EDMIAPI.EDMIServiceReference.DocumentResult
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.IndexResult.datasource b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.IndexResult.datasource
similarity index 66%
rename from EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.IndexResult.datasource
rename to EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.IndexResult.datasource
index 2a2da06e..00a7860a 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.IndexResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.IndexResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.IndexResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ DigitalData.Modules.EDMIAPI.EDMIServiceReference.IndexResult
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult.datasource b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.NonQueryResult.datasource
similarity index 65%
rename from EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult.datasource
rename to EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.NonQueryResult.datasource
index f729e1d8..6380297c 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.NonQueryResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ DigitalData.Modules.EDMIAPI.EDMIServiceReference.NonQueryResult
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult.datasource b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.ScalarResult.datasource
similarity index 66%
rename from EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult.datasource
rename to EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.ScalarResult.datasource
index 7a412454..d2434d7c 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.ScalarResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ DigitalData.Modules.EDMIAPI.EDMIServiceReference.ScalarResult
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult.datasource b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.TableResult.datasource
similarity index 66%
rename from EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult.datasource
rename to EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.TableResult.datasource
index afc8fe42..54940eb0 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIAPI.EDMIServiceReference.TableResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
+ DigitalData.Modules.EDMIAPI.EDMIServiceReference.TableResult
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Document.vb b/EDMI_FILE_OPs/Document.vb
index 6224a3c5..bcb4fcab 100644
--- a/EDMI_FILE_OPs/Document.vb
+++ b/EDMI_FILE_OPs/Document.vb
@@ -1,5 +1,5 @@
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.Modules.EDMIAPI.EDMIServiceReference
Imports System.ServiceModel
Imports System.IO
diff --git a/EDMI_FILE_OPs/EDMIAPI.vbproj b/EDMI_FILE_OPs/EDMIAPI.vbproj
index 5cbfc34f..262e4784 100644
--- a/EDMI_FILE_OPs/EDMIAPI.vbproj
+++ b/EDMI_FILE_OPs/EDMIAPI.vbproj
@@ -6,8 +6,8 @@
AnyCPU
{5B1171DC-FFFE-4813-A20D-786AAE47B320}
Library
- DigitalData.Modules.EDMIFileOps
- DigitalData.Modules.EDMIFileOps
+ DigitalData.Modules.EDMIAPI
+ DigitalData.Modules.EDMIAPI
512
Windows
v4.6.1
@@ -18,7 +18,7 @@
true
true
bin\Debug\
- DigitalData.Modules.EDMIFileOps.xml
+ DigitalData.Modules.EDMIAPI.xml
42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
@@ -27,7 +27,7 @@
true
true
bin\Release\
- DigitalData.Modules.EDMIFileOps.xml
+ DigitalData.Modules.EDMIAPI.xml
42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
@@ -106,19 +106,19 @@
-
+
Reference.svcmap
-
+
Reference.svcmap
-
+
Reference.svcmap
-
+
Reference.svcmap
-
+
Reference.svcmap
diff --git a/EDMI_FILE_OPs/My Project/Resources.Designer.vb b/EDMI_FILE_OPs/My Project/Resources.Designer.vb
index 89eb3db3..d44fe572 100644
--- a/EDMI_FILE_OPs/My Project/Resources.Designer.vb
+++ b/EDMI_FILE_OPs/My Project/Resources.Designer.vb
@@ -39,7 +39,7 @@ Namespace My.Resources
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("DigitalData.Modules.EDMIFileOps.Resources", GetType(Resources).Assembly)
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.Modules.EDMIAPI.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
diff --git a/EDMI_FILE_OPs/My Project/Settings.Designer.vb b/EDMI_FILE_OPs/My Project/Settings.Designer.vb
index b45a0ad8..9950efab 100644
--- a/EDMI_FILE_OPs/My Project/Settings.Designer.vb
+++ b/EDMI_FILE_OPs/My Project/Settings.Designer.vb
@@ -64,9 +64,9 @@ Namespace My
Friend Module MySettingsProperty
_
- Friend ReadOnly Property Settings() As Global.DigitalData.Modules.EDMIFileOps.My.MySettings
+ Friend ReadOnly Property Settings() As Global.DigitalData.Modules.EDMIAPI.My.MySettings
Get
- Return Global.DigitalData.Modules.EDMIFileOps.My.MySettings.Default
+ Return Global.DigitalData.Modules.EDMIAPI.My.MySettings.Default
End Get
End Property
End Module
diff --git a/EDMI_ClientSuite/App.config b/GUIs.ClientSuite/App.config
similarity index 100%
rename from EDMI_ClientSuite/App.config
rename to GUIs.ClientSuite/App.config
diff --git a/EDMI_ClientSuite/ApplicationEvents.vb b/GUIs.ClientSuite/ApplicationEvents.vb
similarity index 66%
rename from EDMI_ClientSuite/ApplicationEvents.vb
rename to GUIs.ClientSuite/ApplicationEvents.vb
index fec512bb..c581efb4 100644
--- a/EDMI_ClientSuite/ApplicationEvents.vb
+++ b/GUIs.ClientSuite/ApplicationEvents.vb
@@ -12,14 +12,20 @@ Namespace My
Partial Friend Class MyApplication
Private _Logger As Logger
+ Private _BaseUserConfigPath As String = Windows.Forms.Application.UserAppDataPath
+ Private _BaseMachineConfigPath As String = Windows.Forms.Application.CommonAppDataPath
+
Public Sub App_Startup() Handles Me.Startup
Dim oLogConfig As New LogConfig(PathType.AppData)
- ' TODO: WHERE SHOULD CONFIG BE SAVED? LOCAL/ROAMING
- Dim oUIConfigPAth = IO.Path.Combine(Windows.Forms.Application.UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
+ ' System Config files like Service Url will be saved in %LocalAppdata% so they will remain on the machine
+ Dim oSystemConfigManager As New ConfigManager(Of ClassConfig)(oLogConfig,
+ Windows.Forms.Application.UserAppDataPath,
+ Windows.Forms.Application.CommonAppDataPath)
- Dim oSystemConfigManager As New ConfigManager(Of ClassConfig)(oLogConfig, Windows.Forms.Application.UserAppDataPath, Windows.Forms.Application.CommonAppDataPath)
- Dim oUIConfigManager As New ConfigManager(Of ClassUIConfig)(oLogConfig, oUIConfigPAth, oUIConfigPAth)
+ ' Layout files will be saved in %Appdata% (Roaming) so they will be syncronized with the user profile
+ Dim oUIConfigPath = IO.Path.Combine(Windows.Forms.Application.UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
+ Dim oUIConfigManager As New ConfigManager(Of ClassUIConfig)(oLogConfig, oUIConfigPath, oUIConfigPath)
LogConfig = oLogConfig
SystemConfigManager = oSystemConfigManager
diff --git a/GUIs.ClientSuite/Base/BaseClass.vb b/GUIs.ClientSuite/Base/BaseClass.vb
new file mode 100644
index 00000000..73c5d141
--- /dev/null
+++ b/GUIs.ClientSuite/Base/BaseClass.vb
@@ -0,0 +1,22 @@
+Imports DigitalData.Modules.Logging
+
+
+Namespace Base
+ '''
+ ''' Base Class which supplies a Logger/LogConfig
+ '''
+ Public Class BaseClass
+ Protected LogConfig As LogConfig
+ Protected Logger As Logger
+
+ Public Sub New(LogConfig As LogConfig)
+ Dim oClassName = Me.GetType().Name
+
+ Me.LogConfig = LogConfig
+ Me.Logger = LogConfig.GetLogger(oClassName)
+ End Sub
+ End Class
+End Namespace
+
+
+
diff --git a/EDMDesigner/FrmNewTable.resx b/GUIs.ClientSuite/Base/BaseForm.resx
similarity index 100%
rename from EDMDesigner/FrmNewTable.resx
rename to GUIs.ClientSuite/Base/BaseForm.resx
diff --git a/GUIs.ClientSuite/Base/BaseForm.vb b/GUIs.ClientSuite/Base/BaseForm.vb
new file mode 100644
index 00000000..8bde5fd9
--- /dev/null
+++ b/GUIs.ClientSuite/Base/BaseForm.vb
@@ -0,0 +1,60 @@
+Imports DevExpress.XtraBars.Ribbon
+Imports DigitalData.Modules.Logging
+
+Namespace Base
+ '''
+ ''' 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
+
+ Private ReadOnly _Logger As Logger
+ Private ReadOnly _ErrorHandler As ClassErrorHandler
+
+ Protected ReadOnly Property Logger As Logger
+ Get
+ Return _Logger
+ End Get
+ End Property
+
+ Public Sub New()
+ ' Get the full name of the inheriting form
+ ' so the log messages have the right classname
+ Dim oClassName = [GetType]().FullName
+
+ ' My.LogConfig is undefined in the designer
+ _Logger = My.LogConfig?.GetLogger(oClassName)
+ _ErrorHandler = New ClassErrorHandler(_Logger)
+
+ ' When you add something, be careful if it
+ ' depends on a global var like My.LogConfig
+ ' you might need to check for its existence with ?
+ End Sub
+
+ Public Sub ShowErrorMessage(Exception As Exception)
+ _ErrorHandler.ShowErrorMessage(Exception)
+ End Sub
+
+ Private Sub InitializeComponent()
+ Me.SuspendLayout()
+ '
+ 'BaseForm
+ '
+ Me.ClientSize = New System.Drawing.Size(284, 261)
+ Me.Name = "BaseForm"
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Private Sub BaseForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+ End Sub
+ End Class
+End Namespace
diff --git a/GUIs.ClientSuite/Base/BaseRibbonForm.vb b/GUIs.ClientSuite/Base/BaseRibbonForm.vb
new file mode 100644
index 00000000..20a32fa4
--- /dev/null
+++ b/GUIs.ClientSuite/Base/BaseRibbonForm.vb
@@ -0,0 +1,94 @@
+Imports DevExpress.XtraBars.Docking
+Imports DevExpress.XtraBars.Ribbon
+Imports DigitalData.Modules.Logging
+
+Namespace Base
+ '''
+ ''' 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
+ '''
+ ''' Only BaseRibbonForms can have panels attached to it!
+ '''
+ Public Class BaseRibbonForm
+ Inherits RibbonForm
+
+ Private ReadOnly _Logger As Logger
+ Private ReadOnly _ErrorHandler As ClassErrorHandler
+
+ Protected ReadOnly Property Logger As Logger
+ Get
+ Return _Logger
+ End Get
+ End Property
+
+ '''
+ ''' Sets or gets the ribbon Page that will be shown when the window is visible
+ '''
+ '''
+ Public Property DefaultRibbonPage As RibbonPage
+
+ Protected Overrides Sub OnLoad(e As EventArgs)
+ MyBase.OnLoad(e)
+
+ If DefaultRibbonPage IsNot Nothing Then
+ Ribbon.SelectPage(DefaultRibbonPage)
+ End If
+ End Sub
+
+ Protected Overrides Sub OnVisibleChanged(e As EventArgs)
+ MyBase.OnVisibleChanged(e)
+
+ If Visible And DefaultRibbonPage IsNot Nothing Then
+ Ribbon.SelectPage(DefaultRibbonPage)
+ End If
+ End Sub
+
+ Protected Overrides Sub OnActivated(e As EventArgs)
+ MyBase.OnVisibleChanged(e)
+
+ If Visible And DefaultRibbonPage IsNot Nothing Then
+ Ribbon.SelectPage(DefaultRibbonPage)
+ End If
+ End Sub
+
+
+ Public Sub New()
+ ' Get the full name of the inheriting form
+ ' so the log messages have the right classname
+ Dim oClassName = [GetType]().FullName
+
+ ' My.LogConfig is undefined in the designer
+ _Logger = My.LogConfig?.GetLogger(oClassName)
+ _ErrorHandler = New ClassErrorHandler(_Logger)
+
+ ' When you add something, be careful if it
+ ' depends on a global var like My.LogConfig
+ ' you might need to check for its existence with ?
+ End Sub
+
+ Public Sub ShowErrorMessage(Exception As Exception)
+ _ErrorHandler.ShowErrorMessage(Exception)
+ End Sub
+
+ Public Sub ShowErrorMessage(ErrorMessage As String)
+ _ErrorHandler.ShowErrorMessage(New Exception(ErrorMessage))
+ End Sub
+
+ '''
+ ''' Returns a list of panels that will be show when the form is opened.
+ ''' This can be overridden by all inheriting forms to extend the list of panels
+ ''' Panels will be created by PanelManager.
+ '''
+ '''
+ ''' A list of PanelInformation
+ Public Overridable Function GetInitialPanels() As List(Of PanelInfo)
+ Return New List(Of PanelInfo)
+ End Function
+ End Class
+End Namespace
diff --git a/EDMI_ClientSuite/ClassConfig.vb b/GUIs.ClientSuite/ClassConfig.vb
similarity index 92%
rename from EDMI_ClientSuite/ClassConfig.vb
rename to GUIs.ClientSuite/ClassConfig.vb
index bbf69a37..1c6f2137 100644
--- a/EDMI_ClientSuite/ClassConfig.vb
+++ b/GUIs.ClientSuite/ClassConfig.vb
@@ -1,6 +1,5 @@
-Imports System.ComponentModel
-Imports System.Runtime.CompilerServices
-Imports System.Xml.Serialization
+Imports System.Xml.Serialization
+Imports DigitalData.Modules.Config.ConfigAttributes
'''
''' --- User Config for EDMI ---
@@ -37,7 +36,9 @@ Public Class ClassConfig
' === Simple/Actual Config Properties ===
' === Service Configuration ===
+
Public Property ServiceIP As String = String.Empty
+
Public Property ServicePort As Integer = -1
Public Property HeartbeatInterval As Integer = 5000
diff --git a/EDMI_ClientSuite/ClassConstants.vb b/GUIs.ClientSuite/ClassConstants.vb
similarity index 68%
rename from EDMI_ClientSuite/ClassConstants.vb
rename to GUIs.ClientSuite/ClassConstants.vb
index 2a49aa78..da07d4d5 100644
--- a/EDMI_ClientSuite/ClassConstants.vb
+++ b/GUIs.ClientSuite/ClassConstants.vb
@@ -6,12 +6,17 @@
Public Const SERVICE_MAX_CONNECTIONS = 10000
Public Const SERVICE_OPEN_TIMEOUT = 3
+ Public Const CONTROL_TEXTEDIT = "TextBox"
+ Public Const CONTROL_MEMOEDIT = "Memoedit"
+ Public Const CONTROL_COMBOEDIT = "Combobox"
+ Public Const CONTROL_CHECKEDIT = "Checkbox"
+ Public Const CONTROL_RADIOEDIT = "Radiobutton"
+ Public Const CONTROL_DATEEDIT = "Datepicker"
+
Public Const FOLDER_NAME_LAYOUT = "Layout"
Public Const ATTRIBUTE_ID_COLUMN = "RECORD_ID"
-
-
Public Const DB_USER_ATTRIBUTE_ID = 1
Public Const DB_USER_ATTRIBUTE_SYSKEY = "001"
diff --git a/GUIs.ClientSuite/ClassControlManager.vb b/GUIs.ClientSuite/ClassControlManager.vb
new file mode 100644
index 00000000..6defb2f9
--- /dev/null
+++ b/GUIs.ClientSuite/ClassControlManager.vb
@@ -0,0 +1,12 @@
+Imports DigitalData.GUIs.ClientSuite.Base
+Imports DigitalData.Modules.Logging
+
+Public Class ClassControlManager
+ Inherits BaseClass
+
+ Public Sub New(LogConfig As LogConfig)
+ MyBase.New(LogConfig)
+ End Sub
+
+
+End Class
diff --git a/EDMI_ClientSuite/ClassControlPatcher.vb b/GUIs.ClientSuite/ClassControlPatcher.vb
similarity index 100%
rename from EDMI_ClientSuite/ClassControlPatcher.vb
rename to GUIs.ClientSuite/ClassControlPatcher.vb
diff --git a/EDMI_ClientSuite/ClassDragDrop.vb b/GUIs.ClientSuite/ClassDragDrop.vb
similarity index 100%
rename from EDMI_ClientSuite/ClassDragDrop.vb
rename to GUIs.ClientSuite/ClassDragDrop.vb
diff --git a/EDMI_ClientSuite/ClassErrorHandler.vb b/GUIs.ClientSuite/ClassErrorHandler.vb
similarity index 100%
rename from EDMI_ClientSuite/ClassErrorHandler.vb
rename to GUIs.ClientSuite/ClassErrorHandler.vb
diff --git a/EDMI_ClientSuite/ClassLayout.vb b/GUIs.ClientSuite/ClassLayout.vb
similarity index 86%
rename from EDMI_ClientSuite/ClassLayout.vb
rename to GUIs.ClientSuite/ClassLayout.vb
index ada8f44d..3b6fa8d2 100644
--- a/EDMI_ClientSuite/ClassLayout.vb
+++ b/GUIs.ClientSuite/ClassLayout.vb
@@ -61,13 +61,6 @@ Public Class ClassLayout
End Function
Public Shared Function GetLayoutDirectory() As String
- Return Path.Combine(GetAppDataFolder(), ClassConstants.FOLDER_NAME_LAYOUT)
- End Function
-
- Private Shared Function GetAppDataFolder() As String
- Dim oLocalAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
- Dim oProduct = My.Application.Info.ProductName
- Dim oCompany = My.Application.Info.CompanyName
- Return Path.Combine(oLocalAppData, oCompany, oProduct)
+ Return Path.Combine(Application.UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
End Function
End Class
diff --git a/EDMI_ClientSuite/ClassPanelManager.vb b/GUIs.ClientSuite/ClassPanelManager.vb
similarity index 99%
rename from EDMI_ClientSuite/ClassPanelManager.vb
rename to GUIs.ClientSuite/ClassPanelManager.vb
index 5f5f45fa..30a753a8 100644
--- a/EDMI_ClientSuite/ClassPanelManager.vb
+++ b/GUIs.ClientSuite/ClassPanelManager.vb
@@ -3,6 +3,7 @@ Imports DevExpress.XtraBars.Docking2010
Imports DevExpress.XtraBars.Docking2010.Views
Imports DevExpress.XtraBars.Docking2010.Views.Tabbed
Imports DevExpress.XtraGrid
+Imports DigitalData.GUIs.ClientSuite.Base
Imports DigitalData.Modules.Logging
Public Class ClassPanelManager
diff --git a/EDMI_ClientSuite/ClassService.vb b/GUIs.ClientSuite/ClassService.vb
similarity index 89%
rename from EDMI_ClientSuite/ClassService.vb
rename to GUIs.ClientSuite/ClassService.vb
index b6214241..2d353f5d 100644
--- a/EDMI_ClientSuite/ClassService.vb
+++ b/GUIs.ClientSuite/ClassService.vb
@@ -1,11 +1,11 @@
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.Modules.EDMIAPI.EDMIServiceReference
+Imports DigitalData.GUIs.ClientSuite.Base
Public Class ClassService
- Private ReadOnly _LogConfig As LogConfig
- Private ReadOnly _Logger As Logger
+ Inherits BaseClass
Public Enum ConnectionTestResult
Successful
@@ -15,8 +15,7 @@ Public Class ClassService
End Enum
Public Sub New(LogConfig As LogConfig)
- _LogConfig = LogConfig
- _Logger = _LogConfig.GetLogger()
+ MyBase.New(LogConfig)
End Sub
Public Function TestConnection() As ConnectionTestResult
@@ -33,10 +32,10 @@ Public Class ClassService
Return ConnectionTestResult.Successful
Catch ex As EndpointNotFoundException
- _Logger.Error(ex)
+ Logger.Error(ex)
Return ConnectionTestResult.NotFound
Catch ex As Exception
- _Logger.Error(ex)
+ Logger.Error(ex)
Return ConnectionTestResult.Unknown
End Try
End Function
@@ -56,13 +55,13 @@ Public Class ClassService
Return ConnectionTestResult.Successful
Catch ex As EndpointNotFoundException
- _Logger.Error(ex)
+ Logger.Error(ex)
Return ConnectionTestResult.NotFound
Catch ex As UriFormatException
- _Logger.Error(ex)
+ Logger.Error(ex)
Return ConnectionTestResult.EmptyURI
Catch ex As Exception
- _Logger.Error(ex)
+ Logger.Error(ex)
Return ConnectionTestResult.Unknown
End Try
End Function)
diff --git a/EDMI_ClientSuite/ClassTimer.vb b/GUIs.ClientSuite/ClassTimer.vb
similarity index 84%
rename from EDMI_ClientSuite/ClassTimer.vb
rename to GUIs.ClientSuite/ClassTimer.vb
index 7862b158..18da52d0 100644
--- a/EDMI_ClientSuite/ClassTimer.vb
+++ b/GUIs.ClientSuite/ClassTimer.vb
@@ -1,10 +1,13 @@
Imports System.ServiceModel
Imports System.Threading
Imports System.Timers
-Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.GUIs.ClientSuite.Base
+Imports DigitalData.Modules.EDMIAPI.EDMIServiceReference
Imports DigitalData.Modules.Logging
Public Class ClassTimer
+ Inherits BaseClass
+
Private _Callback As TimerCallback
Private _LogConfig As LogConfig
Private _Logger As Logger
@@ -15,10 +18,9 @@ Public Class ClassTimer
Public Delegate Sub OnlineChangedEventHandler(sender As Object, Online As Boolean)
Public Sub New(LogConfig As LogConfig, SynchronizingObject As frmMain, HeartbeatInterval As Integer)
- Try
- _LogConfig = LogConfig
- _Logger = LogConfig.GetLogger()
+ MyBase.New(LogConfig)
+ Try
_Channel = My.ChannelFactory.CreateChannel()
_Channel.Open()
@@ -29,13 +31,13 @@ Public Class ClassTimer
AddHandler _Timer.Elapsed, AddressOf Callback
Catch ex As Exception
- _Logger.Error(ex)
+ Logger.Error(ex)
End Try
End Sub
Public Async Sub Callback(sender As Object, e As ElapsedEventArgs)
Try
- _Logger.Debug("Checking if Service is up...")
+ Logger.Debug("Checking if Service is up...")
If _Channel.State = ServiceModel.CommunicationState.Faulted Then
_Channel = My.ChannelFactory.CreateChannel()
@@ -44,12 +46,11 @@ Public Class ClassTimer
' Connect to service and send hearbeat request
Dim oResult = Await _Channel.HeartbeatAsync()
-
- _Logger.Debug("Service is online")
+ Logger.Debug("Service is online")
SetOnlineState(True)
Catch ex As Exception
- _Logger.Debug("Service is offline!")
+ Logger.Debug("Service is offline!")
SetOnlineState(False)
Finally
diff --git a/EDMI_ClientSuite/ClassUIConfig.vb b/GUIs.ClientSuite/ClassUIConfig.vb
similarity index 100%
rename from EDMI_ClientSuite/ClassUIConfig.vb
rename to GUIs.ClientSuite/ClassUIConfig.vb
diff --git a/EDMI_ClientSuite/ClassUtils.vb b/GUIs.ClientSuite/ClassUtils.vb
similarity index 100%
rename from EDMI_ClientSuite/ClassUtils.vb
rename to GUIs.ClientSuite/ClassUtils.vb
diff --git a/EDMI_ClientSuite/ClientSuite.vbproj b/GUIs.ClientSuite/ClientSuite.vbproj
similarity index 84%
rename from EDMI_ClientSuite/ClientSuite.vbproj
rename to GUIs.ClientSuite/ClientSuite.vbproj
index 336d8e53..b7851db2 100644
--- a/EDMI_ClientSuite/ClientSuite.vbproj
+++ b/GUIs.ClientSuite/ClientSuite.vbproj
@@ -90,6 +90,9 @@
False
..\Modules.Logging\bin\Debug\NLog.dll
+
+ ..\packages\jacobslusser.ScintillaNET.3.6.3\lib\net40\ScintillaNET.dll
+
@@ -127,9 +130,14 @@
-
+
+
+
+
+
+
@@ -139,12 +147,32 @@
+
-
+
+
+
+
+ frmDatasourceEditor.vb
+
+
+ Form
+
+
+
+
+
+
frmFormDesigner.vb
-
+
+ Form
+
+
+ frmWorkflowStep.vb
+
+
Form
@@ -178,38 +206,20 @@
Form
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
frmStaticListEditor.vb
-
+
Form
-
- ControlSnapPanel.vb
-
-
- Component
-
-
- frmEntityDesigner.vb
-
-
+
Form
-
- Form
-
-
+
Form
@@ -308,9 +318,18 @@
-
+
+ BaseForm.vb
+
+
+ frmDatasourceEditor.vb
+
+
frmFormDesigner.vb
+
+ frmWorkflowStep.vb
+
frmSearch.vb
@@ -323,15 +342,12 @@
frmDocTest.vb
-
+
frmStaticListEditor.vb
-
+
frmStaticListEditor.vb
-
- frmEntityDesigner.vb
-
frmFileTest.vb
@@ -429,9 +445,9 @@
-
- {44982F9B-6116-44E2-85D0-F39650B1EF99}
- Config
+
+ {3dcd6d1a-c830-4241-b7e4-27430e7ea483}
+ LookupControl
{5b1171dc-fffe-4813-a20d-786aae47b320}
@@ -441,9 +457,9 @@
{991d0231-4623-496d-8bd0-9ca906029cbc}
Filesystem
-
- {3DCD6D1A-C830-4241-B7E4-27430E7EA483}
- LookupControl
+
+ {44982f9b-6116-44e2-85d0-f39650b1ef99}
+ Config
{5ebacbfa-f11a-4bbf-8d02-91461f2293ed}
@@ -458,6 +474,18 @@
DDEDMService
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GUIs.ClientSuite/Common/ClassCommon.vb b/GUIs.ClientSuite/Common/ClassCommon.vb
new file mode 100644
index 00000000..c725ef89
--- /dev/null
+++ b/GUIs.ClientSuite/Common/ClassCommon.vb
@@ -0,0 +1,17 @@
+Imports DigitalData.Modules.Logging
+
+Public Class ClassCommon
+ Private _LogConfig As LogConfig
+ Private _Logger As Logger
+
+ Public Commands As ClassCommonCommands
+ Public Views As ClassCommonViews
+
+ Public Sub New(LogConfig As LogConfig)
+ _LogConfig = LogConfig
+ _Logger = LogConfig.GetLogger()
+
+ Commands = New ClassCommonCommands(LogConfig)
+ Views = New ClassCommonViews(LogConfig)
+ End Sub
+End Class
diff --git a/EDMI_ClientSuite/ClassCommonCommands.vb b/GUIs.ClientSuite/Common/ClassCommonCommands.vb
similarity index 98%
rename from EDMI_ClientSuite/ClassCommonCommands.vb
rename to GUIs.ClientSuite/Common/ClassCommonCommands.vb
index 8c95268d..cfdc100f 100644
--- a/EDMI_ClientSuite/ClassCommonCommands.vb
+++ b/GUIs.ClientSuite/Common/ClassCommonCommands.vb
@@ -1,5 +1,5 @@
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.Modules.EDMIAPI.EDMIServiceReference
Public Class ClassCommonCommands
Private _LogConfig As LogConfig
diff --git a/GUIs.ClientSuite/Common/ClassCommonViews.vb b/GUIs.ClientSuite/Common/ClassCommonViews.vb
new file mode 100644
index 00000000..6e09d655
--- /dev/null
+++ b/GUIs.ClientSuite/Common/ClassCommonViews.vb
@@ -0,0 +1,55 @@
+Imports DigitalData.Modules.Logging
+
+Public Class ClassCommonViews
+ Private _LogConfig As LogConfig
+ Private _Logger As Logger
+
+ Public Sub New(LogConfig As LogConfig)
+ _LogConfig = LogConfig
+ _Logger = LogConfig.GetLogger()
+ End Sub
+
+ Public Async Function VWICM_FORM_CONTROL(FormId As Int64) As Task(Of DataTable)
+ Try
+ My.Channel.CreateDatabaseRequest("Load Controls", True)
+
+ Dim oSQL As String = $"SELECT * FROM VWICM_FORMCONTROL WHERE FORMID = {FormId}"
+ Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL)
+ Dim oTable = oResult.Table
+
+ If Not oResult.OK Then
+ _Logger.Error(New ApplicationException(oResult.ErrorMessage))
+ Return Nothing
+ End If
+
+ My.Channel.CloseDatabaseRequest()
+
+ Return oResult.Table
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Async Function VWICM_WF_REQUESTCONTROLDATA(FormId As Int64, RequestId As Int64) As Task(Of DataTable)
+ Try
+ My.Channel.CreateDatabaseRequest("Load Control Data", True)
+
+ Dim oSQL As String = $"SELECT * FROM VWICM_WF_REQUESTCONTROLDATA WHERE FORMID = {FormId} AND REQUESTID = {RequestId}"
+ Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL)
+ Dim oTable = oResult.Table
+
+ If Not oResult.OK Then
+ _Logger.Error(New ApplicationException(oResult.ErrorMessage))
+ Return Nothing
+ End If
+
+ My.Channel.CloseDatabaseRequest()
+
+ Return oResult.Table
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+End Class
diff --git a/EDMI_ClientSuite/ControlDefaults/GridControlDefaults.vb b/GUIs.ClientSuite/ControlDefaults/GridControlDefaults.vb
similarity index 100%
rename from EDMI_ClientSuite/ControlDefaults/GridControlDefaults.vb
rename to GUIs.ClientSuite/ControlDefaults/GridControlDefaults.vb
diff --git a/EDMI_ClientSuite/ControlDefaults/TreeListDefaults.vb b/GUIs.ClientSuite/ControlDefaults/TreeListDefaults.vb
similarity index 100%
rename from EDMI_ClientSuite/ControlDefaults/TreeListDefaults.vb
rename to GUIs.ClientSuite/ControlDefaults/TreeListDefaults.vb
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Data.vb b/GUIs.ClientSuite/FormDesigner/Controls/Data.vb
new file mode 100644
index 00000000..249723a1
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Data.vb
@@ -0,0 +1,41 @@
+Imports DevExpress.XtraEditors
+Imports DigitalData.Controls.LookupGrid
+Imports DigitalData.GUIs.ClientSuite.Base
+Imports DigitalData.Modules.Logging
+
+Namespace Controls
+ Public Class ControlData
+ Inherits BaseClass
+
+ Public Sub New(LogConfig As LogConfig)
+ MyBase.New(LogConfig)
+ End Sub
+
+ Public Sub LoadControlData(ByRef Controls As List(Of BaseEdit), Data As DataTable)
+ Dim oCounter = 0
+
+ ' TODO: Do we need databinding and does it work with lookup control
+ For Each oControl As BaseEdit In Controls
+ Dim oBindingSource As New BindingSource(Data, Nothing)
+
+ Select Case oControl.GetType
+ Case GetType(TextEdit)
+ oControl.DataBindings.Add("Text", oBindingSource, "CTRLVALUE", True, DataSourceUpdateMode.OnPropertyChanged)
+ Case GetType(MemoEdit)
+ oControl.DataBindings.Add("Text", oBindingSource, "CTRLVALUE", True, DataSourceUpdateMode.OnPropertyChanged)
+ Case GetType(DateEdit)
+ oControl.DataBindings.Add("Text", oBindingSource, "CTRLVALUE", True, DataSourceUpdateMode.OnPropertyChanged)
+ Case GetType(LookupControl2)
+ oControl.DataBindings.Add("Text", oBindingSource, "CTRLVALUE", True, DataSourceUpdateMode.OnPropertyChanged)
+ Case Else
+
+ End Select
+
+ oBindingSource.Position = oCounter
+ oCounter += 1
+ Next
+ End Sub
+ End Class
+
+End Namespace
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Editors/DatasourceEditor.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/DatasourceEditor.vb
new file mode 100644
index 00000000..9d41137f
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Editors/DatasourceEditor.vb
@@ -0,0 +1,48 @@
+Imports System.ComponentModel
+'Imports System.ComponentModel.Design
+Imports System.Drawing.Design
+'Imports System.Windows.Forms
+Imports System.Windows.Forms.Design
+
+Namespace Controls.Editors
+ Public Class DatasourceEditor
+ Inherits UITypeEditor
+
+ Public Overrides Function GetEditStyle(context As ITypeDescriptorContext) As UITypeEditorEditStyle
+ Return UITypeEditorEditStyle.Modal
+ End Function
+
+ Public Overrides Function EditValue(context As ITypeDescriptorContext, provider As IServiceProvider, value As Object) As Object
+ Dim oService As IWindowsFormsEditorService = TryCast(provider.GetService(GetType(IWindowsFormsEditorService)), IWindowsFormsEditorService)
+ Dim oDatasource As DatasourceType = DirectCast(value, DatasourceType)
+
+ If oService IsNot Nothing AndAlso oDatasource IsNot Nothing Then
+ Using oForm As New frmDatasourceEditor()
+ oForm.Value = oDatasource
+ If oService.ShowDialog(oForm) = DialogResult.OK Then
+
+ value = oForm.Value
+ End If
+ End Using
+ End If
+
+ Return value
+ End Function
+ End Class
+
+ Public Class DatasourceTypeConverter
+ Inherits TypeConverter
+
+ Public Overrides Function ToString() As String
+ Return MyBase.ToString()
+ End Function
+
+ ' Diese Funktion gibt den String zurück, der im PropertyGrid für den Benutzer sichtbar ist, kann ruhig etwas hübscher sein als foo;bar;baz
+ Public Overrides Function ConvertTo(context As ITypeDescriptorContext, culture As Globalization.CultureInfo, value As Object, destinationType As Type) As Object
+ Return "Datasource"
+ End Function
+ End Class
+
+End Namespace
+
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Editors/DatasourceType.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/DatasourceType.vb
new file mode 100644
index 00000000..90849a36
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Editors/DatasourceType.vb
@@ -0,0 +1,23 @@
+Imports System.ComponentModel
+Imports System.Drawing.Design
+Imports DigitalData.GUIs.ClientSuite.Controls.Editors
+
+Namespace Controls.Editors
+
+
+ Public Class DatasourceType
+ Public Property StaticList As New List(Of String)
+ Public Property SQLCommand As String = String.Empty
+
+ Public Sub New()
+ End Sub
+
+ Public Sub New(Values As List(Of String))
+ _StaticList = Values
+ End Sub
+
+ Public Sub New(SQLCommand As String)
+ _SQLCommand = SQLCommand
+ End Sub
+ End Class
+End Namespace
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/ClassStaticListEditor.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/StaticListEditor.vb
similarity index 96%
rename from EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/ClassStaticListEditor.vb
rename to GUIs.ClientSuite/FormDesigner/Controls/Editors/StaticListEditor.vb
index 9baaca18..bf53f438 100644
--- a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/ClassStaticListEditor.vb
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Editors/StaticListEditor.vb
@@ -4,7 +4,7 @@ Imports System.Drawing.Design
'Imports System.Windows.Forms
Imports System.Windows.Forms.Design
-Public Class ClassStaticListEditor
+Public Class StaticListEditor
Inherits UITypeEditor
Public Overrides Function GetEditStyle(context As ITypeDescriptorContext) As UITypeEditorEditStyle
@@ -31,7 +31,7 @@ Public Class ClassStaticListEditor
End Function
End Class
-
+
Public Class StaticList
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.Designer.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.Designer.vb
new file mode 100644
index 00000000..bdc56032
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.Designer.vb
@@ -0,0 +1,63 @@
+ _
+Partial Class frmDatasourceEditor
+ Inherits DevExpress.XtraEditors.XtraForm
+
+ '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()
+ Me.PanelEditor = New DevExpress.XtraEditors.PanelControl()
+ Me.btnSave = New System.Windows.Forms.Button()
+ CType(Me.PanelEditor, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'PanelEditor
+ '
+ Me.PanelEditor.Dock = System.Windows.Forms.DockStyle.Top
+ Me.PanelEditor.Location = New System.Drawing.Point(0, 0)
+ Me.PanelEditor.Name = "PanelEditor"
+ Me.PanelEditor.Size = New System.Drawing.Size(800, 394)
+ Me.PanelEditor.TabIndex = 0
+ '
+ 'btnSave
+ '
+ Me.btnSave.Location = New System.Drawing.Point(713, 415)
+ Me.btnSave.Name = "btnSave"
+ Me.btnSave.Size = New System.Drawing.Size(75, 23)
+ Me.btnSave.TabIndex = 1
+ Me.btnSave.Text = "Speichern"
+ Me.btnSave.UseVisualStyleBackColor = True
+ '
+ 'frmDatasourceEditor
+ '
+ 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.btnSave)
+ Me.Controls.Add(Me.PanelEditor)
+ Me.Name = "frmDatasourceEditor"
+ Me.Text = "frmDatasourceEditor"
+ CType(Me.PanelEditor, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Friend WithEvents PanelEditor As DevExpress.XtraEditors.PanelControl
+ Friend WithEvents btnSave As Button
+End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.resx b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.resx
similarity index 100%
rename from EDMI_ClientSuite/FormEntityDesigner/frmFormDesigner.resx
rename to GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.resx
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.vb
new file mode 100644
index 00000000..2fac159a
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmDatasourceEditor.vb
@@ -0,0 +1,50 @@
+Imports DigitalData.GUIs.ClientSuite.Controls.Editors
+Imports ScintillaNET
+
+Public Class frmDatasourceEditor
+ Public Value As DatasourceType
+
+ Private _Editor As Scintilla
+
+ Private Sub frmDatasourceEditor_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+
+
+ _Editor = New Scintilla() With {
+ .Dock = DockStyle.Fill,
+ .BorderStyle = BorderStyle.None,
+ .Text = Value.SQLCommand
+ }
+
+ _Editor.StyleResetDefault()
+ With _Editor.Styles(Style.Default)
+ .Font = "Consolas"
+ .Size = 10
+ End With
+ _Editor.StyleClearAll()
+ _Editor.Lexer = Lexer.Sql
+
+ _Editor.Styles(Style.LineNumber).ForeColor = Color.FromArgb(255, 128, 128, 128)
+ _Editor.Styles(Style.LineNumber).BackColor = Color.FromArgb(255, 228, 228, 228)
+ _Editor.Styles(Style.Sql.Comment).ForeColor = Color.Green
+ _Editor.Styles(Style.Sql.CommentLine).ForeColor = Color.Green
+ _Editor.Styles(Style.Sql.CommentLineDoc).ForeColor = Color.Green
+ _Editor.Styles(Style.Sql.Number).ForeColor = Color.Maroon
+ _Editor.Styles(Style.Sql.Word).ForeColor = Color.Blue
+ _Editor.Styles(Style.Sql.Word2).ForeColor = Color.Fuchsia
+ _Editor.Styles(Style.Sql.User1).ForeColor = Color.Gray
+ _Editor.Styles(Style.Sql.User2).ForeColor = Color.FromArgb(255, 0, 128, 192)
+ _Editor.Styles(Style.Sql.String).ForeColor = Color.Red
+ _Editor.Styles(Style.Sql.Character).ForeColor = Color.Red
+ _Editor.Styles(Style.Sql.[Operator]).ForeColor = Color.Black
+ _Editor.SetKeywords(0, "add alter as authorization backup begin bigint binary bit break browse bulk by cascade case catch check checkpoint close clustered column commit compute constraint containstable continue create current cursor cursor database date datetime datetime2 datetimeoffset dbcc deallocate decimal declare default delete deny desc disk distinct distributed double drop dump else end errlvl escape except exec execute exit external fetch file fillfactor float for foreign freetext freetexttable from full function goto grant group having hierarchyid holdlock identity identity_insert identitycol if image index insert int intersect into key kill lineno load merge money national nchar nocheck nocount nolock nonclustered ntext numeric nvarchar of off offsets on open opendatasource openquery openrowset openxml option order over percent plan precision primary print proc procedure public raiserror read readtext real reconfigure references replication restore restrict return revert revoke rollback rowcount rowguidcol rule save schema securityaudit select set setuser shutdown smalldatetime smallint smallmoney sql_variant statistics table table tablesample text textsize then time timestamp tinyint to top tran transaction trigger truncate try union unique uniqueidentifier update updatetext use user values varbinary varchar varying view waitfor when where while with writetext xml go ")
+ _Editor.SetKeywords(1, "ascii cast char charindex ceiling coalesce collate contains convert current_date current_time current_timestamp current_user floor isnull max min nullif object_id session_user substring system_user tsequal ")
+ _Editor.SetKeywords(4, "all and any between cross exists in inner is join left like not null or outer pivot right some unpivot ( ) * ")
+ _Editor.SetKeywords(5, "sys objects sysobjects ")
+
+ PanelEditor.Controls.Add(_Editor)
+ End Sub
+
+ Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
+ Value.SQLCommand = _Editor.Text
+ End Sub
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.Designer.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.Designer.vb
rename to GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.Designer.vb
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.en-US.resx b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.en-US.resx
similarity index 100%
rename from EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.en-US.resx
rename to GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.en-US.resx
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.resx b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.resx
similarity index 100%
rename from EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.resx
rename to GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.resx
diff --git a/EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.vb b/GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.vb
similarity index 100%
rename from EDMI_ClientSuite/FormEntityDesigner/ControlProperties/Editors/frmStaticListEditor.vb
rename to GUIs.ClientSuite/FormDesigner/Controls/Editors/frmStaticListEditor.vb
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Loader.vb b/GUIs.ClientSuite/FormDesigner/Controls/Loader.vb
new file mode 100644
index 00000000..85e2309b
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Loader.vb
@@ -0,0 +1,106 @@
+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
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Localization.vb b/GUIs.ClientSuite/FormDesigner/Controls/Localization.vb
new file mode 100644
index 00000000..8f3b697c
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Localization.vb
@@ -0,0 +1,30 @@
+Imports System.ComponentModel
+
+Namespace Controls
+ Public Class Localization
+ Private Shared Function Lookup(key As String)
+ Try
+ Return My.Resources.ControlProperties.ResourceManager.GetString(key)
+ Catch ex As Exception
+ Return key
+ End Try
+ End Function
+
+ Public Class LocalizedDescriptionAttribute
+ Inherits DescriptionAttribute
+
+ Public Sub New(key As String)
+ MyBase.New(Lookup(key))
+ End Sub
+ End Class
+
+ Public Class LocalizedCategoryAttribute
+ Inherits CategoryAttribute
+
+ Public Sub New(key As String)
+ MyBase.New(Lookup(key))
+ End Sub
+ End Class
+ End Class
+End Namespace
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Metadata.vb b/GUIs.ClientSuite/FormDesigner/Controls/Metadata.vb
new file mode 100644
index 00000000..ee1ced53
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Metadata.vb
@@ -0,0 +1,9 @@
+Namespace Controls
+ Public Class Metadata
+ Public Id As Int64
+ Public Type As String
+ Public Caption As String
+ End Class
+End Namespace
+
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Properties/BaseProperties.vb b/GUIs.ClientSuite/FormDesigner/Controls/Properties/BaseProperties.vb
new file mode 100644
index 00000000..d8086c57
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Properties/BaseProperties.vb
@@ -0,0 +1,17 @@
+Imports System.ComponentModel
+Imports DigitalData.GUIs.ClientSuite.Controls.Localization
+
+Namespace Controls.Properties
+ Public MustInherit Class BaseProperties
+
+
+
+ <[ReadOnly](True)>
+ Public Property Id As Integer
+
+
+
+ Public Property Name As String
+ End Class
+End Namespace
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Properties/CheckboxProperties.vb b/GUIs.ClientSuite/FormDesigner/Controls/Properties/CheckboxProperties.vb
new file mode 100644
index 00000000..c2512d04
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Properties/CheckboxProperties.vb
@@ -0,0 +1,7 @@
+Namespace Controls.Properties
+ Public Class CheckboxProperties
+ Inherits BaseProperties
+ End Class
+End Namespace
+
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Properties/ComboboxProperties.vb b/GUIs.ClientSuite/FormDesigner/Controls/Properties/ComboboxProperties.vb
new file mode 100644
index 00000000..0b9a6e18
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Properties/ComboboxProperties.vb
@@ -0,0 +1,14 @@
+Imports System.ComponentModel
+Imports DigitalData.GUIs.ClientSuite.Controls.Editors
+Imports DigitalData.GUIs.ClientSuite.Controls.Localization
+
+Namespace Controls.Properties
+ Public Class ComboboxProperties
+ Inherits BaseProperties
+
+
+
+ Public Property Datasource As DatasourceType
+ End Class
+End Namespace
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Properties/DatepickerProperties.vb b/GUIs.ClientSuite/FormDesigner/Controls/Properties/DatepickerProperties.vb
new file mode 100644
index 00000000..4b3213ad
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Properties/DatepickerProperties.vb
@@ -0,0 +1,6 @@
+Namespace Controls.Properties
+ Public Class DatepickerProperties
+ Inherits BaseProperties
+ End Class
+
+End Namespace
\ No newline at end of file
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Properties/MemoeditProperties.vb b/GUIs.ClientSuite/FormDesigner/Controls/Properties/MemoeditProperties.vb
new file mode 100644
index 00000000..14c155d6
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Properties/MemoeditProperties.vb
@@ -0,0 +1,7 @@
+Namespace Controls.Properties
+ Public Class MemoeditProperties
+ Inherits BaseProperties
+ End Class
+End Namespace
+
+
diff --git a/GUIs.ClientSuite/FormDesigner/Controls/Properties/TextboxProperties.vb b/GUIs.ClientSuite/FormDesigner/Controls/Properties/TextboxProperties.vb
new file mode 100644
index 00000000..0dd09224
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/Controls/Properties/TextboxProperties.vb
@@ -0,0 +1,7 @@
+Namespace Controls.Properties
+ Public Class TextboxProperties
+ Inherits BaseProperties
+ End Class
+End Namespace
+
+
diff --git a/GUIs.ClientSuite/FormDesigner/frmFormDesigner.Designer.vb b/GUIs.ClientSuite/FormDesigner/frmFormDesigner.Designer.vb
new file mode 100644
index 00000000..7eb54990
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/frmFormDesigner.Designer.vb
@@ -0,0 +1,320 @@
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
+Partial Class frmFormDesigner
+ Inherits BaseRibbonForm
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmFormDesigner))
+ Me.FormDesignerRibbon = New DevExpress.XtraBars.Ribbon.RibbonControl()
+ Me.BarCheckEditLayout = New DevExpress.XtraBars.BarCheckItem()
+ Me.BarCheckEditControls = New DevExpress.XtraBars.BarCheckItem()
+ Me.RibbonPageCategory1 = New DevExpress.XtraBars.Ribbon.RibbonPageCategory()
+ Me.RibbonPageFormDesigner = New DevExpress.XtraBars.Ribbon.RibbonPage()
+ Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
+ Me.LayoutControlMain = New DevExpress.XtraLayout.LayoutControl()
+ Me.LayoutControlGroupMain = New DevExpress.XtraLayout.LayoutControlGroup()
+ Me.ToolboxControlMain = New DevExpress.XtraToolbox.ToolboxControl()
+ Me.ToolboxGroupMain = New DevExpress.XtraToolbox.ToolboxGroup()
+ Me.ToolboxItemTextbox = New DevExpress.XtraToolbox.ToolboxItem()
+ Me.ToolboxItemMemoedit = New DevExpress.XtraToolbox.ToolboxItem()
+ Me.ToolboxItemDatepicker = New DevExpress.XtraToolbox.ToolboxItem()
+ Me.ToolboxItemCombobox = New DevExpress.XtraToolbox.ToolboxItem()
+ Me.ToolboxItemCheckbox = New DevExpress.XtraToolbox.ToolboxItem()
+ Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ Me.XtraTabControlMain = New DevExpress.XtraTab.XtraTabControl()
+ Me.XtraTabPageControls = New DevExpress.XtraTab.XtraTabPage()
+ Me.XtraTabPageProperties = New DevExpress.XtraTab.XtraTabPage()
+ Me.PropertyGridControlMain = New DevExpress.XtraVerticalGrid.PropertyGridControl()
+ Me.SplitContainerMain = New DevExpress.XtraEditors.SplitContainerControl()
+ CType(Me.FormDesignerRibbon, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LayoutControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LayoutControlGroupMain, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.XtraTabControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.XtraTabControlMain.SuspendLayout()
+ Me.XtraTabPageControls.SuspendLayout()
+ Me.XtraTabPageProperties.SuspendLayout()
+ CType(Me.PropertyGridControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SplitContainerMain.SuspendLayout()
+ Me.SuspendLayout()
+ '
+ 'FormDesignerRibbon
+ '
+ Me.FormDesignerRibbon.ExpandCollapseItem.Id = 0
+ Me.FormDesignerRibbon.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.FormDesignerRibbon.ExpandCollapseItem, Me.BarCheckEditLayout, Me.BarCheckEditControls})
+ Me.FormDesignerRibbon.Location = New System.Drawing.Point(0, 0)
+ Me.FormDesignerRibbon.MaxItemId = 6
+ Me.FormDesignerRibbon.MdiMergeStyle = DevExpress.XtraBars.Ribbon.RibbonMdiMergeStyle.Always
+ Me.FormDesignerRibbon.Name = "FormDesignerRibbon"
+ Me.FormDesignerRibbon.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategory1})
+ Me.FormDesignerRibbon.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
+ Me.FormDesignerRibbon.Size = New System.Drawing.Size(870, 146)
+ Me.FormDesignerRibbon.StatusBar = Me.RibbonStatusBar
+ '
+ 'BarCheckEditLayout
+ '
+ Me.BarCheckEditLayout.Caption = "Layout bearbeiten"
+ Me.BarCheckEditLayout.CheckStyle = DevExpress.XtraBars.BarCheckStyles.Radio
+ Me.BarCheckEditLayout.GroupIndex = 1
+ Me.BarCheckEditLayout.Id = 3
+ Me.BarCheckEditLayout.ImageOptions.Image = CType(resources.GetObject("BarCheckEditLayout.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarCheckEditLayout.ImageOptions.LargeImage = CType(resources.GetObject("BarCheckEditLayout.ImageOptions.LargeImage"), System.Drawing.Image)
+ Me.BarCheckEditLayout.Name = "BarCheckEditLayout"
+ '
+ 'BarCheckEditControls
+ '
+ Me.BarCheckEditControls.BindableChecked = True
+ Me.BarCheckEditControls.Caption = "Elemente bearbeiten"
+ Me.BarCheckEditControls.Checked = True
+ Me.BarCheckEditControls.CheckStyle = DevExpress.XtraBars.BarCheckStyles.Radio
+ Me.BarCheckEditControls.GroupIndex = 1
+ Me.BarCheckEditControls.Id = 5
+ Me.BarCheckEditControls.ImageOptions.Image = CType(resources.GetObject("BarCheckEditControls.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarCheckEditControls.ImageOptions.LargeImage = CType(resources.GetObject("BarCheckEditControls.ImageOptions.LargeImage"), System.Drawing.Image)
+ Me.BarCheckEditControls.Name = "BarCheckEditControls"
+ '
+ 'RibbonPageCategory1
+ '
+ Me.RibbonPageCategory1.Name = "RibbonPageCategory1"
+ Me.RibbonPageCategory1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageFormDesigner})
+ Me.RibbonPageCategory1.Text = "Form Designer"
+ '
+ 'RibbonPageFormDesigner
+ '
+ Me.RibbonPageFormDesigner.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup2})
+ Me.RibbonPageFormDesigner.Name = "RibbonPageFormDesigner"
+ Me.RibbonPageFormDesigner.Text = "Allgemein"
+ '
+ 'RibbonPageGroup2
+ '
+ Me.RibbonPageGroup2.ItemLinks.Add(Me.BarCheckEditControls)
+ Me.RibbonPageGroup2.ItemLinks.Add(Me.BarCheckEditLayout)
+ Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
+ Me.RibbonPageGroup2.Text = "RibbonPageGroup2"
+ '
+ 'RibbonStatusBar
+ '
+ Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 508)
+ Me.RibbonStatusBar.Name = "RibbonStatusBar"
+ Me.RibbonStatusBar.Ribbon = Me.FormDesignerRibbon
+ Me.RibbonStatusBar.Size = New System.Drawing.Size(870, 21)
+ '
+ 'LayoutControlMain
+ '
+ Me.LayoutControlMain.AllowCustomization = False
+ Me.LayoutControlMain.AllowDrop = True
+ Me.LayoutControlMain.BackColor = System.Drawing.Color.Transparent
+ Me.LayoutControlMain.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.LayoutControlMain.Location = New System.Drawing.Point(0, 0)
+ Me.LayoutControlMain.Name = "LayoutControlMain"
+ Me.LayoutControlMain.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(706, 255, 650, 400)
+ Me.LayoutControlMain.OptionsCustomizationForm.ShowLayoutTreeView = False
+ Me.LayoutControlMain.OptionsCustomizationForm.ShowLoadButton = False
+ Me.LayoutControlMain.OptionsCustomizationForm.ShowSaveButton = False
+ Me.LayoutControlMain.Root = Me.LayoutControlGroupMain
+ Me.LayoutControlMain.Size = New System.Drawing.Size(655, 362)
+ Me.LayoutControlMain.TabIndex = 2
+ Me.LayoutControlMain.Text = "LayoutControl1"
+ '
+ 'LayoutControlGroupMain
+ '
+ Me.LayoutControlGroupMain.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
+ Me.LayoutControlGroupMain.GroupBordersVisible = False
+ Me.LayoutControlGroupMain.Name = "Root"
+ Me.LayoutControlGroupMain.Size = New System.Drawing.Size(655, 362)
+ Me.LayoutControlGroupMain.TextVisible = False
+ '
+ 'ToolboxControlMain
+ '
+ Me.ToolboxControlMain.Caption = "Form Controls"
+ Me.ToolboxControlMain.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.ToolboxControlMain.Groups.Add(Me.ToolboxGroupMain)
+ Me.ToolboxControlMain.Location = New System.Drawing.Point(0, 0)
+ Me.ToolboxControlMain.Name = "ToolboxControlMain"
+ Me.ToolboxControlMain.OptionsMinimizing.AllowMinimizing = False
+ Me.ToolboxControlMain.OptionsView.ShowMenuButton = False
+ Me.ToolboxControlMain.OptionsView.ShowToolboxCaption = True
+ Me.ToolboxControlMain.SelectedGroup = Me.ToolboxGroupMain
+ Me.ToolboxControlMain.SelectedGroupIndex = 0
+ Me.ToolboxControlMain.Size = New System.Drawing.Size(201, 337)
+ Me.ToolboxControlMain.TabIndex = 4
+ Me.ToolboxControlMain.Text = "Form Controls"
+ '
+ 'ToolboxGroupMain
+ '
+ Me.ToolboxGroupMain.BeginGroupCaption = ""
+ Me.ToolboxGroupMain.Caption = "Basis Controls"
+ Me.ToolboxGroupMain.Items.Add(Me.ToolboxItemTextbox)
+ Me.ToolboxGroupMain.Items.Add(Me.ToolboxItemMemoedit)
+ Me.ToolboxGroupMain.Items.Add(Me.ToolboxItemDatepicker)
+ Me.ToolboxGroupMain.Items.Add(Me.ToolboxItemCombobox)
+ Me.ToolboxGroupMain.Items.Add(Me.ToolboxItemCheckbox)
+ Me.ToolboxGroupMain.Name = "ToolboxGroupMain"
+ '
+ 'ToolboxItemTextbox
+ '
+ Me.ToolboxItemTextbox.BeginGroupCaption = Nothing
+ Me.ToolboxItemTextbox.Caption = "Textbox"
+ Me.ToolboxItemTextbox.ImageOptions.Image = Global.DigitalData.GUIs.ClientSuite.My.Resources.Resources.TextBox
+ Me.ToolboxItemTextbox.Name = "ToolboxItemTextbox"
+ Me.ToolboxItemTextbox.Tag = "Textbox"
+ '
+ 'ToolboxItemMemoedit
+ '
+ Me.ToolboxItemMemoedit.BeginGroupCaption = Nothing
+ Me.ToolboxItemMemoedit.Caption = "Multiline Textbox"
+ Me.ToolboxItemMemoedit.ImageOptions.Image = Global.DigitalData.GUIs.ClientSuite.My.Resources.Resources.TextBox
+ Me.ToolboxItemMemoedit.Name = "ToolboxItemMemoedit"
+ Me.ToolboxItemMemoedit.Tag = "Memoedit"
+ '
+ 'ToolboxItemDatepicker
+ '
+ Me.ToolboxItemDatepicker.BeginGroupCaption = Nothing
+ Me.ToolboxItemDatepicker.Caption = "Datepicker"
+ Me.ToolboxItemDatepicker.ImageOptions.Image = Global.DigitalData.GUIs.ClientSuite.My.Resources.Resources.DatePicker
+ Me.ToolboxItemDatepicker.Name = "ToolboxItemDatepicker"
+ Me.ToolboxItemDatepicker.Tag = "Datepicker"
+ '
+ 'ToolboxItemCombobox
+ '
+ Me.ToolboxItemCombobox.BeginGroupCaption = Nothing
+ Me.ToolboxItemCombobox.Caption = "Combobox"
+ Me.ToolboxItemCombobox.ImageOptions.Image = Global.DigitalData.GUIs.ClientSuite.My.Resources.Resources.ComboBox
+ Me.ToolboxItemCombobox.Name = "ToolboxItemCombobox"
+ Me.ToolboxItemCombobox.Tag = "Combobox"
+ '
+ 'ToolboxItemCheckbox
+ '
+ Me.ToolboxItemCheckbox.BeginGroupCaption = Nothing
+ Me.ToolboxItemCheckbox.Caption = "Checkbox"
+ Me.ToolboxItemCheckbox.ImageOptions.Image = Global.DigitalData.GUIs.ClientSuite.My.Resources.Resources.CheckBox
+ Me.ToolboxItemCheckbox.Name = "ToolboxItemCheckbox"
+ Me.ToolboxItemCheckbox.Tag = "Checkbox"
+ '
+ 'RibbonPageGroup1
+ '
+ Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
+ Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
+ '
+ 'XtraTabControlMain
+ '
+ Me.XtraTabControlMain.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.XtraTabControlMain.HeaderLocation = DevExpress.XtraTab.TabHeaderLocation.Bottom
+ Me.XtraTabControlMain.Location = New System.Drawing.Point(0, 0)
+ Me.XtraTabControlMain.Name = "XtraTabControlMain"
+ Me.XtraTabControlMain.SelectedTabPage = Me.XtraTabPageControls
+ Me.XtraTabControlMain.Size = New System.Drawing.Size(203, 362)
+ Me.XtraTabControlMain.TabIndex = 7
+ Me.XtraTabControlMain.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.XtraTabPageControls, Me.XtraTabPageProperties})
+ '
+ 'XtraTabPageControls
+ '
+ Me.XtraTabPageControls.Controls.Add(Me.ToolboxControlMain)
+ Me.XtraTabPageControls.Name = "XtraTabPageControls"
+ Me.XtraTabPageControls.Size = New System.Drawing.Size(201, 337)
+ Me.XtraTabPageControls.Text = "Controls"
+ '
+ 'XtraTabPageProperties
+ '
+ Me.XtraTabPageProperties.Controls.Add(Me.PropertyGridControlMain)
+ Me.XtraTabPageProperties.Name = "XtraTabPageProperties"
+ Me.XtraTabPageProperties.PageEnabled = False
+ Me.XtraTabPageProperties.Size = New System.Drawing.Size(201, 337)
+ Me.XtraTabPageProperties.Text = "Eigenschaften"
+ '
+ 'PropertyGridControlMain
+ '
+ Me.PropertyGridControlMain.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.PropertyGridControlMain.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.PropertyGridControlMain.Location = New System.Drawing.Point(0, 0)
+ Me.PropertyGridControlMain.Name = "PropertyGridControlMain"
+ Me.PropertyGridControlMain.Size = New System.Drawing.Size(201, 337)
+ Me.PropertyGridControlMain.TabIndex = 0
+ '
+ 'SplitContainerMain
+ '
+ Me.SplitContainerMain.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2
+ Me.SplitContainerMain.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.SplitContainerMain.Location = New System.Drawing.Point(0, 146)
+ Me.SplitContainerMain.Name = "SplitContainerMain"
+ Me.SplitContainerMain.Panel1.Controls.Add(Me.LayoutControlMain)
+ Me.SplitContainerMain.Panel1.Text = "PanelMain"
+ Me.SplitContainerMain.Panel2.Controls.Add(Me.XtraTabControlMain)
+ Me.SplitContainerMain.Panel2.MinSize = 200
+ Me.SplitContainerMain.Panel2.Text = "PanelSidebar"
+ Me.SplitContainerMain.Size = New System.Drawing.Size(870, 362)
+ Me.SplitContainerMain.SplitterPosition = 655
+ Me.SplitContainerMain.TabIndex = 3
+ Me.SplitContainerMain.Text = "SplitContainerControl1"
+ '
+ 'frmFormDesigner
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(870, 529)
+ Me.Controls.Add(Me.SplitContainerMain)
+ Me.Controls.Add(Me.RibbonStatusBar)
+ Me.Controls.Add(Me.FormDesignerRibbon)
+ Me.DefaultRibbonPage = Me.RibbonPageFormDesigner
+ Me.Name = "frmFormDesigner"
+ Me.Ribbon = Me.FormDesignerRibbon
+ Me.ShowIcon = False
+ Me.StatusBar = Me.RibbonStatusBar
+ Me.Text = "Form Designer"
+ CType(Me.FormDesignerRibbon, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LayoutControlMain, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LayoutControlGroupMain, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.XtraTabControlMain, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.XtraTabControlMain.ResumeLayout(False)
+ Me.XtraTabPageControls.ResumeLayout(False)
+ Me.XtraTabPageProperties.ResumeLayout(False)
+ CType(Me.PropertyGridControlMain, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.SplitContainerMain, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.SplitContainerMain.ResumeLayout(False)
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+
+ Friend WithEvents FormDesignerRibbon As DevExpress.XtraBars.Ribbon.RibbonControl
+ Friend WithEvents RibbonStatusBar As DevExpress.XtraBars.Ribbon.RibbonStatusBar
+ Friend WithEvents LayoutControlMain As DevExpress.XtraLayout.LayoutControl
+ Friend WithEvents LayoutControlGroupMain As DevExpress.XtraLayout.LayoutControlGroup
+ Friend WithEvents ToolboxControlMain As DevExpress.XtraToolbox.ToolboxControl
+ Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+ Friend WithEvents ToolboxGroupMain As DevExpress.XtraToolbox.ToolboxGroup
+ Friend WithEvents ToolboxItemTextbox As DevExpress.XtraToolbox.ToolboxItem
+ Friend WithEvents ToolboxItemMemoedit As DevExpress.XtraToolbox.ToolboxItem
+ Friend WithEvents ToolboxItemDatepicker As DevExpress.XtraToolbox.ToolboxItem
+ Friend WithEvents XtraTabControlMain As DevExpress.XtraTab.XtraTabControl
+ Friend WithEvents XtraTabPageControls As DevExpress.XtraTab.XtraTabPage
+ Friend WithEvents XtraTabPageProperties As DevExpress.XtraTab.XtraTabPage
+ Friend WithEvents PropertyGridControlMain As DevExpress.XtraVerticalGrid.PropertyGridControl
+ Friend WithEvents SplitContainerMain As DevExpress.XtraEditors.SplitContainerControl
+ Friend WithEvents ToolboxItemCombobox As DevExpress.XtraToolbox.ToolboxItem
+ Friend WithEvents ToolboxItemCheckbox As DevExpress.XtraToolbox.ToolboxItem
+ Friend WithEvents BarCheckEditLayout As DevExpress.XtraBars.BarCheckItem
+ Friend WithEvents RibbonPageCategory1 As DevExpress.XtraBars.Ribbon.RibbonPageCategory
+ Friend WithEvents RibbonPageFormDesigner As DevExpress.XtraBars.Ribbon.RibbonPage
+ Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+ Friend WithEvents BarCheckEditControls As DevExpress.XtraBars.BarCheckItem
+End Class
diff --git a/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.resx b/GUIs.ClientSuite/FormDesigner/frmFormDesigner.resx
similarity index 69%
rename from EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.resx
rename to GUIs.ClientSuite/FormDesigner/frmFormDesigner.resx
index 89f848de..13eb9095 100644
--- a/EDMI_ClientSuite/FormEntityDesigner/frmEntityDesigner.resx
+++ b/GUIs.ClientSuite/FormDesigner/frmFormDesigner.resx
@@ -118,27 +118,45 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAjdEVYdFRpdGxlAENhbmNlbDtTdG9wO0V4aXQ7QmFy
- cztSaWJib247TJaWsgAAAMJJREFUOE+Nk0sKAjEQRHM4YVZ6CS8gfhBGHK/pSRRXbRWkJOlOq4sHSf0Y
- BlLMrNy3qzWYef4HZC/s8KzyCxi4+rAHmVvNsrOhcKqCSEfgqSz2Ms7OCCPQfPlIvQ2kIzgPy+QzUIN+
- ZAFpmXQDBAE/0tKVSXcRCI5GQpkEgSDsP5sso2wQEByVRRjpLgj48gGEH9t2vpYbLx35WRbQhiM0+DBa
- I5QFPD8yU5zAowppWSCjkSeYJHJk58MZyPIBTmZW3tJAnMwmSptiAAAAAElFTkSuQmCC
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAbdEVYdFRpdGxlAE91dGxpbmU7Qm9yZGVyO0NvbG9y
+ O0U+EsAAAACKSURBVDhPlZLLDYAgEETpiTpsylCUvXj3bgGyOsgSQmb5bPJCMtk3GNWJCGXbDwv/ITix
+ 50IIMkLnvG6INT4VzEwl6xMkpgrYzXoOC4isoOR/B9aMZGAW5KVW1Lx8FVqQl1pR8yIDq0CXuzLoFahk
+ yiAV1Dwx1gVdGdDfeAUarkDDFWi4Ag3nEfcCPknObrfoZGIAAAAASUVORK5CYII=
-
+
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAjdEVYdFRpdGxlAENhbmNlbDtTdG9wO0V4aXQ7QmFy
- cztSaWJib247TJaWsgAAAW5JREFUWEfFlk1KBDEUhGfmAg56JTcuHEGP4FFFFMVZz1VcxaomD57pek1e
- hLj4FilSP9Dd0LtSyr8ixZlIcSZSnIkUL8+3f6LJOvhzixRr0BV4AXf13I3LuQev4OjzPVKEgeUfoIBv
- kBpRM1hOLzM+gRyxEnDxALiaRiM7wpcbzNy3fb8OBi4+gTagd4Qq5/lBda0EgsvksRrboK0RqXIiRRiM
- zIh0OZEiTJ6eEUPlRIowtmyNGC4nUoRZEY0YLidSRECEGuFJlRMpImSLaMRSDmRmhBQZsoF65jZgeTFV
- ZoQUGRIQlRvLCJUZIUWEKKK3XWndI6SIgN5yPvPwE1XZLVKEubfc7gyPkCKMmXJjaIQUYSJR+Qn4Yk96
- hBRhGCk3UiNWAi7uwVs1+oCeckONeAfdPyTX4Ksas+WW4UecwU3bQ1YCwWXCEVydKicuhyOYIcuJFC0I
- 8P/Qn7tosvK/5TOR4kykOBMpzqPsfgBphQ1j4i+mWAAAAABJRU5ErkJggg==
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAbdEVYdFRpdGxlAE91dGxpbmU7Qm9yZGVyO0NvbG9y
+ O0U+EsAAAAENSURBVFhHvZLRDYMwDETZiTm6VMVQHaIb9L//nSC9izBK4QhpYjnSE2Dhe0fVKaXkzu3+
+ UMwgrfA+v3tY9oDhO0r5VoLvyoBREH4lN2YZ4AUFBaqAXvQA4aX0tMS0LEvyws7r/TmIgCox5wKe50Ru
+ lCV4nVwLXMgNK5H/pG4FGuVkkxOXAr1yMlygV47VzFCBkS/H+liBETlBRH+BUTlBTF8BDzlBVLXAc73+
+ HC85Qdx/v4CnnCCyvYC3nCC2vQAWLLyU7WmWE8T+XcAk5XM5l6IzENtVwGT7ZympgdjuAia1qxQQrF6S
+ C9TgQZji8stNUkMOI5HDSOQwEjmMRA4jkcNI5DASOYxEDuNI0xdxpHdLr3Yd9wAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAgdEVYdFRpdGxlAEVkaXQ7QmFycztSaWJib247U3Rh
+ bmRhcmQ7MBPD2wAAAIxJREFUOE+tkksOgCAMBbkT5/BShjXn4S7GrXu3LqytsVgawk9fMsGkvEENBgA+
+ ER+cc1DgfFYry0QiKIXm3vtVS7oEmENLugQSTJ9A5hcBMi6gDAuWbYdpDoztEnBZSpoF6mTCNgsyZab+
+ CaUyUv+JtDn3+jgyuKYCDYVLQhKvcSLQoOCGBVym0kswFwCbJlIIfiUIAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAgdEVYdFRpdGxlAEVkaXQ7QmFycztSaWJib247U3Rh
+ bmRhcmQ7MBPD2wAAASZJREFUWEftkkEOgjAQRbkTtzDxUoYtR+Ae3sWwMmHvVhf1f2SStozQNm3ZMMkL
+ MDDzn0hjjDkUtVkTtVkTtVkTtUm6rjORPMEFcHaFlkHUJsEQDuHF5/u+/wzDcMGlv8u5tlGbJEVgHEdV
+ opoAS5OoKsDyJaoLsBaJNyUOEWCJBO6tPkxBbZIUgQ0mPKLmqE3CwVy17FJz1CY5BU6BnAKs6+3eAh7l
+ fM5ZBQs5BR7TS4JtWtwqL2CF229gBlVWQPnljgSqnMCf105EotxfsBEulPsIQ8MJHs8rEBNOMJJPICWc
+ OKE2MQKx4QRjM06oDQX2YKWEE8lxQlPAMgnxg6W/Cicy7yxLAcvssKBwIvPOshSwzA/dDScy7yxLActs
+ gaBw8ps3zRc04YO9+3Zd0gAAAABJRU5ErkJggg==
\ No newline at end of file
diff --git a/GUIs.ClientSuite/FormDesigner/frmFormDesigner.vb b/GUIs.ClientSuite/FormDesigner/frmFormDesigner.vb
new file mode 100644
index 00000000..26b70dad
--- /dev/null
+++ b/GUIs.ClientSuite/FormDesigner/frmFormDesigner.vb
@@ -0,0 +1,196 @@
+Imports DevExpress.XtraEditors
+Imports DevExpress.XtraToolbox
+Imports DevExpress.XtraLayout
+Imports DevExpress.XtraLayout.Customization
+Imports DevExpress.XtraLayout.Dragging
+Imports DevExpress.XtraLayout.HitInfo
+Imports DigitalData.Controls.LookupGrid
+Imports DigitalData.GUIs.ClientSuite.Controls
+Imports DigitalData.GUIs.ClientSuite.Controls.Properties
+Imports DigitalData.GUIs.ClientSuite.Controls.Editors
+
+Public Class frmFormDesigner
+ Private _FormId As Int64
+ Private _ControlLoader As ControlLoader
+
+#Region "Drag Helper"
+ Private _DragItem As BaseLayoutItem
+ Private _Window As DragFrameWindow
+ Private _DragController As LayoutItemDragController = Nothing
+
+ Protected ReadOnly Property DragFrameWindow As DragFrameWindow
+ Get
+ If _Window Is Nothing Then
+ _Window = New DragFrameWindow(LayoutControlMain)
+ End If
+ Return _Window
+ End Get
+ End Property
+
+ Private Sub ShowDragHelper()
+ DragFrameWindow.Visible = True
+ End Sub
+
+ Private Sub HideDragHelper()
+ DragFrameWindow.Reset()
+ DragFrameWindow.Visible = False
+ End Sub
+
+ Private Sub UpdateDragHelper(p As Point)
+ p = LayoutControlMain.PointToClient(p)
+ _DragController = New LayoutItemDragController(_DragItem, LayoutControlMain.Root, New Point(p.X, p.Y))
+ DragFrameWindow.DragController = _DragController
+ End Sub
+#End Region
+#Region "Drag Drop Actions"
+ Private Sub ToolboxControlMain_DragItemDrop(sender As Object, e As ToolboxDragItemDropEventArgs) Handles ToolboxControlMain.DragItemDrop
+ Dim oPosition As Point = LayoutControlMain.PointToClient(MousePosition)
+ Dim oHitInfo As BaseLayoutItemHitInfo = LayoutControlMain.CalcHitInfo(oPosition)
+ Dim oLayoutControl As LayoutControlItem = DirectCast(_DragItem, LayoutControlItem)
+ Dim oControlName As String = oLayoutControl.Tag & ClassUtils.ShortGUID()
+ Dim oControl As Control = _ControlLoader.CreateLayoutControl(oLayoutControl.Tag, oControlName, 0)
+
+ If oLayoutControl IsNot Nothing Then
+ HideDragHelper()
+ oLayoutControl.Control = oControl
+
+ If (_DragController IsNot Nothing AndAlso _DragItem IsNot Nothing) Then
+ If (_DragItem.Owner Is Nothing OrElse _DragItem.Parent Is Nothing) Then
+ _DragController.DragWildItem()
+ Else
+ _DragController.Drag()
+ End If
+ Focus()
+ End If
+ HideDragHelper()
+ _DragItem = Nothing
+ End If
+ End Sub
+
+ Private Sub ToolboxControlMain_DragItemStart(sender As Object, e As ToolboxDragItemStartEventArgs) Handles ToolboxControlMain.DragItemStart
+ _DragItem = CreateLayoutControlItem(e.Item.Tag)
+ End Sub
+
+ Private Sub ToolboxControlMain_DragItemMove(sender As Object, e As DevExpress.XtraToolbox.ToolboxDragItemMoveEventArgs) Handles ToolboxControlMain.DragItemMove
+ If (CType(LayoutControlMain, ILayoutControl)).EnableCustomizationMode OrElse Me.DesignMode Then Return
+ Dim oFormPosition As Point = PointToClient(e.Location)
+ Dim oLayoutPosition As Point = LayoutControlMain.PointToClient(e.Location)
+
+ If LayoutControlMain.Bounds.Contains(oFormPosition) Then
+
+ If Not DragFrameWindow.Visible Then
+ DragFrameWindow.Visible = True
+ Return
+ End If
+
+ UpdateDragHelper(e.Location)
+ Else
+ DragFrameWindow.Visible = False
+ End If
+ End Sub
+#End Region
+
+ Public Sub New()
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+ _FormId = 104
+ End Sub
+
+ Public Sub New(FormId As Int64)
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+ _FormId = FormId
+ End Sub
+
+ Private Async Sub frmFormDesigner_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ FormDesignerRibbon.SelectPage(RibbonPageFormDesigner)
+
+ _ControlLoader = New ControlLoader(My.LogConfig, LayoutControlGroupMain)
+
+ Dim oTable = Await My.Common.Views.VWICM_FORM_CONTROL(_FormId)
+
+ _ControlLoader.LoadControls(oTable)
+ End Sub
+
+ Private Function CreateLayoutControlItem(Id As String) As LayoutControlItem
+ Return New LayoutControlItem() With {.Tag = Id}
+ End Function
+
+ Private Sub LayoutControlMain_ItemSelectionChanged(sender As Object, e As EventArgs) Handles LayoutControlMain.ItemSelectionChanged
+ ' only layout control items have properties
+ If TypeOf sender IsNot LayoutControlItem Then
+ Exit Sub
+ End If
+
+ Dim oLayoutItem As LayoutControlItem = DirectCast(sender, LayoutControlItem)
+ Dim oSelectedControl As BaseEdit = oLayoutItem.Control
+ Dim oMetadata As New Metadata
+
+ ' Don't load properties for layout items like splitters, separators, etc.
+ If oLayoutItem.Control Is Nothing Then
+ Exit Sub
+ End If
+
+
+ oMetadata = oSelectedControl.Tag
+
+ Select Case oSelectedControl.GetType
+ Case GetType(MemoEdit)
+ PropertyGridControlMain.SelectedObject = New MemoeditProperties() With {
+ .Id = oMetadata.Id,
+ .Name = oMetadata.Caption
+ }
+ Case GetType(TextEdit)
+ PropertyGridControlMain.SelectedObject = New TextboxProperties() With {
+ .Id = oMetadata.Id,
+ .Name = oMetadata.Caption
+ }
+ Case GetType(LookupControl2)
+ PropertyGridControlMain.SelectedObject = New ComboboxProperties() With {
+ .Datasource = New DatasourceType,
+ .Id = oMetadata.Id,
+ .Name = oMetadata.Caption
+ }
+ Case GetType(DateEdit)
+ PropertyGridControlMain.SelectedObject = New DatepickerProperties() With {
+ .Id = oMetadata.Id,
+ .Name = oMetadata.Caption
+ }
+ Case GetType(CheckEdit)
+ PropertyGridControlMain.SelectedObject = New CheckboxProperties() With {
+ .Id = oMetadata.Id,
+ .Name = oMetadata.Caption
+ }
+ End Select
+ End Sub
+
+ Private Sub BarCheckEditLayout_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckEditLayout.CheckedChanged
+ If BarCheckEditLayout.Checked Then
+ LayoutControlMain.ShowCustomizationForm()
+ XtraTabPageProperties.PageEnabled = True
+ XtraTabPageControls.PageEnabled = False
+ XtraTabControlMain.SelectedTabPage = XtraTabPageProperties
+ End If
+ End Sub
+
+ Private Sub BarCheckEditControls_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarCheckEditControls.CheckedChanged
+ If BarCheckEditControls.Checked Then
+ LayoutControlMain.HideCustomizationForm()
+ XtraTabPageProperties.PageEnabled = False
+ XtraTabPageControls.PageEnabled = True
+ XtraTabControlMain.SelectedTabPage = XtraTabPageControls
+ End If
+ End Sub
+
+ Private Sub LayoutControlMain_HideCustomization(sender As Object, e As EventArgs) Handles LayoutControlMain.HideCustomization
+ BarCheckEditControls.Checked = True
+ End Sub
+
+ Private Sub LayoutControlMain_ShowCustomization(sender As Object, e As EventArgs) Handles LayoutControlMain.ShowCustomization
+ BarCheckEditLayout.Checked = True
+ End Sub
+
+
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/FormUserManager/UserControlAssignment.Designer.vb b/GUIs.ClientSuite/FormUserManager/UserControlAssignment.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/FormUserManager/UserControlAssignment.Designer.vb
rename to GUIs.ClientSuite/FormUserManager/UserControlAssignment.Designer.vb
diff --git a/EDMI_ClientSuite/FormUserManager/UserControlAssignment.resx b/GUIs.ClientSuite/FormUserManager/UserControlAssignment.resx
similarity index 100%
rename from EDMI_ClientSuite/FormUserManager/UserControlAssignment.resx
rename to GUIs.ClientSuite/FormUserManager/UserControlAssignment.resx
diff --git a/EDMI_ClientSuite/FormUserManager/UserControlAssignment.vb b/GUIs.ClientSuite/FormUserManager/UserControlAssignment.vb
similarity index 100%
rename from EDMI_ClientSuite/FormUserManager/UserControlAssignment.vb
rename to GUIs.ClientSuite/FormUserManager/UserControlAssignment.vb
diff --git a/EDMI_ClientSuite/FormUserManager/frmUserManager.Designer.vb b/GUIs.ClientSuite/FormUserManager/frmUserManager.Designer.vb
similarity index 98%
rename from EDMI_ClientSuite/FormUserManager/frmUserManager.Designer.vb
rename to GUIs.ClientSuite/FormUserManager/frmUserManager.Designer.vb
index 5c6b89a1..cf5e819f 100644
--- a/EDMI_ClientSuite/FormUserManager/frmUserManager.Designer.vb
+++ b/GUIs.ClientSuite/FormUserManager/frmUserManager.Designer.vb
@@ -1,6 +1,8 @@
-
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmUserManager
- Inherits DevExpress.XtraBars.Ribbon.RibbonForm
+ Inherits BaseRibbonForm
'Form overrides dispose to clean up the component list.
@@ -172,6 +174,7 @@ Partial Class frmUserManager
Me.Controls.Add(Me.UserNavbar)
Me.Controls.Add(Me.RibbonStatusBar)
Me.Controls.Add(Me.UserRibbon)
+ Me.DefaultRibbonPage = Me.RibbonPageUserManager
Me.Name = "frmUserManager"
Me.Ribbon = Me.UserRibbon
Me.ShowIcon = False
diff --git a/EDMI_ClientSuite/FormUserManager/frmUserManager.resx b/GUIs.ClientSuite/FormUserManager/frmUserManager.resx
similarity index 100%
rename from EDMI_ClientSuite/FormUserManager/frmUserManager.resx
rename to GUIs.ClientSuite/FormUserManager/frmUserManager.resx
diff --git a/EDMI_ClientSuite/FormUserManager/frmUserManager.vb b/GUIs.ClientSuite/FormUserManager/frmUserManager.vb
similarity index 86%
rename from EDMI_ClientSuite/FormUserManager/frmUserManager.vb
rename to GUIs.ClientSuite/FormUserManager/frmUserManager.vb
index 6c5d732d..38ee7d01 100644
--- a/EDMI_ClientSuite/FormUserManager/frmUserManager.vb
+++ b/GUIs.ClientSuite/FormUserManager/frmUserManager.vb
@@ -2,7 +2,6 @@
Public Class frmUserManager
Private _Logger As Logger
- Private _CommonCommands As ClassCommonCommands
Private _UserTable As DataTable
Private _GroupTable As DataTable
@@ -18,28 +17,14 @@ Public Class frmUserManager
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
_Logger = My.LogConfig.GetLogger()
- _CommonCommands = New ClassCommonCommands(My.LogConfig)
End Sub
Private Async Sub frmUserManager_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Await InitDataAsync()
- UserRibbon.SelectPage(RibbonPageUserManager)
UserNavbar.SelectedItem = NavbarUser2Group
End Sub
- Private Sub frmUserManager_VisibleChanged(sender As Object, e As EventArgs) Handles Me.VisibleChanged
- If Visible Then
- UserRibbon.SelectPage(RibbonPageUserManager)
- End If
- End Sub
-
- Private Sub frmUserManager_Activated(sender As Object, e As EventArgs) Handles Me.Activated
- If Visible Then
- UserRibbon.SelectPage(RibbonPageUserManager)
- End If
- End Sub
-
Private Sub ShowUserToGroupControl()
If _UserToGroupControl Is Nothing Then
_UserToGroupControl = New UserControlAssignment() With {
@@ -98,25 +83,25 @@ Public Class frmUserManager
End Function
Private Async Sub HandleUserAddedToGroup(GroupId As Integer, UserId As Integer, RelationRecordId As Integer)
- Dim oRecordId = Await _CommonCommands.FNICM_RADM_NEW_USER2GROUP(UserId, GroupId)
+ Dim oRecordId = Await My.Common.Commands.FNICM_RADM_NEW_USER2GROUP(UserId, GroupId)
Await UpdateDataAsync()
End Sub
Private Async Sub HandleUserRemovedFromGroup(GroupId As Integer, UserId As Integer, RelationRecordId As Integer)
- Dim oResult = Await _CommonCommands.FNICM_DELETE_RECORD_FINALLY(RelationRecordId)
+ Dim oResult = Await My.Common.Commands.FNICM_DELETE_RECORD_FINALLY(RelationRecordId)
Await UpdateDataAsync()
End Sub
Private Async Sub HandleGroupAddedToGroup(ParentGroupId As Integer, GroupId As Integer, RelationRecordId As Integer)
- Dim oRecordId = Await _CommonCommands.FNICM_RADM_NEW_GROUP2GROUP(GroupId, ParentGroupId)
+ Dim oRecordId = Await My.Common.Commands.FNICM_RADM_NEW_GROUP2GROUP(GroupId, ParentGroupId)
Await UpdateDataAsync()
End Sub
Private Async Sub HandleGroupRemovedFromGroup(ParentGroupId As Integer, GroupId As Integer, RelationRecordId As Integer)
- Dim oResult = Await _CommonCommands.FNICM_DELETE_RECORD_FINALLY(RelationRecordId)
+ Dim oResult = Await My.Common.Commands.FNICM_DELETE_RECORD_FINALLY(RelationRecordId)
Await UpdateDataAsync()
End Sub
diff --git a/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.Designer.vb b/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.Designer.vb
new file mode 100644
index 00000000..79873166
--- /dev/null
+++ b/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.Designer.vb
@@ -0,0 +1,110 @@
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
+Partial Class frmWorkflowStep
+ Inherits BaseRibbonForm
+
+ 'Form overrides dispose to clean up the component list.
+
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+
+ Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
+ Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
+ Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
+ Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
+ Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl()
+ Me.LayoutControlGroupMain = New DevExpress.XtraLayout.LayoutControlGroup()
+ CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LayoutControlGroupMain, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'RibbonControl
+ '
+ Me.RibbonControl.ExpandCollapseItem.Id = 0
+ Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem})
+ Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
+ Me.RibbonControl.MaxItemId = 1
+ Me.RibbonControl.Name = "RibbonControl"
+ Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
+ Me.RibbonControl.Size = New System.Drawing.Size(991, 146)
+ Me.RibbonControl.StatusBar = Me.RibbonStatusBar
+ '
+ 'RibbonPage1
+ '
+ Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
+ Me.RibbonPage1.Name = "RibbonPage1"
+ Me.RibbonPage1.Text = "RibbonPage1"
+ '
+ 'RibbonPageGroup1
+ '
+ Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
+ Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
+ '
+ 'RibbonStatusBar
+ '
+ Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 494)
+ Me.RibbonStatusBar.Name = "RibbonStatusBar"
+ Me.RibbonStatusBar.Ribbon = Me.RibbonControl
+ Me.RibbonStatusBar.Size = New System.Drawing.Size(991, 21)
+ '
+ 'LayoutControl1
+ '
+ Me.LayoutControl1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.LayoutControl1.Location = New System.Drawing.Point(0, 146)
+ Me.LayoutControl1.Name = "LayoutControl1"
+ Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(1039, 241, 650, 400)
+ Me.LayoutControl1.Root = Me.LayoutControlGroupMain
+ Me.LayoutControl1.Size = New System.Drawing.Size(991, 348)
+ Me.LayoutControl1.TabIndex = 2
+ Me.LayoutControl1.Text = "LayoutControl1"
+ '
+ 'LayoutControlGroupMain
+ '
+ Me.LayoutControlGroupMain.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
+ Me.LayoutControlGroupMain.GroupBordersVisible = False
+ Me.LayoutControlGroupMain.Name = "Root"
+ Me.LayoutControlGroupMain.Size = New System.Drawing.Size(991, 348)
+ Me.LayoutControlGroupMain.TextVisible = False
+ '
+ 'frmWorkflowStep
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(991, 515)
+ Me.Controls.Add(Me.LayoutControl1)
+ Me.Controls.Add(Me.RibbonStatusBar)
+ Me.Controls.Add(Me.RibbonControl)
+ Me.Name = "frmWorkflowStep"
+ Me.Ribbon = Me.RibbonControl
+ Me.StatusBar = Me.RibbonStatusBar
+ Me.Text = "frmWorkflowStep"
+ CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LayoutControlGroupMain, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+
+ Friend WithEvents RibbonControl As DevExpress.XtraBars.Ribbon.RibbonControl
+ Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
+ Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+ Friend WithEvents RibbonStatusBar As DevExpress.XtraBars.Ribbon.RibbonStatusBar
+ Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl
+ Friend WithEvents LayoutControlGroupMain As DevExpress.XtraLayout.LayoutControlGroup
+End Class
diff --git a/EDMI_ClientSuite/Panels/DocumentPanel.resx b/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.resx
similarity index 100%
rename from EDMI_ClientSuite/Panels/DocumentPanel.resx
rename to GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.resx
diff --git a/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.vb b/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.vb
new file mode 100644
index 00000000..6cdf14f1
--- /dev/null
+++ b/GUIs.ClientSuite/FormWorkflow/frmWorkflowStep.vb
@@ -0,0 +1,71 @@
+Imports DevExpress.XtraLayout
+Imports DigitalData.GUIs.ClientSuite
+Imports DigitalData.GUIs.ClientSuite.Controls
+
+Public Class frmWorkflowStep
+ Private _ControlLoader As ControlLoader
+ Private _ControlData As ControlData
+
+ Private _FormId As Int64
+ Private _RequestId As Int64
+ Private _ProcessName As String
+ Private _RequestName As String
+
+ Private _HeaderGroup As LayoutControlGroup
+ Private _BodyGroup As LayoutControlGroup
+
+ Public Sub New(RequestId As Int64)
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+ _RequestId = RequestId
+ End Sub
+
+ Private Async Function GetRequestData(RequestId) As Task
+ Await My.Channel.CreateDatabaseRequestAsync("Get Request Data", True)
+
+ Dim oResult = Await My.Channel.ReturnDatatableAsync($"SELECT PROCESS_NAME, TITLE, FORM_ID FROM VWICM_WF_REQUEST WHERE RECORD_ID = {RequestId}")
+
+ If Not oResult.OK Then
+ Throw New ApplicationException("Request data could not be fetched!")
+ ShowErrorMessage(oResult.ErrorMessage)
+ End If
+
+ My.Channel.CloseDatabaseRequest()
+
+ Dim oRows = oResult.Table.Rows
+
+ If oRows.Count = 1 Then
+ _FormId = oRows.Item(0).Item("FORM_ID")
+ _ProcessName = oRows.Item(0).Item("PROCESS_NAME")
+ _RequestName = oRows.Item(0).Item("TITLE")
+ Else
+ Throw New ApplicationException("Request data could not be fetched!")
+ End If
+ End Function
+
+
+ Private Async Sub frmWorkflowStep_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ Await GetRequestData(_RequestId)
+
+ Dim oControlTable = Await My.Common.Views.VWICM_FORM_CONTROL(_FormId)
+ Dim oControlData = Await My.Common.Views.VWICM_WF_REQUESTCONTROLDATA(_FormId, _RequestId)
+
+ _HeaderGroup = LayoutControlGroupMain.AddGroup("Request Header")
+ _BodyGroup = LayoutControlGroupMain.AddGroup("Control Body")
+
+ _ControlLoader = New ControlLoader(My.LogConfig, _BodyGroup)
+ _ControlData = New ControlData(My.LogConfig)
+
+ LayoutControl1.BeginUpdate()
+
+ _ControlLoader.LoadControls(oControlTable)
+ _ControlData.LoadControlData(_ControlLoader.LayoutControls, oControlData)
+
+ LayoutControl1.EndUpdate()
+
+ _ControlLoader.AddControl("Process Name", _ProcessName, _HeaderGroup)
+ _ControlLoader.AddControl("Request Name", _RequestName, _HeaderGroup)
+ End Sub
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/My Project/Application.Designer.vb b/GUIs.ClientSuite/My Project/Application.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/My Project/Application.Designer.vb
rename to GUIs.ClientSuite/My Project/Application.Designer.vb
diff --git a/EDMI_ClientSuite/My Project/Application.myapp b/GUIs.ClientSuite/My Project/Application.myapp
similarity index 100%
rename from EDMI_ClientSuite/My Project/Application.myapp
rename to GUIs.ClientSuite/My Project/Application.myapp
diff --git a/EDMI_ClientSuite/My Project/AssemblyInfo.vb b/GUIs.ClientSuite/My Project/AssemblyInfo.vb
similarity index 95%
rename from EDMI_ClientSuite/My Project/AssemblyInfo.vb
rename to GUIs.ClientSuite/My Project/AssemblyInfo.vb
index 62b1fa6b..92efcbed 100644
--- a/EDMI_ClientSuite/My Project/AssemblyInfo.vb
+++ b/GUIs.ClientSuite/My Project/AssemblyInfo.vb
@@ -12,7 +12,7 @@ Imports System.Runtime.InteropServices
-
+
diff --git a/GUIs.ClientSuite/My Project/Resources.Designer.vb b/GUIs.ClientSuite/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..ae8e333e
--- /dev/null
+++ b/GUIs.ClientSuite/My Project/Resources.Designer.vb
@@ -0,0 +1,123 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+Imports System
+
+Namespace My.Resources
+
+ 'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
+ '-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
+ 'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
+ 'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
+ '''
+ ''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
+ '''
+ _
+ Friend Module Resources
+
+ Private resourceMan As Global.System.Resources.ResourceManager
+
+ Private resourceCulture As Global.System.Globalization.CultureInfo
+
+ '''
+ ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
+ '''
+ _
+ 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("DigitalData.GUIs.ClientSuite.Resources", GetType(Resources).Assembly)
+ resourceMan = temp
+ End If
+ Return resourceMan
+ End Get
+ End Property
+
+ '''
+ ''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
+ ''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
+ '''
+ _
+ Friend Property Culture() As Global.System.Globalization.CultureInfo
+ Get
+ Return resourceCulture
+ End Get
+ Set
+ resourceCulture = value
+ End Set
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property CheckBox() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("CheckBox", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property ComboBox() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("ComboBox", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property DatePicker() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("DatePicker", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property iconfinder_Gowalla_324477() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("iconfinder_Gowalla_324477", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property TextBox() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("TextBox", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property user_16xLG() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("user_16xLG", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/EDMI_ClientSuite/My Project/Resources.resx b/GUIs.ClientSuite/My Project/Resources.resx
similarity index 86%
rename from EDMI_ClientSuite/My Project/Resources.resx
rename to GUIs.ClientSuite/My Project/Resources.resx
index f9ad61a5..c89d87db 100644
--- a/EDMI_ClientSuite/My Project/Resources.resx
+++ b/GUIs.ClientSuite/My Project/Resources.resx
@@ -118,10 +118,22 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\TextBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\iconfinder_Gowalla_324477.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\DatePicker.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+
+ ..\Resources\ComboBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
..\Resources\user_16xLG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\CheckBox.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/My Project/Settings.Designer.vb b/GUIs.ClientSuite/My Project/Settings.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/My Project/Settings.Designer.vb
rename to GUIs.ClientSuite/My Project/Settings.Designer.vb
diff --git a/EDMI_ClientSuite/My Project/Settings.settings b/GUIs.ClientSuite/My Project/Settings.settings
similarity index 100%
rename from EDMI_ClientSuite/My Project/Settings.settings
rename to GUIs.ClientSuite/My Project/Settings.settings
diff --git a/EDMI_ClientSuite/My Project/app.manifest b/GUIs.ClientSuite/My Project/app.manifest
similarity index 100%
rename from EDMI_ClientSuite/My Project/app.manifest
rename to GUIs.ClientSuite/My Project/app.manifest
diff --git a/EDMI_ClientSuite/My Project/licenses.licx b/GUIs.ClientSuite/My Project/licenses.licx
similarity index 93%
rename from EDMI_ClientSuite/My Project/licenses.licx
rename to GUIs.ClientSuite/My Project/licenses.licx
index 511dc5c8..8d76c874 100644
--- a/EDMI_ClientSuite/My Project/licenses.licx
+++ b/GUIs.ClientSuite/My Project/licenses.licx
@@ -1,14 +1,15 @@
-DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.BarManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraTabbedMdi.XtraTabbedMdiManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Navigation.OfficeNavigationBar, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraTabbedMdi.XtraTabbedMdiManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraNavBar.NavBarControl, DevExpress.XtraNavBar.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraTreeList.TreeList, DevExpress.XtraTreeList.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/EDMI_ClientSuite/MyApplication.vb b/GUIs.ClientSuite/MyApplication.vb
similarity index 92%
rename from EDMI_ClientSuite/MyApplication.vb
rename to GUIs.ClientSuite/MyApplication.vb
index d8f84a02..bb071cae 100644
--- a/EDMI_ClientSuite/MyApplication.vb
+++ b/GUIs.ClientSuite/MyApplication.vb
@@ -2,7 +2,7 @@
Imports System.Threading
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.Modules.EDMIAPI.EDMIServiceReference
Namespace My
'''
@@ -29,6 +29,7 @@ Namespace My
Property ChannelFactory As ChannelFactory(Of IEDMServiceChannel)
Property Channel As IEDMServiceChannel
Property MainForm As frmMain
+ Property Common As ClassCommon
End Module
'''
diff --git a/EDMI_ClientSuite/Panels/BasePanel.Designer.vb b/GUIs.ClientSuite/Panels/BasePanel.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/Panels/BasePanel.Designer.vb
rename to GUIs.ClientSuite/Panels/BasePanel.Designer.vb
diff --git a/EDMI_ClientSuite/Panels/BasePanel.vb b/GUIs.ClientSuite/Panels/BasePanel.vb
similarity index 100%
rename from EDMI_ClientSuite/Panels/BasePanel.vb
rename to GUIs.ClientSuite/Panels/BasePanel.vb
diff --git a/EDMI_ClientSuite/Panels/DocumentPanel.Designer.vb b/GUIs.ClientSuite/Panels/DocumentPanel.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/Panels/DocumentPanel.Designer.vb
rename to GUIs.ClientSuite/Panels/DocumentPanel.Designer.vb
diff --git a/EDMI_ClientSuite/Widgets/ProcessManagerWidget.resx b/GUIs.ClientSuite/Panels/DocumentPanel.resx
similarity index 100%
rename from EDMI_ClientSuite/Widgets/ProcessManagerWidget.resx
rename to GUIs.ClientSuite/Panels/DocumentPanel.resx
diff --git a/EDMI_ClientSuite/Panels/DocumentPanel.vb b/GUIs.ClientSuite/Panels/DocumentPanel.vb
similarity index 100%
rename from EDMI_ClientSuite/Panels/DocumentPanel.vb
rename to GUIs.ClientSuite/Panels/DocumentPanel.vb
diff --git a/EDMI_ClientSuite/Panels/PanelInfo.vb b/GUIs.ClientSuite/Panels/PanelInfo.vb
similarity index 100%
rename from EDMI_ClientSuite/Panels/PanelInfo.vb
rename to GUIs.ClientSuite/Panels/PanelInfo.vb
diff --git a/GUIs.ClientSuite/Resources/CheckBox.png b/GUIs.ClientSuite/Resources/CheckBox.png
new file mode 100644
index 00000000..d7cb93f4
Binary files /dev/null and b/GUIs.ClientSuite/Resources/CheckBox.png differ
diff --git a/GUIs.ClientSuite/Resources/ComboBox.png b/GUIs.ClientSuite/Resources/ComboBox.png
new file mode 100644
index 00000000..91985513
Binary files /dev/null and b/GUIs.ClientSuite/Resources/ComboBox.png differ
diff --git a/GUIs.ClientSuite/Resources/DatePicker.png b/GUIs.ClientSuite/Resources/DatePicker.png
new file mode 100644
index 00000000..273433cc
Binary files /dev/null and b/GUIs.ClientSuite/Resources/DatePicker.png differ
diff --git a/GUIs.ClientSuite/Resources/TextBox.png b/GUIs.ClientSuite/Resources/TextBox.png
new file mode 100644
index 00000000..e38d5a05
Binary files /dev/null and b/GUIs.ClientSuite/Resources/TextBox.png differ
diff --git a/EDMI_ClientSuite/Resources/email_go.png b/GUIs.ClientSuite/Resources/email_go.png
similarity index 100%
rename from EDMI_ClientSuite/Resources/email_go.png
rename to GUIs.ClientSuite/Resources/email_go.png
diff --git a/EDMI_ClientSuite/Resources/folder_go.png b/GUIs.ClientSuite/Resources/folder_go.png
similarity index 100%
rename from EDMI_ClientSuite/Resources/folder_go.png
rename to GUIs.ClientSuite/Resources/folder_go.png
diff --git a/EDMI_ClientSuite/Resources/iconfinder_Gowalla_324477.png b/GUIs.ClientSuite/Resources/iconfinder_Gowalla_324477.png
similarity index 100%
rename from EDMI_ClientSuite/Resources/iconfinder_Gowalla_324477.png
rename to GUIs.ClientSuite/Resources/iconfinder_Gowalla_324477.png
diff --git a/EDMI_ClientSuite/Resources/user_16xLG.png b/GUIs.ClientSuite/Resources/user_16xLG.png
similarity index 100%
rename from EDMI_ClientSuite/Resources/user_16xLG.png
rename to GUIs.ClientSuite/Resources/user_16xLG.png
diff --git a/EDMI_ClientSuite/State/ClassServiceState.vb b/GUIs.ClientSuite/State/ClassServiceState.vb
similarity index 100%
rename from EDMI_ClientSuite/State/ClassServiceState.vb
rename to GUIs.ClientSuite/State/ClassServiceState.vb
diff --git a/EDMI_ClientSuite/State/ClassUserState.vb b/GUIs.ClientSuite/State/ClassUserState.vb
similarity index 100%
rename from EDMI_ClientSuite/State/ClassUserState.vb
rename to GUIs.ClientSuite/State/ClassUserState.vb
diff --git a/EDMI_ClientSuite/Strings/ControlProperties.Designer.vb b/GUIs.ClientSuite/Strings/ControlProperties.Designer.vb
similarity index 98%
rename from EDMI_ClientSuite/Strings/ControlProperties.Designer.vb
rename to GUIs.ClientSuite/Strings/ControlProperties.Designer.vb
index 61587f26..941129d9 100644
--- a/EDMI_ClientSuite/Strings/ControlProperties.Designer.vb
+++ b/GUIs.ClientSuite/Strings/ControlProperties.Designer.vb
@@ -199,6 +199,15 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Sucht eine lokalisierte Zeichenfolge, die Legt die Datenquelle des Elements fest. ähnelt.
+ '''
+ Public Shared ReadOnly Property desc_datasource() As String
+ Get
+ Return ResourceManager.GetString("desc_datasource", resourceCulture)
+ End Get
+ End Property
+
'''
''' Sucht eine lokalisierte Zeichenfolge, die Gibt den Standardwert dieses Elements an. ähnelt.
'''
diff --git a/EDMI_ClientSuite/Strings/ControlProperties.en.Designer.vb b/GUIs.ClientSuite/Strings/ControlProperties.en.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/Strings/ControlProperties.en.Designer.vb
rename to GUIs.ClientSuite/Strings/ControlProperties.en.Designer.vb
diff --git a/EDMI_ClientSuite/Strings/ControlProperties.en.resx b/GUIs.ClientSuite/Strings/ControlProperties.en.resx
similarity index 98%
rename from EDMI_ClientSuite/Strings/ControlProperties.en.resx
rename to GUIs.ClientSuite/Strings/ControlProperties.en.resx
index e526f696..9425bb30 100644
--- a/EDMI_ClientSuite/Strings/ControlProperties.en.resx
+++ b/GUIs.ClientSuite/Strings/ControlProperties.en.resx
@@ -249,4 +249,7 @@
Input Configuration
+
+ Sets the element's datasource
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Strings/ControlProperties.resx b/GUIs.ClientSuite/Strings/ControlProperties.resx
similarity index 98%
rename from EDMI_ClientSuite/Strings/ControlProperties.resx
rename to GUIs.ClientSuite/Strings/ControlProperties.resx
index af8c8fbb..fd7976f0 100644
--- a/EDMI_ClientSuite/Strings/ControlProperties.resx
+++ b/GUIs.ClientSuite/Strings/ControlProperties.resx
@@ -249,4 +249,7 @@
Eingabe Eigenschaften
+
+ Legt die Datenquelle des Elements fest.
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Widgets/ProcessManagerWidget.Designer.vb b/GUIs.ClientSuite/Widgets/ProcessManagerWidget.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/Widgets/ProcessManagerWidget.Designer.vb
rename to GUIs.ClientSuite/Widgets/ProcessManagerWidget.Designer.vb
diff --git a/EDMI_ClientSuite/_TEST/DockManagerTest.resx b/GUIs.ClientSuite/Widgets/ProcessManagerWidget.resx
similarity index 100%
rename from EDMI_ClientSuite/_TEST/DockManagerTest.resx
rename to GUIs.ClientSuite/Widgets/ProcessManagerWidget.resx
diff --git a/EDMI_ClientSuite/Widgets/ProcessManagerWidget.vb b/GUIs.ClientSuite/Widgets/ProcessManagerWidget.vb
similarity index 100%
rename from EDMI_ClientSuite/Widgets/ProcessManagerWidget.vb
rename to GUIs.ClientSuite/Widgets/ProcessManagerWidget.vb
diff --git a/EDMI_ClientSuite/_TEST/DockManagerTest.Designer.vb b/GUIs.ClientSuite/_TEST/DockManagerTest.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/_TEST/DockManagerTest.Designer.vb
rename to GUIs.ClientSuite/_TEST/DockManagerTest.Designer.vb
diff --git a/EDMI_ClientSuite/_TEST/frmDocTest.resx b/GUIs.ClientSuite/_TEST/DockManagerTest.resx
similarity index 100%
rename from EDMI_ClientSuite/_TEST/frmDocTest.resx
rename to GUIs.ClientSuite/_TEST/DockManagerTest.resx
diff --git a/EDMI_ClientSuite/_TEST/DockManagerTest.vb b/GUIs.ClientSuite/_TEST/DockManagerTest.vb
similarity index 100%
rename from EDMI_ClientSuite/_TEST/DockManagerTest.vb
rename to GUIs.ClientSuite/_TEST/DockManagerTest.vb
diff --git a/EDMI_ClientSuite/_TEST/frmDocTest.Designer.vb b/GUIs.ClientSuite/_TEST/frmDocTest.Designer.vb
similarity index 97%
rename from EDMI_ClientSuite/_TEST/frmDocTest.Designer.vb
rename to GUIs.ClientSuite/_TEST/frmDocTest.Designer.vb
index 444f4575..3c41f2b8 100644
--- a/EDMI_ClientSuite/_TEST/frmDocTest.Designer.vb
+++ b/GUIs.ClientSuite/_TEST/frmDocTest.Designer.vb
@@ -1,4 +1,6 @@
- _
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmDocTest
Inherits BaseForm
diff --git a/EDMI_ClientSuite/_TEST/frmFileTest.resx b/GUIs.ClientSuite/_TEST/frmDocTest.resx
similarity index 100%
rename from EDMI_ClientSuite/_TEST/frmFileTest.resx
rename to GUIs.ClientSuite/_TEST/frmDocTest.resx
diff --git a/EDMI_ClientSuite/_TEST/frmDocTest.vb b/GUIs.ClientSuite/_TEST/frmDocTest.vb
similarity index 86%
rename from EDMI_ClientSuite/_TEST/frmDocTest.vb
rename to GUIs.ClientSuite/_TEST/frmDocTest.vb
index cd000db4..e2fb3014 100644
--- a/EDMI_ClientSuite/_TEST/frmDocTest.vb
+++ b/GUIs.ClientSuite/_TEST/frmDocTest.vb
@@ -1,8 +1,6 @@
Imports DevExpress.XtraGrid
Public Class frmDocTest
- Private _CommonCommands As ClassCommonCommands
-
Private Sub DocTest_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
Dim oControlPatcher = New ClassControlPatcher(Of GridControl)(Me)
@@ -10,8 +8,6 @@ Public Class frmDocTest
ProcessContainer(AddressOf GridControlDefaults.DefaultGridSettings).
ProcessContainer(AddressOf GridControlDefaults.ReadOnlyGridSettings)
- _CommonCommands = New ClassCommonCommands(My.LogConfig)
-
Dim oSQL = "SELECT * FROM VWICM_DOC_METADATA_DE"
My.Channel.CreateDatabaseRequest("Load Doc Values", True)
@@ -26,7 +22,6 @@ Public Class frmDocTest
Dim oDatatable As DataTable = oResult.Table
-
txtDoctype.DataBindings.Add(New Binding("Text", oDatatable, "DOCTYPE"))
txtDocId.DataBindings.Add(New Binding("Text", oDatatable, "DOC_ID"))
@@ -40,7 +35,7 @@ Public Class frmDocTest
Dim oDocId As Int64 = Int64.Parse(txtDocId.Text)
Dim oValue As String = txtDoctype.Text
Dim oSyskey As String = "001-DOCTYPE"
- Dim oResult = Await _CommonCommands.FNICM_NEW_DOC_VALUE(oDocId, oSyskey, My.Application.User.Language, oValue)
+ Dim oResult = Await My.Common.Commands.FNICM_NEW_DOC_VALUE(oDocId, oSyskey, My.Application.User.Language, oValue)
If Not oResult.OK Then
MsgBox(oResult.ErrorMessage)
diff --git a/EDMI_ClientSuite/_TEST/frmFileTest.Designer.vb b/GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb
similarity index 97%
rename from EDMI_ClientSuite/_TEST/frmFileTest.Designer.vb
rename to GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb
index c7eafa56..3ac42dc9 100644
--- a/EDMI_ClientSuite/_TEST/frmFileTest.Designer.vb
+++ b/GUIs.ClientSuite/_TEST/frmFileTest.Designer.vb
@@ -1,4 +1,6 @@
-
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmFileTest
Inherits BaseForm
diff --git a/EDMI_ClientSuite/_TEST/frmWorkflowTest.resx b/GUIs.ClientSuite/_TEST/frmFileTest.resx
similarity index 100%
rename from EDMI_ClientSuite/_TEST/frmWorkflowTest.resx
rename to GUIs.ClientSuite/_TEST/frmFileTest.resx
diff --git a/EDMI_ClientSuite/_TEST/frmFileTest.vb b/GUIs.ClientSuite/_TEST/frmFileTest.vb
similarity index 98%
rename from EDMI_ClientSuite/_TEST/frmFileTest.vb
rename to GUIs.ClientSuite/_TEST/frmFileTest.vb
index ed8ab66b..13aaf27c 100644
--- a/EDMI_ClientSuite/_TEST/frmFileTest.vb
+++ b/GUIs.ClientSuite/_TEST/frmFileTest.vb
@@ -1,5 +1,5 @@
Imports System.IO
-Imports DigitalData.Modules.EDMIFileOps
+Imports DigitalData.Modules.EDMIAPI
Imports DigitalData.Modules.Filesystem
Imports DigitalData.Modules.Logging
diff --git a/EDMI_ClientSuite/_TEST/frmWorkflowTest.Designer.vb b/GUIs.ClientSuite/_TEST/frmWorkflowTest.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/_TEST/frmWorkflowTest.Designer.vb
rename to GUIs.ClientSuite/_TEST/frmWorkflowTest.Designer.vb
diff --git a/EDMI_ClientSuite/frmConfigService.resx b/GUIs.ClientSuite/_TEST/frmWorkflowTest.resx
similarity index 100%
rename from EDMI_ClientSuite/frmConfigService.resx
rename to GUIs.ClientSuite/_TEST/frmWorkflowTest.resx
diff --git a/EDMI_ClientSuite/_TEST/frmWorkflowTest.vb b/GUIs.ClientSuite/_TEST/frmWorkflowTest.vb
similarity index 100%
rename from EDMI_ClientSuite/_TEST/frmWorkflowTest.vb
rename to GUIs.ClientSuite/_TEST/frmWorkflowTest.vb
diff --git a/EDMI_ClientSuite/frmConfigService.Designer.vb b/GUIs.ClientSuite/frmConfigService.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/frmConfigService.Designer.vb
rename to GUIs.ClientSuite/frmConfigService.Designer.vb
diff --git a/EDMI_ClientSuite/frmHome.resx b/GUIs.ClientSuite/frmConfigService.resx
similarity index 100%
rename from EDMI_ClientSuite/frmHome.resx
rename to GUIs.ClientSuite/frmConfigService.resx
diff --git a/EDMI_ClientSuite/frmConfigService.vb b/GUIs.ClientSuite/frmConfigService.vb
similarity index 100%
rename from EDMI_ClientSuite/frmConfigService.vb
rename to GUIs.ClientSuite/frmConfigService.vb
diff --git a/EDMI_ClientSuite/frmConfigUser.Designer.vb b/GUIs.ClientSuite/frmConfigUser.Designer.vb
similarity index 100%
rename from EDMI_ClientSuite/frmConfigUser.Designer.vb
rename to GUIs.ClientSuite/frmConfigUser.Designer.vb
diff --git a/EDMI_ClientSuite/frmConfigUser.resx b/GUIs.ClientSuite/frmConfigUser.resx
similarity index 100%
rename from EDMI_ClientSuite/frmConfigUser.resx
rename to GUIs.ClientSuite/frmConfigUser.resx
diff --git a/EDMI_ClientSuite/frmConfigUser.vb b/GUIs.ClientSuite/frmConfigUser.vb
similarity index 100%
rename from EDMI_ClientSuite/frmConfigUser.vb
rename to GUIs.ClientSuite/frmConfigUser.vb
diff --git a/EDMI_ClientSuite/frmHome.Designer.vb b/GUIs.ClientSuite/frmHome.Designer.vb
similarity index 98%
rename from EDMI_ClientSuite/frmHome.Designer.vb
rename to GUIs.ClientSuite/frmHome.Designer.vb
index ccc3d183..6967bbf2 100644
--- a/EDMI_ClientSuite/frmHome.Designer.vb
+++ b/GUIs.ClientSuite/frmHome.Designer.vb
@@ -1,4 +1,6 @@
- _
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmHome
Inherits BaseRibbonForm
diff --git a/EDMI_ClientSuite/frmSplash.resx b/GUIs.ClientSuite/frmHome.resx
similarity index 100%
rename from EDMI_ClientSuite/frmSplash.resx
rename to GUIs.ClientSuite/frmHome.resx
diff --git a/EDMI_ClientSuite/frmHome.vb b/GUIs.ClientSuite/frmHome.vb
similarity index 100%
rename from EDMI_ClientSuite/frmHome.vb
rename to GUIs.ClientSuite/frmHome.vb
diff --git a/EDMI_ClientSuite/frmMain.Designer.vb b/GUIs.ClientSuite/frmMain.Designer.vb
similarity index 92%
rename from EDMI_ClientSuite/frmMain.Designer.vb
rename to GUIs.ClientSuite/frmMain.Designer.vb
index 7bcddbf8..05fcebf0 100644
--- a/EDMI_ClientSuite/frmMain.Designer.vb
+++ b/GUIs.ClientSuite/frmMain.Designer.vb
@@ -1,4 +1,6 @@
-
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmMain
Inherits BaseRibbonForm
@@ -32,7 +34,6 @@ Partial Class frmMain
Me.LabelCurrentVersion = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.SkinDropDownButtonItem1 = New DevExpress.XtraBars.SkinDropDownButtonItem()
- Me.BarButtonEntityDesigner = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonDeleteControl = New DevExpress.XtraBars.BarButtonItem()
Me.LabelCurrentLanguage = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
@@ -42,6 +43,8 @@ Partial Class frmMain
Me.BarButtonUserManager = New DevExpress.XtraBars.BarButtonItem()
Me.LabelServiceOffline = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem()
+ Me.BarButtonFormDesigner = New DevExpress.XtraBars.BarButtonItem()
+ Me.BarButtonItem4 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPageStart = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageAdmin = New DevExpress.XtraBars.Ribbon.RibbonPage()
@@ -55,7 +58,6 @@ Partial Class frmMain
Me.NavbarItemHome = New DevExpress.XtraBars.Navigation.NavigationBarItem()
Me.NavbarItemSearch = New DevExpress.XtraBars.Navigation.NavigationBarItem()
Me.NavbarItemWorkflow = New DevExpress.XtraBars.Navigation.NavigationBarItem()
- Me.BarButtonFormDesigner = New DevExpress.XtraBars.BarButtonItem()
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.MainMenu, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DocumentManager, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -68,9 +70,9 @@ Partial Class frmMain
'
Me.RibbonControl.ApplicationButtonDropDownControl = Me.MainMenu
Me.RibbonControl.ExpandCollapseItem.Id = 0
- Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonExit, Me.BarButtonUserSettings, Me.LabelCurrentUser, Me.LabelCurrentMachine, Me.LabelCurrentVersion, Me.BarButtonItem1, Me.SkinDropDownButtonItem1, Me.BarButtonEntityDesigner, Me.BarButtonDeleteControl, Me.BarButtonConnectionSettings, Me.LabelCurrentLanguage, Me.BarButtonItem2, Me.BarWorkspaceMenuItem1, Me.LabelServiceOnline, Me.BarButtonUserManager, Me.LabelServiceOffline, Me.BarButtonItem3, Me.BarButtonFormDesigner})
+ Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonExit, Me.BarButtonUserSettings, Me.LabelCurrentUser, Me.LabelCurrentMachine, Me.LabelCurrentVersion, Me.BarButtonItem1, Me.SkinDropDownButtonItem1, Me.BarButtonDeleteControl, Me.BarButtonConnectionSettings, Me.LabelCurrentLanguage, Me.BarButtonItem2, Me.BarWorkspaceMenuItem1, Me.LabelServiceOnline, Me.BarButtonUserManager, Me.LabelServiceOffline, Me.BarButtonItem3, Me.BarButtonFormDesigner, Me.BarButtonItem4})
Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
- Me.RibbonControl.MaxItemId = 24
+ Me.RibbonControl.MaxItemId = 25
Me.RibbonControl.MdiMergeStyle = DevExpress.XtraBars.Ribbon.RibbonMdiMergeStyle.Always
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.PageHeaderItemLinks.Add(Me.SkinDropDownButtonItem1)
@@ -146,14 +148,6 @@ Partial Class frmMain
Me.SkinDropDownButtonItem1.Id = 10
Me.SkinDropDownButtonItem1.Name = "SkinDropDownButtonItem1"
'
- 'BarButtonEntityDesigner
- '
- Me.BarButtonEntityDesigner.Caption = "Entitäten Designer"
- Me.BarButtonEntityDesigner.Id = 12
- Me.BarButtonEntityDesigner.ImageOptions.Image = CType(resources.GetObject("BarButtonEntityDesigner.ImageOptions.Image"), System.Drawing.Image)
- Me.BarButtonEntityDesigner.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonEntityDesigner.ImageOptions.LargeImage"), System.Drawing.Image)
- Me.BarButtonEntityDesigner.Name = "BarButtonEntityDesigner"
- '
'BarButtonDeleteControl
'
Me.BarButtonDeleteControl.Caption = "Delete Control"
@@ -173,6 +167,8 @@ Partial Class frmMain
'
Me.BarButtonItem2.Caption = "License Test"
Me.BarButtonItem2.Id = 16
+ 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"
'
'BarWorkspaceMenuItem1
@@ -217,6 +213,22 @@ Partial Class frmMain
Me.BarButtonItem3.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem3.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonItem3.Name = "BarButtonItem3"
'
+ 'BarButtonFormDesigner
+ '
+ Me.BarButtonFormDesigner.Caption = "Form Designer"
+ Me.BarButtonFormDesigner.Id = 23
+ Me.BarButtonFormDesigner.ImageOptions.Image = CType(resources.GetObject("BarButtonFormDesigner.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarButtonFormDesigner.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonFormDesigner.ImageOptions.LargeImage"), System.Drawing.Image)
+ Me.BarButtonFormDesigner.Name = "BarButtonFormDesigner"
+ '
+ 'BarButtonItem4
+ '
+ Me.BarButtonItem4.Caption = "Workflow Test"
+ Me.BarButtonItem4.Id = 24
+ Me.BarButtonItem4.ImageOptions.Image = CType(resources.GetObject("BarButtonItem4.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarButtonItem4.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.LargeImage"), System.Drawing.Image)
+ Me.BarButtonItem4.Name = "BarButtonItem4"
+ '
'RibbonPageStart
'
Me.RibbonPageStart.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3})
@@ -228,6 +240,7 @@ Partial Class frmMain
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem3)
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem2)
+ Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem4)
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
Me.RibbonPageGroup3.Text = "DEBUG"
'
@@ -245,7 +258,6 @@ Partial Class frmMain
'
'RibbonPageGroup1
'
- Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonEntityDesigner)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonFormDesigner)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "Inhalte"
@@ -306,14 +318,6 @@ Partial Class frmMain
Me.NavbarItemWorkflow.Name = "NavbarItemWorkflow"
Me.NavbarItemWorkflow.Text = "Workflow"
'
- 'BarButtonFormDesigner
- '
- Me.BarButtonFormDesigner.Caption = "Form Designer"
- Me.BarButtonFormDesigner.Id = 23
- Me.BarButtonFormDesigner.ImageOptions.Image = CType(resources.GetObject("BarButtonItem4.ImageOptions.Image"), System.Drawing.Image)
- Me.BarButtonFormDesigner.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem4.ImageOptions.LargeImage"), System.Drawing.Image)
- Me.BarButtonFormDesigner.Name = "BarButtonFormDesigner"
- '
'frmMain
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -354,7 +358,6 @@ Partial Class frmMain
Friend WithEvents DockManager As DevExpress.XtraBars.Docking.DockManager
Friend WithEvents SkinDropDownButtonItem1 As DevExpress.XtraBars.SkinDropDownButtonItem
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
- Friend WithEvents BarButtonEntityDesigner As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonDeleteControl As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonConnectionSettings As DevExpress.XtraBars.BarButtonItem
Friend WithEvents LabelCurrentLanguage As DevExpress.XtraBars.BarStaticItem
@@ -373,4 +376,5 @@ Partial Class frmMain
Friend WithEvents NavbarItemWorkflow As DevExpress.XtraBars.Navigation.NavigationBarItem
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarButtonFormDesigner As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents BarButtonItem4 As DevExpress.XtraBars.BarButtonItem
End Class
diff --git a/EDMI_ClientSuite/frmMain.resx b/GUIs.ClientSuite/frmMain.resx
similarity index 84%
rename from EDMI_ClientSuite/frmMain.resx
rename to GUIs.ClientSuite/frmMain.resx
index 28415e46..ed5110e8 100644
--- a/EDMI_ClientSuite/frmMain.resx
+++ b/GUIs.ClientSuite/frmMain.resx
@@ -258,34 +258,6 @@
6rZH6NG6Ev4hdBEzYOFbB1GRcZPAQzo2yVt0MLNPoaESGiqhoRIaKqEhSCnZTSZndNB7gO0ANATe5J/r
hfs556WUMvqxn7U7/0ND8ESg1kolZAIoJiEVQPUScgHUJjFD4hMBVJPwf4eH2aAheCJwws+v0D00BGh8
q7ZZdA8NQQiEQAiEQAiEQAig6U36+Q0aKqGhEhrqsGEFMnodJsvjoggAAAAASUVORK5CYII=
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAANdEVYdFRpdGxlAFdpemFyZDvJJTcGAAABNUlEQVQ4
- T6WTzUrDQBRGg6/UF3DlzocoKIg/CH0AFxLEhQTUpSt3KuJKy4CCYhQEEdy4Enc12DRU24WITebz3ukk
- ziTTIHjgSybJvWdmQuIB+FeKge/7qInU54bZzLEEBVLqwS/8PAiCl7LE6xw0pygzMku5DqNBhPhiQ41N
- 9ATfZYk6kOAxOllGEu7i9WgedM3FFiwwQ1iCnVgsoXe+gn7YQuewCZmNuMiJSxDEYhH9m5bK2+mC2kb2
- NeTCCpaAmqcpaXK5Wgh4NdHxHJLrbVrJ+N2YlAWblHZXrKmZu21ayd0eRPiA52jAhRUqWxhHone1pV7i
- 2e0TF2B2XTglTgHfTD8/8H6/r5q4mXFJJgoU+iOqk9QLDHJJnlzyZwEzSUJUBa4wZYnGFpihIlcaFBYY
- PxO8H2xiJi+n2GplAAAAAElFTkSuQmCC
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAANdEVYdFRpdGxlAFdpemFyZDvJJTcGAAACOklEQVRY
- R8WUTUtbQRSG3ZTiL+hfcNeFq/4Fof/ATQWrobWimyrdSTYiwU23oeCqhVJbNX5gq6JuWoTabSUWqU2u
- JiYIJpKY5PieJCP343jvzDXevvAwd05m5jxcJreLiP4rYjFKxGKUiMUoEYuKeDxOhvwFfYD3epB6iEUF
- NmHQD69PJBJXyWSyD1P3WY65Qiwqwgik02lRIjIBjiRxZ4FK7nf76fbY17sltASO3z/rB49sNWpUy1Tc
- m6PjDwM89Y1dgNOWqLKErsAKqIENECsffafsl3E6ScUIcyzxj1uAoyTwm+diMo4Jmkxws9y3V2QtDVN2
- YYjyeC7sjmsL+JDBEkc/xjFBkyeZT4PNhm50BPzCEoijH+OYoMkDcFnYGfMI8Bsp/nhHjXoNS82jKzBo
- LQ57mitYIrcxTfXKBZabJVAAzXtAKb85KjZn8lujdLIcIys1QbWLPLbpx1cAjR+C/dPVF5RbH7m5eIrT
- tZfEd8NKTdL5r49ULfzBNrMECTwGMyAJ5sE2aCgB/gZUzg6xlOjp1GpzNI3WHbADgbcW/yW/4o1sz6LU
- ykHmvCnBo0nCCHRby28o+/k5Xf776WgaRsJYgKkWj3DzX+N7XMe09frDSoQSAFQrnfHQjLupiUQogfYm
- R8JKdEyAY2/Ko8JPoqMCHHfzIImOC3BMJO5FgKMrEVogCE6QhG2tp4encBs4MIheIIn0SucpxKIEDtJB
- lHCfZUcsSuAgXdwSkb4BhZLgUTyvBXVdA6q9hTy63+d5AAAAAElFTkSuQmCC
@@ -327,6 +299,34 @@
Q0eB76GXlBmcwUboHljEX/VYrs+ZDZd64hAeIV8x0X1zDDpN+l3QE7VvnQ136oWVadThQS8ueo+wj2kb
5rjFxS4oxIUHPaJ3orXehjluMXRj/i1c46fg1v/zBvQ01CWNEH3D8BW6GV9A74v5xaXFho1Od+wP/kd2
dhb/KMUAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAQdEVYdFRpdGxlAE1hc2s7Um9sZTu6seyzAAAA3klE
+ QVQ4T52SvQ2CYBRFia0TuACF0coxbLF1AgvDAJQu4ASG6ACugI07UJlYKvYUeo95H/lASITiRO7Pu8GE
+ 4HmJS/EeSMlA0TD7UDCQN8w+5AxkJk5iKcb2i3bFrixjIDUxE2gH2g10ZSkiMTHkDRIGIhNDiBgIxcsz
+ /4Wb0P2ns5l94CZwA1sz+8BNNTAV7ntYmNcGGR263FQDsBOEezEyzwePjA7dr+8X5uIqKBzFSkwMnvHI
+ 6ND9GYC1eAiKbZDRqW78Y8dG3EXzGI+s1q8JD762g7gZPOM1enHwAUbOxAVvaZeAAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAQdEVYdFRpdGxlAE1hc2s7Um9sZTu6seyzAAACmUlE
+ QVRYR8XWv29OcRTH8ZakQhlEikhFiEQZxM/QRGNoRJoKmyK2iviRpsEmERaDwWCxmQ1iaewW5i4MiH/B
+ ZL8+72++5+bcb8/zuH2eG4bXzePecz7nVO+9fUaqqvqvwpPm16eH83Ja9siocG4YZJBF5jwzwsFGRUvy
+ LLsnV2VWTshB2SXbZEw2ZHzmHNeooZYeesmwvCVmhIONihZdQ9cWmREONipaKJq6tMCMcLBR0VzR1KU5
+ ZoSDjYqmi6YuTTMjHGxUNFU0tfFUbos9Qaasm2KGDXot3KGnxD9uW+Sy3JS78kgeZ3zmHNeomZEjslPI
+ IItMsndIucCEX+CbVNkXeSfP5ZZclKPC87tVNmZ85hzXqKGWHnrJsDyyywXuSJptC3wWa+ga2eUCV6Sx
+ wHuJmrtA9l7xC/DraSzwSqLmLpB9WGw4989uaSzwQHzTR+FO3pfxmXO+pm0d2WfEFrguzGwswO/Eh56U
+ VORwzoe3rSObm9QWYJlU6xfgv8ga+Cl8oMe19daRfU0Yzh+37ZLq/AJYFWvqCplk3xcWuJD/HS7wRqKQ
+ YZDJDcfwZZmQngvwcohChkHmcWGB81IPR7nAMfktUdAgyCLzktyQzdJ3AaxIFDYIsvh2xHcKvh35OUm0
+ AHdpFDYIsvbLpPgZtWiBA/JdosD1IIOscfH5DdECeCE+rN/zbvxzDzL++i261wL8Tf8pFtbrjWfKNx+9
+ ZNQ1zOglHXxx9kQs0Jbgp7R3fr93P72NvHKolw5lg/C6/CA+uA166letKYd66VA2ZHzT+SrRoAi19KzJ
+ Kod66RA1ZWelzVNBDbVRxpqhXjpETc4heSvRYHCNmqg3KYd66RA1FTbJOXkpPzI+c45rUU+tHOqFJ/+d
+ auQPQiXhdkHlGrsAAAAASUVORK5CYII=
@@ -403,31 +403,49 @@
ldBSCS1BCKHsZDJGA3s3sDsALYFtssfnwfcxxmdKabRle9ZqvYSWoEcg50wlZAIIk5AKIK2EXACZJR6Q
OEUAqRL2bvNjVmgJegTecLdP6D20BNh4VOaz6D20BD8ncLnedrGMT8An4BPwCfzHBL6JC3QLHEl7foWW
SmiphJZKaKmjDC/fWMVvGNRzeQAAAABJRU5ErkJggg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFdpbmRvd3M7RXll7xo9bwAAANxJ
+ REFUOE/dkT0KwkAQhQNaiaCn8RaewgOI4gkkF7CyttDebsNCIJV6AsHKAySVgiYbGN9bXLFYsqBWLnzM
+ ZGbey/5EIvIV0XCu5Bv+wSCOYybeC2qCGmo/NiAvA+AdCPELAxM0QK8NpuAEbs84A6wPGg1Q74FdkiRS
+ FIUYY2zkN+oH0A8ZrNM0RSqy3Z9ltMhszsU6+puQwaUsS6RixXx3Z1JVFXVXZ+CjC5ZaaytwO2DkYh39
+ lffPDgx0gOaZ8zyXuq5tVEpRnLHvFb6DId72BBzBHfAVxqAlItED1Ra9ByAahOsAAAAASUVORK5CYII=
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAFdpbmRvd3M7RXll7xo9bwAAAY1J
+ REFUWEftl7FKw1AUhvMIro66+QBCcfEJ9Cl8BH0BCQQcMgZEMB27OAgOxcUhQyRDUoUMOri5iEEHoWAa
+ jv9/0ys3aQW1SemQAx85597zn/unTVtqicg3e8dDWSY8szPQGagYWBY43LJtGykM1F21zUoYIJ2B1THA
+ BKgHo230oXMN6I026Qx0BjoDq2DgwMhxacEAZu2AM8/zxHEcBepHrnHP6HvitTEDmLEBrvv9viRJIlmW
+ yWQyUTDnGvfYM+1do64RA9DvgrcwDFGKfIxzubl/lqPzW1WbwR72UoNycQPQboH3NE1RloefXNyZPz4z
+ wV5qqG3CwDCKIqRl8M714T8ZYFBDbRMGxnmeIy2DL/tvDFBDbesGTMxnokkDl/rhY9TfAhPu6YDukFpt
+ 4L/sg03wOhqN1OD6Q6jhGvcY7KWG2rl39VcwaNt1XQmCAGX1Y0iY68PZg/4XalA298cEA9cHg4H4vi9x
+ HKsvn6IoFMy5hp4QXLFX62YGLQqG98ApeACfU5hzrVftF+sLoRMhmJtEnpwAAAAASUVORK5CYII=
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAEXRFWHRUaXRsZQBXaW5kb3dz
- O0V5Ze8aPW8AAADcSURBVDhP3ZE9CsJAEIUDWomgp/EWnsIDiOIJJBewsrbQ3m7DQiCVegLBygMklYIm
- GxjfW1yxWLKgVi58zGRm3sv+RCLyFdFwruQb/sEgjmMm3gtqghpqPzYgLwPgHQjxCwMTNECvDabgBG7P
- OAOsDxoNUO+BXZIkUhSFGGNs5DfqB9APGazTNEUqst2fZbTIbM7FOvqbkMGlLEukYsV8d2dSVRV1V2fg
- owuWWmsrcDtg5GId/ZX3zw4MdIDmmfM8l7qubVRKUZyx7xW+gyHe9gQcwR3wFcagJSLRA9UWvQcgGoTr
- AAAAAElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAsdEVYdFRpdGxlAERvY3VtZW50O01hcDtTY2hlbWU7
+ RGlhZ3JhbTtIaWVyYXI7TmV0Tg8qRAAAAHVJREFUOE/NzMENgDAMQ9EuyDoMwBKMwLXHbhf0JUBtYqCo
+ Fw5PCNdOMrMhMpyWYorvIQRQY/geQgA1hu8hBFBj+B5CADWG7yEEUGP4HkJQyznbQb6j+akGbx4P8D1d
+ A5e1B+ZttRqFnuz2wJfsJwdGyLCfpR37LNV02NfAHQAAAABJRU5ErkJggg==
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAEXRFWHRUaXRsZQBXaW5kb3dz
- O0V5Ze8aPW8AAAGNSURBVFhH7ZexSsNQFIbzCK6OuvkAQnHxCfQpfAR9AQkEHDIGRDAduzgIDsXFIUMk
- Q1KFDDq4uYhBB6FgGo7/f9MrN2kFtUnpkAMfOefe85/7p01baonIN3vHQ1kmPLMz0BmoGFgWONyybRsp
- DNRdtc1KGCCdgdUxwASoB6Nt9KFzDeiNNukMdAY6A6tg4MDIcWnBAGbtgDPP88RxHAXqR65xz+h74rUx
- A5ixAa77/b4kSSJZlslkMlEw5xr32DPtXaOuEQPQ74K3MAxRinyMc7m5f5aj81tVm8Ee9lKDcnED0G6B
- 9zRNUZaHn1zcmT8+M8FeaqhtwsAwiiKkZfDO9eE/GWBQQ20TBsZ5niMtgy/7bwxQQ23rBkzMZ6JJA5f6
- 4WPU3wIT7umA7pBabeC/7INN8DoajdTg+kOo4Rr3GOylhtq5d/VXMGjbdV0JggBl9WNImOvD2YP+F2pQ
- NvfHBAPXB4OB+L4vcRyrL5+iKBTMuYaeEFyxV+tmBi0KhvfAKXgAn1OYc61X7RfrC6ETIZibRJ6cAAAA
- AElFTkSuQmCC
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAsdEVYdFRpdGxlAERvY3VtZW50O01hcDtTY2hlbWU7
+ RGlhZ3JhbTtIaWVyYXI7TmV0Tg8qRAAAAMNJREFUWEft0rENwjAQBdAsyDoMwBKMQOuS7Q4cYQlFT4cj
+ Badx8VL8hP+vYImIUzEciaFcbs/YgR3CUDCSYYcwFIxk2CEMBSMZdghDwUiGHcJQMJJhhzAUjGTYIQwF
+ Ixl2CEPBSIYdwlAwkmGHMBSMZNghDKWWbpVS4o3v1CEMRSNDD5B2gN71YvgpPhq3GLYfdNj1nbYYth90
+ +O8BevftiO/Wx/Vxj1/qP1v5Vm9f/a6aB8wD5gHzgPVxJoYjMRwnlhd3GhRitUujhAAAAABJRU5ErkJg
+ gg==
diff --git a/EDMI_ClientSuite/frmMain.vb b/GUIs.ClientSuite/frmMain.vb
similarity index 94%
rename from EDMI_ClientSuite/frmMain.vb
rename to GUIs.ClientSuite/frmMain.vb
index f614096c..1c7662a9 100644
--- a/EDMI_ClientSuite/frmMain.vb
+++ b/GUIs.ClientSuite/frmMain.vb
@@ -24,10 +24,13 @@ Public Class frmMain
' Initialize Form Related Variables
My.MainForm = Me
+
+ ' Initialize Common Functions
+ My.Common = New ClassCommon(My.LogConfig)
End Sub
- Private Sub SetOnlineLabel()
- If My.Application.Service.Online Then
+ Private Sub SetOnlineLabel(Online As Boolean)
+ If Online Then
LabelServiceOnline.Visibility = DevExpress.XtraBars.BarItemVisibility.Always
LabelServiceOffline.Visibility = DevExpress.XtraBars.BarItemVisibility.Never
Else
@@ -37,7 +40,7 @@ Public Class frmMain
End Sub
Private Sub HandleOnlineChanged(sender As Object, Online As Boolean)
- SetOnlineLabel()
+ SetOnlineLabel(Online)
End Sub
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
@@ -50,7 +53,7 @@ Public Class frmMain
_PanelManager = New ClassPanelManager(My.LogConfig, DocumentManager, DockManager)
' Show Service Status Label
- SetOnlineLabel()
+ SetOnlineLabel(True)
' Apply Selected Skin Style
UserLookAndFeel.Default.SetSkinStyle(My.UIConfig.SkinName)
@@ -129,12 +132,6 @@ Public Class frmMain
frm.Show()
End Sub
- Private Sub BarButtonEntityDesigner_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonEntityDesigner.ItemClick
- Dim frm As New frmEntityDesigner()
- frm.MdiParent = DocumentManager.MdiParent
- frm.Show()
- End Sub
-
Private Sub BarButtonFormDesigner_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonFormDesigner.ItemClick
Dim oForm As New frmFormDesigner()
oForm.MdiParent = DocumentManager.MdiParent
@@ -216,4 +213,11 @@ Public Class frmMain
e.Cancel = True
End Sub
+
+ Private Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
+ Dim oForm As New frmWorkflowStep(142) With {
+ .MdiParent = DocumentManager.MdiParent
+ }
+ oForm.Show()
+ End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmObjectEditor.Designer.vb b/GUIs.ClientSuite/frmObjectEditor.Designer.vb
similarity index 99%
rename from EDMI_ClientSuite/frmObjectEditor.Designer.vb
rename to GUIs.ClientSuite/frmObjectEditor.Designer.vb
index 599aff3f..3a4b80c4 100644
--- a/EDMI_ClientSuite/frmObjectEditor.Designer.vb
+++ b/GUIs.ClientSuite/frmObjectEditor.Designer.vb
@@ -1,4 +1,6 @@
-
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmObjectEditor
Inherits BaseRibbonForm
diff --git a/EDMI_ClientSuite/frmObjectEditor.resx b/GUIs.ClientSuite/frmObjectEditor.resx
similarity index 100%
rename from EDMI_ClientSuite/frmObjectEditor.resx
rename to GUIs.ClientSuite/frmObjectEditor.resx
diff --git a/EDMI_ClientSuite/frmObjectEditor.vb b/GUIs.ClientSuite/frmObjectEditor.vb
similarity index 100%
rename from EDMI_ClientSuite/frmObjectEditor.vb
rename to GUIs.ClientSuite/frmObjectEditor.vb
diff --git a/EDMI_ClientSuite/frmSearch.Designer.vb b/GUIs.ClientSuite/frmSearch.Designer.vb
similarity index 99%
rename from EDMI_ClientSuite/frmSearch.Designer.vb
rename to GUIs.ClientSuite/frmSearch.Designer.vb
index c3f5e582..cb8a4a76 100644
--- a/EDMI_ClientSuite/frmSearch.Designer.vb
+++ b/GUIs.ClientSuite/frmSearch.Designer.vb
@@ -1,4 +1,6 @@
- _
+Imports DigitalData.GUIs.ClientSuite.Base
+
+
Partial Class frmSearch
Inherits BaseRibbonForm
diff --git a/EDMI_ClientSuite/frmSearch.resx b/GUIs.ClientSuite/frmSearch.resx
similarity index 100%
rename from EDMI_ClientSuite/frmSearch.resx
rename to GUIs.ClientSuite/frmSearch.resx
diff --git a/EDMI_ClientSuite/frmSearch.vb b/GUIs.ClientSuite/frmSearch.vb
similarity index 100%
rename from EDMI_ClientSuite/frmSearch.vb
rename to GUIs.ClientSuite/frmSearch.vb
diff --git a/EDMI_ClientSuite/frmSplash.designer.vb b/GUIs.ClientSuite/frmSplash.designer.vb
similarity index 100%
rename from EDMI_ClientSuite/frmSplash.designer.vb
rename to GUIs.ClientSuite/frmSplash.designer.vb
diff --git a/TestGUI/ConfigTest.resx b/GUIs.ClientSuite/frmSplash.resx
similarity index 100%
rename from TestGUI/ConfigTest.resx
rename to GUIs.ClientSuite/frmSplash.resx
diff --git a/EDMI_ClientSuite/frmSplash.vb b/GUIs.ClientSuite/frmSplash.vb
similarity index 98%
rename from EDMI_ClientSuite/frmSplash.vb
rename to GUIs.ClientSuite/frmSplash.vb
index ffe23b80..4b59fbcd 100644
--- a/EDMI_ClientSuite/frmSplash.vb
+++ b/GUIs.ClientSuite/frmSplash.vb
@@ -2,7 +2,7 @@
Imports System.ServiceModel
Imports System.Threading
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.Modules.EDMIAPI.EDMIServiceReference
Public NotInheritable Class frmSplash
Private _Worker As New BackgroundWorker()
diff --git a/EDMI_ClientSuite/packages.config b/GUIs.ClientSuite/packages.config
similarity index 78%
rename from EDMI_ClientSuite/packages.config
rename to GUIs.ClientSuite/packages.config
index 9ba88bff..cd1527a3 100644
--- a/EDMI_ClientSuite/packages.config
+++ b/GUIs.ClientSuite/packages.config
@@ -2,5 +2,6 @@
+
\ No newline at end of file
diff --git a/GUIs.Test.ADSyncTest/ADSyncTest.vbproj b/GUIs.Test.ADSyncTest/ADSyncTest.vbproj
new file mode 100644
index 00000000..8d9c8289
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/ADSyncTest.vbproj
@@ -0,0 +1,150 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {7386AB04-DF8D-4DFB-809D-1FAC8212CB7E}
+ WinExe
+ ADSyncTest.My.MyApplication
+ ADSyncTest
+ ADSyncTest
+ 512
+ WindowsForms
+ v4.6.1
+ true
+
+
+ AnyCPU
+ true
+ full
+ true
+ true
+ bin\Debug\
+ ADSyncTest.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ AnyCPU
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ ADSyncTest.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+
+
+
+
+ {39ec839a-3c30-4922-a41e-6b09d1dde5c3}
+ Jobs
+
+
+ {EAF0EA75-5FA7-485D-89C7-B2D843B03A96}
+ Database
+
+
+ {AB6F09BF-E794-4F6A-94BB-C97C0BA84D64}
+ Interfaces
+
+
+ {903B2D7D-3B80-4BE9-8713-7447B704E1B0}
+ Logging
+
+
+
+
\ No newline at end of file
diff --git a/GUIs.Test.ADSyncTest/App.config b/GUIs.Test.ADSyncTest/App.config
new file mode 100644
index 00000000..5534e287
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GUIs.Test.ADSyncTest/Form1.Designer.vb b/GUIs.Test.ADSyncTest/Form1.Designer.vb
new file mode 100644
index 00000000..309bfed9
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/Form1.Designer.vb
@@ -0,0 +1,96 @@
+ _
+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()
+ Me.Button1 = New System.Windows.Forms.Button()
+ Me.ListBox1 = New System.Windows.Forms.ListBox()
+ Me.ListBox2 = New System.Windows.Forms.ListBox()
+ Me.Button2 = New System.Windows.Forms.Button()
+ Me.Button3 = New System.Windows.Forms.Button()
+ Me.SuspendLayout()
+ '
+ 'Button1
+ '
+ Me.Button1.Location = New System.Drawing.Point(12, 12)
+ Me.Button1.Name = "Button1"
+ Me.Button1.Size = New System.Drawing.Size(227, 52)
+ Me.Button1.TabIndex = 0
+ Me.Button1.Text = "Sync"
+ Me.Button1.UseVisualStyleBackColor = True
+ '
+ 'ListBox1
+ '
+ Me.ListBox1.FormattingEnabled = True
+ Me.ListBox1.Location = New System.Drawing.Point(245, 12)
+ Me.ListBox1.Name = "ListBox1"
+ Me.ListBox1.Size = New System.Drawing.Size(244, 420)
+ Me.ListBox1.TabIndex = 1
+ '
+ 'ListBox2
+ '
+ Me.ListBox2.FormattingEnabled = True
+ Me.ListBox2.Location = New System.Drawing.Point(495, 12)
+ Me.ListBox2.Name = "ListBox2"
+ Me.ListBox2.Size = New System.Drawing.Size(266, 420)
+ Me.ListBox2.TabIndex = 2
+ '
+ 'Button2
+ '
+ Me.Button2.Location = New System.Drawing.Point(12, 70)
+ Me.Button2.Name = "Button2"
+ Me.Button2.Size = New System.Drawing.Size(227, 38)
+ Me.Button2.TabIndex = 3
+ Me.Button2.Text = "List Groups"
+ Me.Button2.UseVisualStyleBackColor = True
+ '
+ 'Button3
+ '
+ Me.Button3.Location = New System.Drawing.Point(12, 114)
+ Me.Button3.Name = "Button3"
+ Me.Button3.Size = New System.Drawing.Size(227, 35)
+ Me.Button3.TabIndex = 4
+ Me.Button3.Text = "List Users for selected Group"
+ Me.Button3.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(800, 450)
+ Me.Controls.Add(Me.Button3)
+ Me.Controls.Add(Me.Button2)
+ Me.Controls.Add(Me.ListBox2)
+ Me.Controls.Add(Me.ListBox1)
+ Me.Controls.Add(Me.Button1)
+ Me.Name = "Form1"
+ Me.Text = "Form1"
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Friend WithEvents Button1 As Button
+ Friend WithEvents ListBox1 As ListBox
+ Friend WithEvents ListBox2 As ListBox
+ Friend WithEvents Button2 As Button
+ Friend WithEvents Button3 As Button
+End Class
diff --git a/TestGUI/FolderWatcher.resx b/GUIs.Test.ADSyncTest/Form1.resx
similarity index 100%
rename from TestGUI/FolderWatcher.resx
rename to GUIs.Test.ADSyncTest/Form1.resx
diff --git a/GUIs.Test.ADSyncTest/Form1.vb b/GUIs.Test.ADSyncTest/Form1.vb
new file mode 100644
index 00000000..b3dc7359
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/Form1.vb
@@ -0,0 +1,85 @@
+Imports DigitalData.Modules.Interfaces
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Interfaces.ActiveDirectoryInterface
+Imports DigitalData.Modules.Database
+
+Public Class Form1
+ Private _sync As ActiveDirectoryInterface
+ Private _logConfig As LogConfig
+ Private _logger As Logger
+ Private _firebird As Firebird
+
+ Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ _logConfig = New LogConfig(LogConfig.PathType.CurrentDirectory)
+ _logConfig.Debug = True
+ _logger = _logConfig.GetLogger()
+ _firebird = New Firebird(_logConfig, "172.24.12.41", "172.24.12.41:E:\DB\Firebird\Databases\DD_ICM.fdb", "sysdba", "dd")
+
+ _sync = New ActiveDirectoryInterface(_logConfig, _firebird)
+ _sync.Authenticate()
+
+ Dim oType As Type = Type.GetType("DigitalData.Modules.Jobs.ADSyncJob")
+ Activator.CreateInstance(oType)
+ End Sub
+
+ Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
+ Dim oGroup As String = ListBox1.SelectedItem
+ _sync.SyncUsersForGroup(oGroup)
+
+ '' STEP 1: Get all Groups that have AD_SYNC enabled
+ 'Dim oSQL As String = $"SELECT RECORD_ID, GROUP_NAME FROM VWICM_GROUP WHERE AD_SYNC = 1"
+ 'Dim oResult As DataTable = _firebird.GetDatatable(oSQL)
+
+
+ 'For Each oRow As DataRow In oResult.Rows
+ ' Dim oGroupName As String = oRow.Item("GROUP_NAME")
+ ' Dim oGroupId As Int64 = oRow.Item("RECORD_ID")
+
+ ' ' STEP 2: List all Users for that Group
+ ' Dim oUsers As List(Of ADUser) = _sync.ListUsers(oGroupName)
+
+ ' For Each oUser In oUsers
+ ' ' STEP 3: Check if user exists in DB
+ ' oSQL = $"SELECT FNICM_GET_RECORD4SYSKEY('{oUser.samAccountName}','001-USRNAME') from RDB$DATABASE"
+ ' Dim oResult2 = _firebird.GetScalarValue(oSQL)
+ ' Dim oUserId
+
+ ' ' STEP 3.A: If user does not exists, create and add to group
+ ' If IsDBNull(oResult2) Then
+ ' 'Create user
+ ' oSQL = $"SELECT FNICM_RADM_NEW_USER('{oUser.GivenName}', '{oUser.Surname}', '{oUser.samAccountName}', 'AD-Sync') from RDB$DATABASE"
+ ' Dim oResult3 = _firebird.GetScalarValue(oSQL)
+ ' oUserId = oResult3
+ ' Else
+ ' oUserId = oResult2
+ ' End If
+
+ ' ' STEP 4: Add user to group
+ ' oSQL = $"SELECT FNICM_RADM_NEW_USER2GROUP({oUserId}, {oGroupId}, 'AD-Sync') from RDB$DATABASE"
+ ' Dim oResult4 = _firebird.GetScalarValue(oSQL)
+ ' Next
+ 'Next
+ End Sub
+
+ Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
+ Dim oGroups = _sync.ListGroups()
+
+ For Each oGroup In oGroups
+ ListBox1.Items.Add(oGroup.Name)
+ Next
+ End Sub
+
+ Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
+ Dim oGroup As String = ListBox1.SelectedItem
+ Dim oUsers = _sync.ListUsers(oGroup)
+
+ ListBox2.Items.Clear()
+ For Each oUser In oUsers
+ ListBox2.Items.Add(oUser.samAccountName)
+ Next
+
+ If oUsers.Count = 0 Then
+ ListBox2.Items.Add("No users found ¯\_(ツ)_/¯")
+ End If
+ End Sub
+End Class
diff --git a/GUIs.Test.ADSyncTest/My Project/Application.Designer.vb b/GUIs.Test.ADSyncTest/My Project/Application.Designer.vb
new file mode 100644
index 00000000..2d8e77ac
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/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.ADSyncTest.Form1
+ End Sub
+ End Class
+End Namespace
diff --git a/EDMDesigner/My Project/Application.myapp b/GUIs.Test.ADSyncTest/My Project/Application.myapp
similarity index 100%
rename from EDMDesigner/My Project/Application.myapp
rename to GUIs.Test.ADSyncTest/My Project/Application.myapp
diff --git a/GUIs.Test.ADSyncTest/My Project/AssemblyInfo.vb b/GUIs.Test.ADSyncTest/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..3184d7f5
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/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/GUIs.Test.ADSyncTest/My Project/Resources.Designer.vb b/GUIs.Test.ADSyncTest/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..7dc5da1d
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/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("ADSyncTest.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/LookupGrid/My Project/Resources.resx b/GUIs.Test.ADSyncTest/My Project/Resources.resx
similarity index 100%
rename from LookupGrid/My Project/Resources.resx
rename to GUIs.Test.ADSyncTest/My Project/Resources.resx
diff --git a/GUIs.Test.ADSyncTest/My Project/Settings.Designer.vb b/GUIs.Test.ADSyncTest/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..54718620
--- /dev/null
+++ b/GUIs.Test.ADSyncTest/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.ADSyncTest.My.MySettings
+ Get
+ Return Global.ADSyncTest.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/LookupGrid/My Project/Settings.settings b/GUIs.Test.ADSyncTest/My Project/Settings.settings
similarity index 100%
rename from LookupGrid/My Project/Settings.settings
rename to GUIs.Test.ADSyncTest/My Project/Settings.settings
diff --git a/Config/packages.config b/GUIs.Test.ADSyncTest/packages.config
similarity index 100%
rename from Config/packages.config
rename to GUIs.Test.ADSyncTest/packages.config
diff --git a/EDMDesigner/App.config b/GUIs.Test.EDMDesigner/App.config
similarity index 100%
rename from EDMDesigner/App.config
rename to GUIs.Test.EDMDesigner/App.config
diff --git a/EDMDesigner/ClassCurrentUser.vb b/GUIs.Test.EDMDesigner/ClassCurrentUser.vb
similarity index 100%
rename from EDMDesigner/ClassCurrentUser.vb
rename to GUIs.Test.EDMDesigner/ClassCurrentUser.vb
diff --git a/EDMDesigner/ClassInit.vb b/GUIs.Test.EDMDesigner/ClassInit.vb
similarity index 100%
rename from EDMDesigner/ClassInit.vb
rename to GUIs.Test.EDMDesigner/ClassInit.vb
diff --git a/EDMDesigner/EDMDesigner.vbproj b/GUIs.Test.EDMDesigner/EDMDesigner.vbproj
similarity index 100%
rename from EDMDesigner/EDMDesigner.vbproj
rename to GUIs.Test.EDMDesigner/EDMDesigner.vbproj
diff --git a/EDMDesigner/FrmConnection.Designer.vb b/GUIs.Test.EDMDesigner/FrmConnection.Designer.vb
similarity index 100%
rename from EDMDesigner/FrmConnection.Designer.vb
rename to GUIs.Test.EDMDesigner/FrmConnection.Designer.vb
diff --git a/EDMDesigner/FrmConnection.resx b/GUIs.Test.EDMDesigner/FrmConnection.resx
similarity index 100%
rename from EDMDesigner/FrmConnection.resx
rename to GUIs.Test.EDMDesigner/FrmConnection.resx
diff --git a/EDMDesigner/FrmConnection.vb b/GUIs.Test.EDMDesigner/FrmConnection.vb
similarity index 100%
rename from EDMDesigner/FrmConnection.vb
rename to GUIs.Test.EDMDesigner/FrmConnection.vb
diff --git a/EDMDesigner/FrmMain.vb b/GUIs.Test.EDMDesigner/FrmMain.vb
similarity index 100%
rename from EDMDesigner/FrmMain.vb
rename to GUIs.Test.EDMDesigner/FrmMain.vb
diff --git a/EDMDesigner/FrmNewTable.Designer.vb b/GUIs.Test.EDMDesigner/FrmNewTable.Designer.vb
similarity index 100%
rename from EDMDesigner/FrmNewTable.Designer.vb
rename to GUIs.Test.EDMDesigner/FrmNewTable.Designer.vb
diff --git a/GUIs.Test.EDMDesigner/FrmNewTable.resx b/GUIs.Test.EDMDesigner/FrmNewTable.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/GUIs.Test.EDMDesigner/FrmNewTable.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/EDMDesigner/FrmNewTable.vb b/GUIs.Test.EDMDesigner/FrmNewTable.vb
similarity index 100%
rename from EDMDesigner/FrmNewTable.vb
rename to GUIs.Test.EDMDesigner/FrmNewTable.vb
diff --git a/EDMDesigner/ModuleRuntimeVariables.vb b/GUIs.Test.EDMDesigner/ModuleRuntimeVariables.vb
similarity index 100%
rename from EDMDesigner/ModuleRuntimeVariables.vb
rename to GUIs.Test.EDMDesigner/ModuleRuntimeVariables.vb
diff --git a/EDMDesigner/My Project/Application.Designer.vb b/GUIs.Test.EDMDesigner/My Project/Application.Designer.vb
similarity index 100%
rename from EDMDesigner/My Project/Application.Designer.vb
rename to GUIs.Test.EDMDesigner/My Project/Application.Designer.vb
diff --git a/ZUGFeRDTest/My Project/Application.myapp b/GUIs.Test.EDMDesigner/My Project/Application.myapp
similarity index 100%
rename from ZUGFeRDTest/My Project/Application.myapp
rename to GUIs.Test.EDMDesigner/My Project/Application.myapp
diff --git a/EDMDesigner/My Project/AssemblyInfo.vb b/GUIs.Test.EDMDesigner/My Project/AssemblyInfo.vb
similarity index 100%
rename from EDMDesigner/My Project/AssemblyInfo.vb
rename to GUIs.Test.EDMDesigner/My Project/AssemblyInfo.vb
diff --git a/EDMDesigner/My Project/DataSources/EDMDesigner.My.MySettings.datasource b/GUIs.Test.EDMDesigner/My Project/DataSources/EDMDesigner.My.MySettings.datasource
similarity index 100%
rename from EDMDesigner/My Project/DataSources/EDMDesigner.My.MySettings.datasource
rename to GUIs.Test.EDMDesigner/My Project/DataSources/EDMDesigner.My.MySettings.datasource
diff --git a/EDMDesigner/My Project/Resources.Designer.vb b/GUIs.Test.EDMDesigner/My Project/Resources.Designer.vb
similarity index 100%
rename from EDMDesigner/My Project/Resources.Designer.vb
rename to GUIs.Test.EDMDesigner/My Project/Resources.Designer.vb
diff --git a/EDMDesigner/My Project/Resources.resx b/GUIs.Test.EDMDesigner/My Project/Resources.resx
similarity index 100%
rename from EDMDesigner/My Project/Resources.resx
rename to GUIs.Test.EDMDesigner/My Project/Resources.resx
diff --git a/EDMDesigner/My Project/Settings.Designer.vb b/GUIs.Test.EDMDesigner/My Project/Settings.Designer.vb
similarity index 100%
rename from EDMDesigner/My Project/Settings.Designer.vb
rename to GUIs.Test.EDMDesigner/My Project/Settings.Designer.vb
diff --git a/EDMDesigner/My Project/Settings.settings b/GUIs.Test.EDMDesigner/My Project/Settings.settings
similarity index 100%
rename from EDMDesigner/My Project/Settings.settings
rename to GUIs.Test.EDMDesigner/My Project/Settings.settings
diff --git a/EDMDesigner/My Project/licenses.licx b/GUIs.Test.EDMDesigner/My Project/licenses.licx
similarity index 100%
rename from EDMDesigner/My Project/licenses.licx
rename to GUIs.Test.EDMDesigner/My Project/licenses.licx
diff --git a/EDMDesigner/My Project/licenses.licx.bak b/GUIs.Test.EDMDesigner/My Project/licenses.licx.bak
similarity index 100%
rename from EDMDesigner/My Project/licenses.licx.bak
rename to GUIs.Test.EDMDesigner/My Project/licenses.licx.bak
diff --git a/EDMDesigner/Resources/database_link.png b/GUIs.Test.EDMDesigner/Resources/database_link.png
similarity index 100%
rename from EDMDesigner/Resources/database_link.png
rename to GUIs.Test.EDMDesigner/Resources/database_link.png
diff --git a/EDMDesigner/frmMain.Designer.vb b/GUIs.Test.EDMDesigner/frmMain.Designer.vb
similarity index 100%
rename from EDMDesigner/frmMain.Designer.vb
rename to GUIs.Test.EDMDesigner/frmMain.Designer.vb
diff --git a/EDMDesigner/frmMain.resx b/GUIs.Test.EDMDesigner/frmMain.resx
similarity index 100%
rename from EDMDesigner/frmMain.resx
rename to GUIs.Test.EDMDesigner/frmMain.resx
diff --git a/EDMDesigner/nlog.config b/GUIs.Test.EDMDesigner/nlog.config
similarity index 100%
rename from EDMDesigner/nlog.config
rename to GUIs.Test.EDMDesigner/nlog.config
diff --git a/EDMDesigner/packages.config b/GUIs.Test.EDMDesigner/packages.config
similarity index 100%
rename from EDMDesigner/packages.config
rename to GUIs.Test.EDMDesigner/packages.config
diff --git a/GUI_EDMI/App.config b/GUIs.Test.GUI_EDMI/App.config
similarity index 100%
rename from GUI_EDMI/App.config
rename to GUIs.Test.GUI_EDMI/App.config
diff --git a/GUI_EDMI/GUI_EDMI.vbproj b/GUIs.Test.GUI_EDMI/GUI_EDMI.vbproj
similarity index 100%
rename from GUI_EDMI/GUI_EDMI.vbproj
rename to GUIs.Test.GUI_EDMI/GUI_EDMI.vbproj
diff --git a/GUI_EDMI/My Project/Application.Designer.vb b/GUIs.Test.GUI_EDMI/My Project/Application.Designer.vb
similarity index 100%
rename from GUI_EDMI/My Project/Application.Designer.vb
rename to GUIs.Test.GUI_EDMI/My Project/Application.Designer.vb
diff --git a/GUI_EDMI/My Project/Application.myapp b/GUIs.Test.GUI_EDMI/My Project/Application.myapp
similarity index 100%
rename from GUI_EDMI/My Project/Application.myapp
rename to GUIs.Test.GUI_EDMI/My Project/Application.myapp
diff --git a/GUI_EDMI/My Project/AssemblyInfo.vb b/GUIs.Test.GUI_EDMI/My Project/AssemblyInfo.vb
similarity index 100%
rename from GUI_EDMI/My Project/AssemblyInfo.vb
rename to GUIs.Test.GUI_EDMI/My Project/AssemblyInfo.vb
diff --git a/GUI_EDMI/My Project/Resources.Designer.vb b/GUIs.Test.GUI_EDMI/My Project/Resources.Designer.vb
similarity index 100%
rename from GUI_EDMI/My Project/Resources.Designer.vb
rename to GUIs.Test.GUI_EDMI/My Project/Resources.Designer.vb
diff --git a/GUI_EDMI/My Project/Resources.resx b/GUIs.Test.GUI_EDMI/My Project/Resources.resx
similarity index 100%
rename from GUI_EDMI/My Project/Resources.resx
rename to GUIs.Test.GUI_EDMI/My Project/Resources.resx
diff --git a/GUI_EDMI/My Project/Settings.Designer.vb b/GUIs.Test.GUI_EDMI/My Project/Settings.Designer.vb
similarity index 100%
rename from GUI_EDMI/My Project/Settings.Designer.vb
rename to GUIs.Test.GUI_EDMI/My Project/Settings.Designer.vb
diff --git a/GUI_EDMI/My Project/Settings.settings b/GUIs.Test.GUI_EDMI/My Project/Settings.settings
similarity index 100%
rename from GUI_EDMI/My Project/Settings.settings
rename to GUIs.Test.GUI_EDMI/My Project/Settings.settings
diff --git a/GUI_EDMI/My Project/licenses.licx b/GUIs.Test.GUI_EDMI/My Project/licenses.licx
similarity index 100%
rename from GUI_EDMI/My Project/licenses.licx
rename to GUIs.Test.GUI_EDMI/My Project/licenses.licx
diff --git a/GUI_EDMI/MyDataset.Designer.vb b/GUIs.Test.GUI_EDMI/MyDataset.Designer.vb
similarity index 100%
rename from GUI_EDMI/MyDataset.Designer.vb
rename to GUIs.Test.GUI_EDMI/MyDataset.Designer.vb
diff --git a/GUI_EDMI/MyDataset.xsc b/GUIs.Test.GUI_EDMI/MyDataset.xsc
similarity index 100%
rename from GUI_EDMI/MyDataset.xsc
rename to GUIs.Test.GUI_EDMI/MyDataset.xsc
diff --git a/GUI_EDMI/MyDataset.xsd b/GUIs.Test.GUI_EDMI/MyDataset.xsd
similarity index 100%
rename from GUI_EDMI/MyDataset.xsd
rename to GUIs.Test.GUI_EDMI/MyDataset.xsd
diff --git a/GUI_EDMI/MyDataset.xss b/GUIs.Test.GUI_EDMI/MyDataset.xss
similarity index 100%
rename from GUI_EDMI/MyDataset.xss
rename to GUIs.Test.GUI_EDMI/MyDataset.xss
diff --git a/GUI_EDMI/Resources/email_go.png b/GUIs.Test.GUI_EDMI/Resources/email_go.png
similarity index 100%
rename from GUI_EDMI/Resources/email_go.png
rename to GUIs.Test.GUI_EDMI/Resources/email_go.png
diff --git a/GUI_EDMI/Resources/key_16xLG.png b/GUIs.Test.GUI_EDMI/Resources/key_16xLG.png
similarity index 100%
rename from GUI_EDMI/Resources/key_16xLG.png
rename to GUIs.Test.GUI_EDMI/Resources/key_16xLG.png
diff --git a/GUI_EDMI/Resources/save_16xMD.png b/GUIs.Test.GUI_EDMI/Resources/save_16xMD.png
similarity index 100%
rename from GUI_EDMI/Resources/save_16xMD.png
rename to GUIs.Test.GUI_EDMI/Resources/save_16xMD.png
diff --git a/GUI_EDMI/TOOL_ohne_slogan.ico b/GUIs.Test.GUI_EDMI/TOOL_ohne_slogan.ico
similarity index 100%
rename from GUI_EDMI/TOOL_ohne_slogan.ico
rename to GUIs.Test.GUI_EDMI/TOOL_ohne_slogan.ico
diff --git a/GUI_EDMI/clsEncryption.vb b/GUIs.Test.GUI_EDMI/clsEncryption.vb
similarity index 100%
rename from GUI_EDMI/clsEncryption.vb
rename to GUIs.Test.GUI_EDMI/clsEncryption.vb
diff --git a/GUI_EDMI/frmEmailAccount.Designer.vb b/GUIs.Test.GUI_EDMI/frmEmailAccount.Designer.vb
similarity index 100%
rename from GUI_EDMI/frmEmailAccount.Designer.vb
rename to GUIs.Test.GUI_EDMI/frmEmailAccount.Designer.vb
diff --git a/GUI_EDMI/frmEmailAccount.resx b/GUIs.Test.GUI_EDMI/frmEmailAccount.resx
similarity index 100%
rename from GUI_EDMI/frmEmailAccount.resx
rename to GUIs.Test.GUI_EDMI/frmEmailAccount.resx
diff --git a/GUI_EDMI/frmEmailAccount.vb b/GUIs.Test.GUI_EDMI/frmEmailAccount.vb
similarity index 100%
rename from GUI_EDMI/frmEmailAccount.vb
rename to GUIs.Test.GUI_EDMI/frmEmailAccount.vb
diff --git a/GUI_EDMI/frmMain.Designer.vb b/GUIs.Test.GUI_EDMI/frmMain.Designer.vb
similarity index 100%
rename from GUI_EDMI/frmMain.Designer.vb
rename to GUIs.Test.GUI_EDMI/frmMain.Designer.vb
diff --git a/GUI_EDMI/frmMain.resx b/GUIs.Test.GUI_EDMI/frmMain.resx
similarity index 100%
rename from GUI_EDMI/frmMain.resx
rename to GUIs.Test.GUI_EDMI/frmMain.resx
diff --git a/GUI_EDMI/frmMain.vb b/GUIs.Test.GUI_EDMI/frmMain.vb
similarity index 100%
rename from GUI_EDMI/frmMain.vb
rename to GUIs.Test.GUI_EDMI/frmMain.vb
diff --git a/GUI_EDMI/packages.config b/GUIs.Test.GUI_EDMI/packages.config
similarity index 100%
rename from GUI_EDMI/packages.config
rename to GUIs.Test.GUI_EDMI/packages.config
diff --git a/TestGUI/App.config b/GUIs.Test.TestGUI/App.config
similarity index 100%
rename from TestGUI/App.config
rename to GUIs.Test.TestGUI/App.config
diff --git a/TestGUI/ApplicationEvents.vb b/GUIs.Test.TestGUI/ApplicationEvents.vb
similarity index 100%
rename from TestGUI/ApplicationEvents.vb
rename to GUIs.Test.TestGUI/ApplicationEvents.vb
diff --git a/TestGUI/ConfigTest.Designer.vb b/GUIs.Test.TestGUI/ConfigTest.Designer.vb
similarity index 100%
rename from TestGUI/ConfigTest.Designer.vb
rename to GUIs.Test.TestGUI/ConfigTest.Designer.vb
diff --git a/GUIs.Test.TestGUI/ConfigTest.resx b/GUIs.Test.TestGUI/ConfigTest.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/GUIs.Test.TestGUI/ConfigTest.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/TestGUI/ConfigTest.vb b/GUIs.Test.TestGUI/ConfigTest.vb
similarity index 100%
rename from TestGUI/ConfigTest.vb
rename to GUIs.Test.TestGUI/ConfigTest.vb
diff --git a/TestGUI/FolderWatcher.Designer.vb b/GUIs.Test.TestGUI/FolderWatcher.Designer.vb
similarity index 100%
rename from TestGUI/FolderWatcher.Designer.vb
rename to GUIs.Test.TestGUI/FolderWatcher.Designer.vb
diff --git a/GUIs.Test.TestGUI/FolderWatcher.resx b/GUIs.Test.TestGUI/FolderWatcher.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/GUIs.Test.TestGUI/FolderWatcher.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/TestGUI/FolderWatcher.vb b/GUIs.Test.TestGUI/FolderWatcher.vb
similarity index 100%
rename from TestGUI/FolderWatcher.vb
rename to GUIs.Test.TestGUI/FolderWatcher.vb
diff --git a/TestGUI/Form1.Designer.vb b/GUIs.Test.TestGUI/Form1.Designer.vb
similarity index 100%
rename from TestGUI/Form1.Designer.vb
rename to GUIs.Test.TestGUI/Form1.Designer.vb
diff --git a/TestGUI/Form1.resx b/GUIs.Test.TestGUI/Form1.resx
similarity index 100%
rename from TestGUI/Form1.resx
rename to GUIs.Test.TestGUI/Form1.resx
diff --git a/TestGUI/Form1.vb b/GUIs.Test.TestGUI/Form1.vb
similarity index 100%
rename from TestGUI/Form1.vb
rename to GUIs.Test.TestGUI/Form1.vb
diff --git a/TestGUI/My Project/Application.Designer.vb b/GUIs.Test.TestGUI/My Project/Application.Designer.vb
similarity index 100%
rename from TestGUI/My Project/Application.Designer.vb
rename to GUIs.Test.TestGUI/My Project/Application.Designer.vb
diff --git a/TestGUI/My Project/Application.myapp b/GUIs.Test.TestGUI/My Project/Application.myapp
similarity index 100%
rename from TestGUI/My Project/Application.myapp
rename to GUIs.Test.TestGUI/My Project/Application.myapp
diff --git a/TestGUI/My Project/AssemblyInfo.vb b/GUIs.Test.TestGUI/My Project/AssemblyInfo.vb
similarity index 100%
rename from TestGUI/My Project/AssemblyInfo.vb
rename to GUIs.Test.TestGUI/My Project/AssemblyInfo.vb
diff --git a/TestGUI/My Project/Resources.Designer.vb b/GUIs.Test.TestGUI/My Project/Resources.Designer.vb
similarity index 100%
rename from TestGUI/My Project/Resources.Designer.vb
rename to GUIs.Test.TestGUI/My Project/Resources.Designer.vb
diff --git a/TestGUI/My Project/Resources.resx b/GUIs.Test.TestGUI/My Project/Resources.resx
similarity index 100%
rename from TestGUI/My Project/Resources.resx
rename to GUIs.Test.TestGUI/My Project/Resources.resx
diff --git a/TestGUI/My Project/Settings.Designer.vb b/GUIs.Test.TestGUI/My Project/Settings.Designer.vb
similarity index 100%
rename from TestGUI/My Project/Settings.Designer.vb
rename to GUIs.Test.TestGUI/My Project/Settings.Designer.vb
diff --git a/TestGUI/My Project/Settings.settings b/GUIs.Test.TestGUI/My Project/Settings.settings
similarity index 100%
rename from TestGUI/My Project/Settings.settings
rename to GUIs.Test.TestGUI/My Project/Settings.settings
diff --git a/TestGUI/My Project/app.manifest b/GUIs.Test.TestGUI/My Project/app.manifest
similarity index 100%
rename from TestGUI/My Project/app.manifest
rename to GUIs.Test.TestGUI/My Project/app.manifest
diff --git a/TestGUI/My Project/licenses.licx b/GUIs.Test.TestGUI/My Project/licenses.licx
similarity index 100%
rename from TestGUI/My Project/licenses.licx
rename to GUIs.Test.TestGUI/My Project/licenses.licx
diff --git a/TestGUI/TestGUI.vbproj b/GUIs.Test.TestGUI/TestGUI.vbproj
similarity index 99%
rename from TestGUI/TestGUI.vbproj
rename to GUIs.Test.TestGUI/TestGUI.vbproj
index 6a81b007..07ece0c7 100644
--- a/TestGUI/TestGUI.vbproj
+++ b/GUIs.Test.TestGUI/TestGUI.vbproj
@@ -168,7 +168,7 @@
-
+
{44982f9b-6116-44e2-85d0-f39650b1ef99}
Config
diff --git a/TestGUI/packages.config b/GUIs.Test.TestGUI/packages.config
similarity index 100%
rename from TestGUI/packages.config
rename to GUIs.Test.TestGUI/packages.config
diff --git a/GUIs.Test.ZUGFeRDTest/App.config b/GUIs.Test.ZUGFeRDTest/App.config
new file mode 100644
index 00000000..700c492e
--- /dev/null
+++ b/GUIs.Test.ZUGFeRDTest/App.config
@@ -0,0 +1,102 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 172.24.12.41:E:\DB\Firebird\Databases\EDMI_TEMPLATE\EDMI_MASTER.FDB
+
+
+ 172.24.12.41
+
+
+
+
+
+
+ sysdba
+
+
+ dd
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ZUGFeRDTest/Form1.Designer.vb b/GUIs.Test.ZUGFeRDTest/Form1.Designer.vb
similarity index 69%
rename from ZUGFeRDTest/Form1.Designer.vb
rename to GUIs.Test.ZUGFeRDTest/Form1.Designer.vb
index 2fa7fdf1..cdfa5cd6 100644
--- a/ZUGFeRDTest/Form1.Designer.vb
+++ b/GUIs.Test.ZUGFeRDTest/Form1.Designer.vb
@@ -25,6 +25,8 @@ Partial Class Form1
Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
Me.Button1 = New System.Windows.Forms.Button()
Me.ListBox1 = New System.Windows.Forms.ListBox()
+ Me.Button2 = New System.Windows.Forms.Button()
+ Me.Button3 = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'OpenFileDialog1
@@ -35,9 +37,9 @@ Partial Class Form1
'
Me.Button1.Location = New System.Drawing.Point(12, 12)
Me.Button1.Name = "Button1"
- Me.Button1.Size = New System.Drawing.Size(75, 23)
+ Me.Button1.Size = New System.Drawing.Size(221, 23)
Me.Button1.TabIndex = 0
- Me.Button1.Text = "Button1"
+ Me.Button1.Text = "Run Job"
Me.Button1.UseVisualStyleBackColor = True
'
'ListBox1
@@ -48,11 +50,31 @@ Partial Class Form1
Me.ListBox1.Size = New System.Drawing.Size(526, 407)
Me.ListBox1.TabIndex = 1
'
+ 'Button2
+ '
+ Me.Button2.Location = New System.Drawing.Point(12, 41)
+ Me.Button2.Name = "Button2"
+ Me.Button2.Size = New System.Drawing.Size(221, 23)
+ Me.Button2.TabIndex = 2
+ Me.Button2.Text = "Validate Single File"
+ Me.Button2.UseVisualStyleBackColor = True
+ '
+ 'Button3
+ '
+ Me.Button3.Location = New System.Drawing.Point(12, 70)
+ Me.Button3.Name = "Button3"
+ Me.Button3.Size = New System.Drawing.Size(221, 23)
+ Me.Button3.TabIndex = 3
+ Me.Button3.Text = "Load Single File"
+ Me.Button3.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(916, 435)
+ Me.Controls.Add(Me.Button3)
+ Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.ListBox1)
Me.Controls.Add(Me.Button1)
Me.Name = "Form1"
@@ -64,4 +86,6 @@ Partial Class Form1
Friend WithEvents OpenFileDialog1 As OpenFileDialog
Friend WithEvents Button1 As Button
Friend WithEvents ListBox1 As ListBox
+ Friend WithEvents Button2 As Button
+ Friend WithEvents Button3 As Button
End Class
diff --git a/ZUGFeRDTest/Form1.resx b/GUIs.Test.ZUGFeRDTest/Form1.resx
similarity index 100%
rename from ZUGFeRDTest/Form1.resx
rename to GUIs.Test.ZUGFeRDTest/Form1.resx
diff --git a/ZUGFeRDTest/Form1.vb b/GUIs.Test.ZUGFeRDTest/Form1.vb
similarity index 79%
rename from ZUGFeRDTest/Form1.vb
rename to GUIs.Test.ZUGFeRDTest/Form1.vb
index 99bd4c75..14df4684 100644
--- a/ZUGFeRDTest/Form1.vb
+++ b/GUIs.Test.ZUGFeRDTest/Form1.vb
@@ -5,12 +5,14 @@ Imports System.Xml
Imports DigitalData.Modules
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Interfaces
+Imports DigitalData.Modules.Jobs
Imports DigitalData.Modules.Jobs.ImportZUGFeRDFiles
Imports DigitalData.Modules.Logging
Public Class Form1
Private _logConfig As LogConfig
Private _firebird As Firebird
+ Private _zugferd As ZUGFeRDInterface
Private PropertyMap As New Dictionary(Of String, XmlItemProperty)
@@ -19,6 +21,8 @@ Public Class Form1
_logConfig = New LogConfig(LogConfig.PathType.CurrentDirectory)
_logConfig.Debug = True
_firebird = New Firebird(_logConfig, My.Settings.FB_DATASOURCE, My.Settings.FB_DATABASE, My.Settings.FB_USER, My.Settings.FB_PASS)
+
+ _zugferd = New ZUGFeRDInterface(_logConfig)
End Sub
Private Function LoadFolderConfig(args As WorkerArgs)
@@ -78,4 +82,22 @@ Public Class Form1
job.Start(args)
End Sub
+
+ Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
+ Dim oResult = OpenFileDialog1.ShowDialog()
+
+ If oResult = DialogResult.OK Then
+ _zugferd.ValidateZUGFeRDFile(OpenFileDialog1.FileName)
+ End If
+ End Sub
+
+ Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
+ Dim oResult = OpenFileDialog1.ShowDialog()
+
+ If oResult = DialogResult.OK Then
+ Dim oDoc = _zugferd.ValidateZUGFeRDFile(OpenFileDialog1.FileName)
+ Dim oZUGFERD = _zugferd.SerializeZUGFeRDDocument(oDoc)
+ Console.WriteLine()
+ End If
+ End Sub
End Class
diff --git a/ZUGFeRDTest/My Project/Application.Designer.vb b/GUIs.Test.ZUGFeRDTest/My Project/Application.Designer.vb
similarity index 100%
rename from ZUGFeRDTest/My Project/Application.Designer.vb
rename to GUIs.Test.ZUGFeRDTest/My Project/Application.Designer.vb
diff --git a/GUIs.Test.ZUGFeRDTest/My Project/Application.myapp b/GUIs.Test.ZUGFeRDTest/My Project/Application.myapp
new file mode 100644
index 00000000..1243847f
--- /dev/null
+++ b/GUIs.Test.ZUGFeRDTest/My Project/Application.myapp
@@ -0,0 +1,11 @@
+
+
+ true
+ Form1
+ false
+ 0
+ true
+ 0
+ 0
+ true
+
diff --git a/ZUGFeRDTest/My Project/AssemblyInfo.vb b/GUIs.Test.ZUGFeRDTest/My Project/AssemblyInfo.vb
similarity index 100%
rename from ZUGFeRDTest/My Project/AssemblyInfo.vb
rename to GUIs.Test.ZUGFeRDTest/My Project/AssemblyInfo.vb
diff --git a/ZUGFeRDTest/My Project/Resources.Designer.vb b/GUIs.Test.ZUGFeRDTest/My Project/Resources.Designer.vb
similarity index 100%
rename from ZUGFeRDTest/My Project/Resources.Designer.vb
rename to GUIs.Test.ZUGFeRDTest/My Project/Resources.Designer.vb
diff --git a/ZUGFeRDTest/My Project/Resources.resx b/GUIs.Test.ZUGFeRDTest/My Project/Resources.resx
similarity index 100%
rename from ZUGFeRDTest/My Project/Resources.resx
rename to GUIs.Test.ZUGFeRDTest/My Project/Resources.resx
diff --git a/ZUGFeRDTest/My Project/Settings.Designer.vb b/GUIs.Test.ZUGFeRDTest/My Project/Settings.Designer.vb
similarity index 100%
rename from ZUGFeRDTest/My Project/Settings.Designer.vb
rename to GUIs.Test.ZUGFeRDTest/My Project/Settings.Designer.vb
diff --git a/ZUGFeRDTest/My Project/Settings.settings b/GUIs.Test.ZUGFeRDTest/My Project/Settings.settings
similarity index 100%
rename from ZUGFeRDTest/My Project/Settings.settings
rename to GUIs.Test.ZUGFeRDTest/My Project/Settings.settings
diff --git a/ZUGFeRDTest/ZUGFeRDTest.vbproj b/GUIs.Test.ZUGFeRDTest/ZUGFeRDTest.vbproj
similarity index 100%
rename from ZUGFeRDTest/ZUGFeRDTest.vbproj
rename to GUIs.Test.ZUGFeRDTest/ZUGFeRDTest.vbproj
diff --git a/ZUGFeRDTest/packages.config b/GUIs.Test.ZUGFeRDTest/packages.config
similarity index 100%
rename from ZUGFeRDTest/packages.config
rename to GUIs.Test.ZUGFeRDTest/packages.config
diff --git a/JobRunner/App.config b/JobRunner/App.config
new file mode 100644
index 00000000..584c1495
--- /dev/null
+++ b/JobRunner/App.config
@@ -0,0 +1,45 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+ DDJobRunner
+
+
+ Digital Data Job Runner
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 120
+
+
+ 120
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JobRunner/JobRunner.vb b/JobRunner/JobRunner.vb
new file mode 100644
index 00000000..0d94aefb
--- /dev/null
+++ b/JobRunner/JobRunner.vb
@@ -0,0 +1,81 @@
+Imports System.ComponentModel
+Imports System.Timers
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Jobs
+Imports DigitalData.Modules.Logging
+
+Public Class JobRunner
+ Private WithEvents _workerThread As BackgroundWorker
+ Private WithEvents _workerTimer As Timer
+
+ Private ReadOnly _interval As Long
+ Private ReadOnly _logConfig As LogConfig
+ Private ReadOnly _logger As Logger
+ Private ReadOnly _firebird As Firebird
+
+ Public Sub New(LogConfig As LogConfig, Firebird As Firebird, Interval As Long)
+ _logConfig = LogConfig
+ _logger = _logConfig.GetLogger()
+ _firebird = Firebird
+ _interval = Interval
+
+ _workerTimer = New Timer()
+ _workerThread = New BackgroundWorker() With {
+ .WorkerReportsProgress = True,
+ .WorkerSupportsCancellation = True
+ }
+ End Sub
+
+ Public Sub Start()
+ _workerTimer.Interval = _interval * 1000
+ _workerTimer.Start()
+ _logger.Debug("JobRunner started with {0}s Interval.", _interval)
+ End Sub
+
+ Public Sub [Stop]()
+ Try
+ _logger.Debug("Stopping Background worker...")
+ If _workerThread.IsBusy Then
+ _workerThread.CancelAsync()
+ _logger.Debug("Background Worker cancelled.")
+ End If
+ _workerTimer.Stop()
+ _logger.Debug("Background Worker stopped.")
+ Catch ex As Exception
+ _logger.Error(ex)
+ End Try
+ End Sub
+
+ Private Sub TimerElapsed(sender As Object, e As ElapsedEventArgs) Handles _workerTimer.Elapsed
+ If Not _workerThread.IsBusy Then
+ _workerThread.RunWorkerAsync()
+ Else
+ _logger.Warn("Background Worker is busy. Waiting for next interval.")
+ End If
+ End Sub
+
+ Private Sub DoWork(sender As Object, e As DoWorkEventArgs) Handles _workerThread.DoWork
+ _logger.Debug("Background worker running..")
+
+ Dim args As WorkerArgs = e.Argument
+ Dim oJob As New ADSyncJob(_logConfig, _firebird)
+ Dim oArgs As New ADSyncArgs() With {
+ .Enabled = My.Settings.JOB_ADSYNC_ENABLED,
+ .Interval = My.Settings.JOB_ADSYNC_INTERVAL,
+ .RootPath = My.Settings.JOB_ADSYNC_ROOT_PATH
+ }
+
+ If oJob.ShouldStart(oArgs) Then
+ oJob.Start(oArgs)
+ End If
+ End Sub
+
+ Private Sub WorkCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles _workerThread.RunWorkerCompleted
+ If e.Error Is Nothing Then
+ _logger.Debug("Background worker completed!")
+ Else
+ _logger.Warn("Background worker failed!")
+ _logger.Error(e.Error)
+ End If
+ End Sub
+End Class
diff --git a/JobRunner/JobRunner.vbproj b/JobRunner/JobRunner.vbproj
new file mode 100644
index 00000000..37a3ec1f
--- /dev/null
+++ b/JobRunner/JobRunner.vbproj
@@ -0,0 +1,149 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {59461E98-A5AF-438C-A651-5021ACAE82AD}
+ WinExe
+ DigitalData.Services.JobRunner.WindowsService
+ DigitalData.Services.JobRunner
+ DigitalData.Services.JobRunner
+ 512
+ Console
+ v4.6.1
+ true
+
+
+ AnyCPU
+ true
+ full
+ true
+ true
+ bin\Debug\
+ DigitalData.Services.JobRunner.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ AnyCPU
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ DigitalData.Services.JobRunner.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ True
+ Application.myapp
+
+
+ Component
+
+
+ Component
+
+
+ WindowsService.vb
+
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+ WindowsService.vb
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
+
+ {39ec839a-3c30-4922-a41e-6b09d1dde5c3}
+ Jobs
+
+
+ {EAF0EA75-5FA7-485D-89C7-B2D843B03A96}
+ Database
+
+
+ {903B2D7D-3B80-4BE9-8713-7447B704E1B0}
+ Logging
+
+
+
+
\ No newline at end of file
diff --git a/LookupGrid/My Project/Application.Designer.vb b/JobRunner/My Project/Application.Designer.vb
similarity index 100%
rename from LookupGrid/My Project/Application.Designer.vb
rename to JobRunner/My Project/Application.Designer.vb
diff --git a/JobRunner/My Project/Application.myapp b/JobRunner/My Project/Application.myapp
new file mode 100644
index 00000000..602de37e
--- /dev/null
+++ b/JobRunner/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 3
+ true
+
diff --git a/JobRunner/My Project/AssemblyInfo.vb b/JobRunner/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..df2bc85e
--- /dev/null
+++ b/JobRunner/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/EDMI_ClientSuite/My Project/Resources.Designer.vb b/JobRunner/My Project/Resources.Designer.vb
similarity index 76%
rename from EDMI_ClientSuite/My Project/Resources.Designer.vb
rename to JobRunner/My Project/Resources.Designer.vb
index 12f93519..7fb8b450 100644
--- a/EDMI_ClientSuite/My Project/Resources.Designer.vb
+++ b/JobRunner/My Project/Resources.Designer.vb
@@ -39,7 +39,7 @@ Namespace My.Resources
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("DigitalData.GUIs.ClientSuite.Resources", GetType(Resources).Assembly)
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.Services.JobRunner.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
@@ -59,25 +59,5 @@ Namespace My.Resources
resourceCulture = value
End Set
End Property
-
- '''
- ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
- '''
- Friend ReadOnly Property iconfinder_Gowalla_324477() As System.Drawing.Bitmap
- Get
- Dim obj As Object = ResourceManager.GetObject("iconfinder_Gowalla_324477", resourceCulture)
- Return CType(obj,System.Drawing.Bitmap)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
- '''
- Friend ReadOnly Property user_16xLG() As System.Drawing.Bitmap
- Get
- Dim obj As Object = ResourceManager.GetObject("user_16xLG", resourceCulture)
- Return CType(obj,System.Drawing.Bitmap)
- End Get
- End Property
End Module
End Namespace
diff --git a/JobRunner/My Project/Resources.resx b/JobRunner/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/JobRunner/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/JobRunner/My Project/Settings.Designer.vb b/JobRunner/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..a28f946b
--- /dev/null
+++ b/JobRunner/My Project/Settings.Designer.vb
@@ -0,0 +1,163 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+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 "Automatische My.Settings-Speicherfunktion"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(sender As Global.System.Object, 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
+
+ _
+ Public ReadOnly Property SERVICE_NAME() As String
+ Get
+ Return CType(Me("SERVICE_NAME"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property SERVICE_DISPLAY_NAME() As String
+ Get
+ Return CType(Me("SERVICE_DISPLAY_NAME"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property JOB_ADSYNC_ENABLED() As Boolean
+ Get
+ Return CType(Me("JOB_ADSYNC_ENABLED"),Boolean)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property DB_DATASOURCE() As String
+ Get
+ Return CType(Me("DB_DATASOURCE"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property DB_DATABASE() As String
+ Get
+ Return CType(Me("DB_DATABASE"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property DB_USER() As String
+ Get
+ Return CType(Me("DB_USER"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property DB_PASSWORD() As String
+ Get
+ Return CType(Me("DB_PASSWORD"),String)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property JOB_INTERVAL() As Long
+ Get
+ Return CType(Me("JOB_INTERVAL"),Long)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property JOB_ADSYNC_INTERVAL() As Long
+ Get
+ Return CType(Me("JOB_ADSYNC_INTERVAL"),Long)
+ End Get
+ End Property
+
+ _
+ Public ReadOnly Property JOB_ADSYNC_ROOT_PATH() As String
+ Get
+ Return CType(Me("JOB_ADSYNC_ROOT_PATH"),String)
+ End Get
+ End Property
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.DigitalData.Services.JobRunner.My.MySettings
+ Get
+ Return Global.DigitalData.Services.JobRunner.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/JobRunner/My Project/Settings.settings b/JobRunner/My Project/Settings.settings
new file mode 100644
index 00000000..3281b731
--- /dev/null
+++ b/JobRunner/My Project/Settings.settings
@@ -0,0 +1,36 @@
+
+
+
+
+
+ DDJobRunner
+
+
+ Digital Data Job Runner
+
+
+ False
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 120
+
+
+ 120
+
+
+
+
+
+
\ No newline at end of file
diff --git a/JobRunner/ProjectInstaller.vb b/JobRunner/ProjectInstaller.vb
new file mode 100644
index 00000000..e066985c
--- /dev/null
+++ b/JobRunner/ProjectInstaller.vb
@@ -0,0 +1,24 @@
+Imports System.ComponentModel
+Imports System.Configuration.Install
+Imports System.ServiceProcess
+
+
+Public Class ProjectInstaller
+ Inherits Installer
+
+ Private ReadOnly process As ServiceProcessInstaller
+ Private ReadOnly components As IContainer
+ Private ReadOnly service As ServiceInstaller
+
+ Public Sub New()
+ process = New ServiceProcessInstaller With {
+ .Account = ServiceAccount.LocalSystem
+ }
+ service = New ServiceInstaller With {
+ .ServiceName = My.Settings.SERVICE_NAME,
+ .DisplayName = My.Settings.SERVICE_DISPLAY_NAME
+ }
+ Installers.Add(process)
+ Installers.Add(service)
+ End Sub
+End Class
diff --git a/JobRunner/WindowsService.Designer.vb b/JobRunner/WindowsService.Designer.vb
new file mode 100644
index 00000000..fb0f2814
--- /dev/null
+++ b/JobRunner/WindowsService.Designer.vb
@@ -0,0 +1,50 @@
+Imports System.ServiceProcess
+
+
+Partial Class WindowsService
+ Inherits System.ServiceProcess.ServiceBase
+
+ 'UserService ü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
+
+ ' Der Haupteinstiegspunkt für den Prozess
+
+
+ Shared Sub Main()
+ Dim ServicesToRun() As System.ServiceProcess.ServiceBase
+
+ ' Innerhalb eines Prozesses können mehrere NT-Dienste ausgeführt werden. Um einen
+ ' weiteren Dienst zu diesem Prozess hinzuzufügen, ändern Sie die folgende Zeile,
+ ' um ein zweites Dienstobjekt zu erstellen. Zum Beispiel
+ '
+ ' ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
+ '
+ ServicesToRun = New System.ServiceProcess.ServiceBase() {New WindowsService}
+
+ System.ServiceProcess.ServiceBase.Run(ServicesToRun)
+ End Sub
+
+ 'Wird vom Komponenten-Designer benötigt.
+ Private components As System.ComponentModel.IContainer
+
+ ' Hinweis: Die folgende Prozedur ist für den Komponenten-Designer erforderlich.
+ ' Das Bearbeiten ist mit dem Komponenten-Designer möglich.
+ ' Das Bearbeiten mit dem Code-Editor ist nicht möglich.
+
+ Private Sub InitializeComponent()
+ '
+ 'Service1
+ '
+ Me.ServiceName = "Service1"
+
+ End Sub
+End Class
diff --git a/LookupGrid/GridLookupEditExOLD.resx b/JobRunner/WindowsService.resx
similarity index 100%
rename from LookupGrid/GridLookupEditExOLD.resx
rename to JobRunner/WindowsService.resx
diff --git a/JobRunner/WindowsService.vb b/JobRunner/WindowsService.vb
new file mode 100644
index 00000000..cfca9dfa
--- /dev/null
+++ b/JobRunner/WindowsService.vb
@@ -0,0 +1,39 @@
+Imports System.IO
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Logging.LogConfig
+
+Public Class WindowsService
+ Private _logConfig As LogConfig
+ Private _logger As Logger
+ Private _firebird As Firebird
+
+ Private _jobRunner As JobRunner
+
+ Protected Overrides Sub OnStart(ByVal args() As String)
+ _logConfig = New LogConfig(PathType.CustomPath, Path.Combine(My.Application.Info.DirectoryPath, "Log"))
+ _logConfig.Debug = True
+ _logger = _logConfig.GetLogger()
+ _logger.Info($"{My.Settings.SERVICE_NAME} is starting.")
+
+ Dim oDataSource As String = My.Settings.DB_DATASOURCE
+ Dim oDatabase As String = My.Settings.DB_DATABASE
+ Dim oUser As String = My.Settings.DB_USER
+ Dim oPassword As String = My.Settings.DB_PASSWORD
+ Dim oInterval As Long = My.Settings.JOB_INTERVAL
+
+ _firebird = New Firebird(_logConfig, oDataSource, oDatabase, oUser, oPassword)
+
+ Try
+ _jobRunner = New JobRunner(_logConfig, _firebird, oInterval)
+ _jobRunner.Start()
+ Catch ex As Exception
+ _logger.Error(ex)
+ End Try
+ End Sub
+
+ Protected Overrides Sub OnStop()
+ _jobRunner.Stop()
+ _logger.Info($"{My.Settings.SERVICE_NAME} is stopping.")
+ End Sub
+End Class
diff --git a/JobRunner/packages.config b/JobRunner/packages.config
new file mode 100644
index 00000000..f89fa324
--- /dev/null
+++ b/JobRunner/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Jobs/App.config b/Jobs/App.config
index 731f6de6..e2bb1a7e 100644
--- a/Jobs/App.config
+++ b/Jobs/App.config
@@ -1,6 +1,11 @@
-
+
-
\ No newline at end of file
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Jobs/EDMI/ADSync/ADSyncArgs.vb b/Jobs/EDMI/ADSync/ADSyncArgs.vb
new file mode 100644
index 00000000..1e64916b
--- /dev/null
+++ b/Jobs/EDMI/ADSync/ADSyncArgs.vb
@@ -0,0 +1,5 @@
+Public Class ADSyncArgs
+ Inherits JobArgs
+
+ Public RootPath As String
+End Class
diff --git a/Jobs/EDMI/ADSync/ADSyncJob.vb b/Jobs/EDMI/ADSync/ADSyncJob.vb
new file mode 100644
index 00000000..7dc9857a
--- /dev/null
+++ b/Jobs/EDMI/ADSync/ADSyncJob.vb
@@ -0,0 +1,48 @@
+Imports System.Collections.Generic
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Interfaces
+Imports DigitalData.Modules.Jobs
+Imports DigitalData.Modules.Logging
+
+Public Class ADSyncJob
+ Inherits JobBase
+ Implements IJob(Of ADSyncArgs)
+
+ Public Sub New(LogConfig As LogConfig, Firebird As Firebird)
+ MyBase.New(LogConfig, Firebird)
+ End Sub
+
+ Public Sub Start(Arguments As ADSyncArgs) Implements IJob(Of ADSyncArgs).Start
+ Dim oSync = New ActiveDirectoryInterface(_LogConfig, _Firebird, Arguments.RootPath)
+ Dim oJobName As String = [GetType]().Name
+
+ _Logger.Info("Running job {0}", oJobName)
+
+ If oSync.Authenticate() = False Then
+ _Logger.Warn("Job {0} could not be completed! Authentication failed!", oJobName)
+ Exit Sub
+ End If
+
+ Dim oGroups As List(Of ADGroup) = oSync.ListGroups()
+
+ _Logger.Debug("Found {0} Groups", oGroups.Count)
+
+ For Each oGroup In oGroups
+ _Logger.Debug("Syncing Group {0}", oGroup.Name)
+ Dim oSyncedUsers = oSync.SyncUsersForGroup(oGroup.Name)
+
+ If oSyncedUsers Is Nothing Then
+ _Logger.Warn("Group {0} could not be synced!", oGroup)
+ Else
+ _Logger.Debug("Group {0} synced", oGroup)
+ _Logger.Debug("Synced {0} users", oSyncedUsers.Count)
+ End If
+ Next
+
+ _Logger.Info("Job {0} completed!", oJobName)
+ End Sub
+
+ Public Function ShouldStart(Arguments As ADSyncArgs) As Boolean Implements IJob(Of ADSyncArgs).ShouldStart
+ Return Arguments.Enabled
+ End Function
+End Class
diff --git a/Jobs/EDMI/ZUGFeRD/EmailData.vb b/Jobs/EDMI/ZUGFeRD/EmailData.vb
new file mode 100644
index 00000000..ed37e543
--- /dev/null
+++ b/Jobs/EDMI/ZUGFeRD/EmailData.vb
@@ -0,0 +1,5 @@
+Public Class EmailData
+ Public Attachment As String
+ Public Subject As String
+ Public From As String
+End Class
\ No newline at end of file
diff --git a/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb b/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb
index 0edef0a6..8f8110e8 100644
--- a/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb
+++ b/Jobs/EDMI/ZUGFeRD/ImportZUGFeRDFiles.vb
@@ -23,43 +23,15 @@ Public Class ImportZUGFeRDFiles
Private _zugferd As ZUGFeRDInterface
Private _firebird As Firebird
Private _filesystem As Filesystem.File
+ Private _mssql As MSSQLServer
- Public Class WorkerArgs
- Public WatchDirectories As List(Of String)
- Public SuccessDirectory As String
- Public ErrorDirectory As String
- Public OriginalEmailDirectory As String
- Public RejectedEmailDirectory As String
- Public PropertyMap As Dictionary(Of String, XmlItemProperty)
-
- Public Sub New()
- WatchDirectories = New List(Of String)
- SuccessDirectory = Nothing
- ErrorDirectory = Nothing
- OriginalEmailDirectory = Nothing
- RejectedEmailDirectory = Nothing
- PropertyMap = New Dictionary(Of String, XmlItemProperty)
- End Sub
- End Class
-
- Public Class EmailData
- Public Attachment As String
- Public Subject As String
- Public From As String
- End Class
-
- Public Class XmlItemProperty
- Public TableName As String
- Public Description As String
- Public IsRequired As Boolean
- End Class
-
- Public Sub New(LogConfig As LogConfig, Firebird As Firebird)
+ Public Sub New(LogConfig As LogConfig, Firebird As Firebird, Optional MSSQL As MSSQLServer = Nothing)
_logConfig = LogConfig
_logger = LogConfig.GetLogger()
_firebird = Firebird
_filesystem = New Filesystem.File(_logConfig)
_zugferd = New ZUGFeRDInterface(_logConfig)
+ _mssql = MSSQL
End Sub
Private Function RandomValue(lowerBound As Integer, upperBound As Integer) As Integer
@@ -211,7 +183,7 @@ Public Class ImportZUGFeRDFiles
Public Sub Start(Arguments As Object) Implements IJob.Start
Dim args As WorkerArgs = Arguments
- _logger.Info("Starting Job {0}", Me.GetType.Name)
+ _logger.Info("Starting Job {0}", [GetType].Name)
Try
For Each oPath As String In args.WatchDirectories
@@ -305,9 +277,17 @@ Public Class ImportZUGFeRDFiles
Dim oTableName = Item.Value.TableName
Dim oCommand = $"INSERT INTO {oTableName} (REFERENCE_GUID, ITEM_DESCRIPTION, ITEM_VALUE) VALUES ('{oFileGroupId}', '{propertyDescripton}', '{propertyValue}')"
-
_logger.Debug("Mapping Property {0} to value {1}. Will be inserted into table {2}", propertyDescripton, propertyValue, oTableName)
+ ' Insert into SQL Server
+ If args.InsertIntoSQLServer = True Then
+ Dim oResult = _mssql.NewExecutenonQuery(oCommand)
+ If oResult = False Then
+ _logger.Warn("SQL Command was not successful. Check the log.")
+ End If
+ End If
+
+ ' Insert into Firebird
_firebird.ExecuteNonQueryWithConnection(oCommand, oConnection, Firebird.TransactionMode.ExternalTransaction, oTransaction)
Next
diff --git a/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb b/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb
new file mode 100644
index 00000000..68c39324
--- /dev/null
+++ b/Jobs/EDMI/ZUGFeRD/WorkerArgs.vb
@@ -0,0 +1,21 @@
+Imports System.Collections.Generic
+
+Public Class WorkerArgs
+ Public WatchDirectories As List(Of String)
+ Public SuccessDirectory As String
+ Public ErrorDirectory As String
+ Public OriginalEmailDirectory As String
+ Public RejectedEmailDirectory As String
+ Public PropertyMap As Dictionary(Of String, XmlItemProperty)
+ Public InsertIntoSQLServer As Boolean
+
+ Public Sub New()
+ WatchDirectories = New List(Of String)
+ SuccessDirectory = Nothing
+ ErrorDirectory = Nothing
+ OriginalEmailDirectory = Nothing
+ RejectedEmailDirectory = Nothing
+ PropertyMap = New Dictionary(Of String, XmlItemProperty)
+ InsertIntoSQLServer = False
+ End Sub
+End Class
\ No newline at end of file
diff --git a/Jobs/EDMI/ZUGFeRD/XmlItemProperty.vb b/Jobs/EDMI/ZUGFeRD/XmlItemProperty.vb
new file mode 100644
index 00000000..57e98415
--- /dev/null
+++ b/Jobs/EDMI/ZUGFeRD/XmlItemProperty.vb
@@ -0,0 +1,5 @@
+Public Class XmlItemProperty
+ Public TableName As String
+ Public Description As String
+ Public IsRequired As Boolean
+End Class
\ No newline at end of file
diff --git a/Jobs/IJob.vb b/Jobs/IJob.vb
deleted file mode 100644
index cb1aab71..00000000
--- a/Jobs/IJob.vb
+++ /dev/null
@@ -1,3 +0,0 @@
-Public Interface IJob
- Sub Start(Arguments As Object)
-End Interface
diff --git a/Jobs/JobArgs.vb b/Jobs/JobArgs.vb
new file mode 100644
index 00000000..43156ec6
--- /dev/null
+++ b/Jobs/JobArgs.vb
@@ -0,0 +1,4 @@
+Public Class JobArgs
+ Public Enabled As Boolean
+ Public Interval As Long
+End Class
diff --git a/Jobs/JobBase.vb b/Jobs/JobBase.vb
new file mode 100644
index 00000000..03a77ca6
--- /dev/null
+++ b/Jobs/JobBase.vb
@@ -0,0 +1,14 @@
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+
+Public Class JobBase
+ Protected _LogConfig As LogConfig
+ Protected _Logger As Logger
+ Protected _Firebird As Firebird
+
+ Public Sub New(LogConfig As LogConfig, Firebird As Firebird)
+ _LogConfig = LogConfig
+ _Logger = LogConfig.GetLogger()
+ _Firebird = Firebird
+ End Sub
+End Class
diff --git a/Jobs/JobInterface.vb b/Jobs/JobInterface.vb
new file mode 100644
index 00000000..edd8a83a
--- /dev/null
+++ b/Jobs/JobInterface.vb
@@ -0,0 +1,9 @@
+Public Interface IJob
+ Sub Start(Arguments As Object)
+End Interface
+
+Public Interface IJob(Of T)
+ Sub Start(Arguments As T)
+
+ Function ShouldStart(Arguments As T) As Boolean
+End Interface
diff --git a/Jobs/Jobs.vbproj b/Jobs/Jobs.vbproj
index 52d3116f..59acde28 100644
--- a/Jobs/Jobs.vbproj
+++ b/Jobs/Jobs.vbproj
@@ -57,6 +57,10 @@
+
+ SettingsSingleFileGenerator
+ Settings.Designer.vb
+
@@ -78,14 +82,28 @@
+
+
+
+
+
-
+
+
+
+
+ True
+ True
+ Settings.settings
+
-
+
+ ..\packages\FirebirdSql.Data.FirebirdClient.6.4.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll
+
..\packages\NLog.4.5.11\lib\net45\NLog.dll
diff --git a/Jobs/My Project/Settings.Designer.vb b/Jobs/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..b89e781b
--- /dev/null
+++ b/Jobs/My Project/Settings.Designer.vb
@@ -0,0 +1,71 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
+
+
+ _
+Partial Friend NotInheritable Class Settings
+ Inherits Global.System.Configuration.ApplicationSettingsBase
+
+ Private Shared defaultInstance As Settings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New Settings()),Settings)
+
+#Region "Automatische My.Settings-Speicherfunktion"
+#If _MyType = "WindowsForms" Then
+ Private Shared addedHandler As Boolean
+
+ Private Shared addedHandlerLockObject As New Object
+
+ _
+ Private Shared Sub AutoSaveSettings(sender As Global.System.Object, 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 Settings
+ 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
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.DigitalData.Modules.Jobs.Settings
+ Get
+ Return Global.DigitalData.Modules.Jobs.Settings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/Jobs/My Project/Settings.settings b/Jobs/My Project/Settings.settings
new file mode 100644
index 00000000..e69de29b
diff --git a/Jobs/packages.config b/Jobs/packages.config
index f89fa324..9204b8da 100644
--- a/Jobs/packages.config
+++ b/Jobs/packages.config
@@ -1,4 +1,5 @@
+
\ No newline at end of file
diff --git a/LookupGrid/GridLookupEditExOLD.vb b/LookupGrid/GridLookupEditExOLD.vb
deleted file mode 100644
index c5274973..00000000
--- a/LookupGrid/GridLookupEditExOLD.vb
+++ /dev/null
@@ -1,131 +0,0 @@
-Imports System.ComponentModel
-Imports DevExpress.XtraEditors
-Imports DevExpress.XtraEditors.Controls
-Imports DevExpress.XtraEditors.Repository
-
-Public Class GridLookupEditExOLD
- Inherits GridLookUpEdit
-
-
- Public Property MultiSelect As Boolean
-
- Public Property AllowAddNewValues As Boolean
-
- Public Property PreventDuplicates As Boolean
-
- Public Property DataSource As DataTable
-
- Public Property SelectedValues As List(Of String)
- Get
- If _selectedValues Is Nothing Then
- Return New List(Of String)
- End If
-
- Return _selectedValues
- End Get
- Set(value As List(Of String))
- _selectedValues = value
-
- UpdateSelectedValues(value)
- End Set
- End Property
-
- Private _selectedValues As List(Of String)
-
- Private Const TAG_BUTTON_LOOKUP_FORM = "openLookupForm"
- Private Const TEXT_NO_RECORDS = "Keine Datensätze ausgewählt"
- Friend WithEvents fProperties As RepositoryItemGridLookUpEdit
- Friend WithEvents fPropertiesView As DevExpress.XtraGrid.Views.Grid.GridView
- Private Const TEXT_N_RECORDS = "{0} Datensätze ausgewählt"
-
- Public Sub New()
- Properties.View.OptionsBehavior.ReadOnly = True
- Properties.View.OptionsBehavior.Editable = False
- Properties.View.OptionsView.ShowColumnHeaders = False
- Properties.PopupFormSize = New System.Drawing.Size(Properties.PopupFormSize.Width, 100)
-
- ' If single select, remove dropdown button
- If MultiSelect = False Then
- Properties.Buttons.Clear()
- End If
-
- Properties.Buttons.Add(New EditorButton() With {
- .Kind = ButtonPredefines.Ellipsis,
- .Tag = TAG_BUTTON_LOOKUP_FORM
- })
-
- End Sub
-
- Private Function GetLookupForm() As frmLookupGrid
- Dim oForm As New frmLookupGrid() With {
- .MultiSelect = MultiSelect,
- .AddNewValues = AllowAddNewValues,
- .PreventDuplicates = PreventDuplicates,
- .DataSource = DataSource,
- .SelectedValues = SelectedValues,
- .StartPosition = Windows.Forms.FormStartPosition.Manual,
- .Location = PointToScreen(New System.Drawing.Point(Width, 0))
- }
-
- Return oForm
- End Function
-
- Private Sub UpdateSelectedValues(Values As List(Of String))
- If MultiSelect = True Then
- Properties.DataSource = Values
- Properties.NullText = IIf(Values.Count = 0, TEXT_NO_RECORDS, String.Format(TEXT_N_RECORDS, Values.Count))
- Else
- Text = Values.FirstOrDefault()
- End If
- End Sub
-
- Private Sub GridLookupEditEx_EditValueChanging(sender As Object, e As ChangingEventArgs) Handles Me.EditValueChanging
- If MultiSelect Then
- e.Cancel = True
- End If
- End Sub
-
- Private Sub lookupControlMulti_ButtonClick(sender As Object, e As ButtonPressedEventArgs)
- If e.Button.Tag <> TAG_BUTTON_LOOKUP_FORM Then
- Exit Sub
- End If
-
- Dim oForm As frmLookupGrid = GetLookupForm()
- Dim oResult = oForm.ShowDialog()
-
- If oResult = Windows.Forms.DialogResult.OK Then
- Dim oValues = oForm.SelectedValues
-
- UpdateSelectedValues(oValues)
-
- SelectedValues = oValues
- End If
-
- oForm.Dispose()
- End Sub
-
- Private Sub InitializeComponent()
- Me.fProperties = New DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit()
- Me.fPropertiesView = New DevExpress.XtraGrid.Views.Grid.GridView()
- CType(Me.fProperties, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.fPropertiesView, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.SuspendLayout()
- '
- 'fProperties
- '
- Me.fProperties.Buttons.AddRange(New DevExpress.XtraEditors.Controls.EditorButton() {New DevExpress.XtraEditors.Controls.EditorButton(DevExpress.XtraEditors.Controls.ButtonPredefines.Combo)})
- Me.fProperties.Name = "fProperties"
- Me.fProperties.PopupView = Me.fPropertiesView
- '
- 'fPropertiesView
- '
- Me.fPropertiesView.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus
- Me.fPropertiesView.Name = "fPropertiesView"
- Me.fPropertiesView.OptionsSelection.EnableAppearanceFocusedCell = False
- Me.fPropertiesView.OptionsView.ShowGroupPanel = False
- CType(Me.fProperties, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.fPropertiesView, System.ComponentModel.ISupportInitialize).EndInit()
- Me.ResumeLayout(False)
-
- End Sub
-End Class
diff --git a/LookupGrid/LookupControl2.vb b/LookupGrid/LookupControl2.vb
deleted file mode 100644
index 7908bc17..00000000
--- a/LookupGrid/LookupControl2.vb
+++ /dev/null
@@ -1,74 +0,0 @@
-Imports System.ComponentModel
-Imports System.Drawing
-Imports DevExpress.XtraEditors
-Imports DevExpress.XtraEditors.Drawing
-Imports DevExpress.XtraEditors.Registrator
-Imports DevExpress.XtraEditors.Repository
-Imports DevExpress.XtraEditors.ViewInfo
-Imports DevExpress.XtraEditors.Popup
-Imports DevExpress.Accessibility
-
-
-Public Class RepositoryItemLookupControl2
- Inherits RepositoryItemGridLookUpEdit
-
- Shared Sub New()
- RegisterLookupControl2()
- End Sub
-
- Public Const CustomEditName As String = "LookupControl2"
-
- Public Sub New()
-
- End Sub
-
- Public Overrides ReadOnly Property EditorTypeName As String
- Get
- Return CustomEditName
- End Get
- End Property
-
- Public Shared Sub RegisterLookupControl2()
- Dim img As Image = Nothing
- EditorRegistrationInfo.Default.Editors.Add(New EditorClassInfo(CustomEditName, GetType(LookupControl2), GetType(RepositoryItemLookupControl2), GetType(GridLookUpEditBaseViewInfo), New ButtonEditPainter(), True, img, GetType(ButtonEditAccessible)))
- End Sub
-
- Public Overrides Sub Assign(item As RepositoryItem)
- BeginUpdate()
- Try
- MyBase.Assign(item)
- Dim source As RepositoryItemLookupControl2 = TryCast(item, RepositoryItemLookupControl2)
- If source Is Nothing Then
- Return
- End If
- Finally
- EndUpdate()
- End Try
- End Sub
-End Class
-
-
-Public Class LookupControl2
- Inherits GridLookUpEdit
-
- Shared Sub New()
- RepositoryItemLookupControl2.RegisterLookupControl2()
- End Sub
-
- Public Sub New()
-
- End Sub
-
-
- Public Shadows ReadOnly Property Properties As RepositoryItemLookupControl2
- Get
- Return TryCast(MyBase.Properties, RepositoryItemLookupControl2)
- End Get
- End Property
-
- Public Overrides ReadOnly Property EditorTypeName As String
- Get
- Return RepositoryItemLookupControl2.CustomEditName
- End Get
- End Property
-End Class
diff --git a/LookupGrid/LookupCreator.vb b/LookupGrid/LookupCreator.vb
deleted file mode 100644
index 6f9a206e..00000000
--- a/LookupGrid/LookupCreator.vb
+++ /dev/null
@@ -1,3 +0,0 @@
-Public Class LookupCreator
-
-End Class
diff --git a/Message/Email.vb b/Message/Email.vb
index 9d338965..e6135f3f 100644
--- a/Message/Email.vb
+++ b/Message/Email.vb
@@ -1,21 +1,148 @@
Imports Independentsoft.Email
Imports Independentsoft.Email.Pop3
-Imports Independentsoft.Email.Smtp
Imports Independentsoft.Email.Mime
Imports Independentsoft.Email.Imap
Imports DigitalData.Modules.Logging
Imports System.Net.Mail
Imports System.Net
-Imports System.Security
+Imports System.Reflection
+Imports System.IO
Public Class Email
- Private _logger As Logging.Logger
- Private _logConfig As LogConfig
+ Private ReadOnly _logger As Logging.Logger
+ Private ReadOnly _logConfig As LogConfig
+
Public Sub New(LogConfig As LogConfig)
_logger = LogConfig.GetLogger()
_logConfig = LogConfig
-
End Sub
+
+ '''
+ ''' Tests connection to a given IMAP Server by connecting and doing a simple message query.
+ '''
+ ''' IP-Address or Domainname of Server
+ ''' IMAP-Port
+ ''' IMAP-Username
+ ''' IMAP-Password
+ ''' The folder to fetch messages from. Defaults to `Inbox`
+ ''' True if connection and query were successful. False otherwise.
+ Public Function TestIMAPLogin(Server As String, Port As Integer, Username As String, Password As String, Optional Folder As String = "Inbox") As Boolean
+ _logger.Debug("Testing Login to Server {0}:{1} with user {2}", Server, Port, Username)
+
+ Try
+ _logger.Debug("Connecting...")
+ Using oClient As New S22.Imap.ImapClient(Server, Port, Username, Password, S22.Imap.AuthMethod.Login, True)
+ If Not oClient.Authed Then
+ _logger.Warn("Connected to server but authentication failed.")
+ Return False
+ End If
+ _logger.Debug("Connection successful")
+
+ _logger.Debug("Fetching MessageIds..")
+ Dim oMessageIds As IEnumerable(Of UInteger) = oClient.Search(S22.Imap.SearchCondition.Unseen, Folder)
+
+ _logger.Debug("Found {0} messages", oMessageIds.Count)
+ _logger.Debug("Fetching messages...")
+
+ Dim oMessages As IEnumerable(Of MailMessage) = oClient.GetMessages(oMessageIds, False, Folder)
+ _logger.Debug("Messages fetched")
+
+ oClient.Dispose()
+
+ Return True
+ End Using
+ Catch ex As Exception
+ _logger.Error(ex)
+ Return False
+ End Try
+ End Function
+
+ '''
+ ''' Connects to an IMAP Server with the given credentials and
+ ''' fetches emails from the given folder.
+ ''' Results can be filtered with `SearchCondition`
+ '''
+ ''' IP-Address or Domainname of Server
+ ''' IMAP-Port
+ ''' IMAP-Username
+ ''' IMAP-Password
+ ''' The folder to fetch messages from
+ ''' Filter the search command. Defaults to `All`
+ ''' A list of Independentsoft.Email.Mime.Message objects
+ Public Function FetchIMAPMessages(Server As String, Port As Integer, Username As String, Password As String, Folder As String, Optional SearchCondition As S22.Imap.SearchCondition = S22.Imap.SearchCondition.All) As List(Of Message)
+ Dim oMessages As New List(Of Message)
+
+ _logger.Debug("Connecting to Server {0}:{1} with user {2}", Server, Port, Username)
+
+ Try
+ _logger.Debug("Connecting...")
+ Using oClient As New S22.Imap.ImapClient(Server, Port, Username, Password, S22.Imap.AuthMethod.Login, True)
+ If Not oClient.Authed Then
+ _logger.Warn("Connected to server but authentication failed.")
+ Return Nothing
+ End If
+ _logger.Debug("Connection successful")
+
+ _logger.Debug("Fetching MessageIds..")
+ Dim oMessageIds As IEnumerable(Of UInteger) = oClient.Search(S22.Imap.SearchCondition.Unseen, Folder)
+
+ _logger.Debug("Found {0} messages", oMessageIds.Count)
+ _logger.Debug("Fetching messages...")
+
+ ' Since this needs to return a list of IndependentSoft Message objects,
+ ' we 'convert' the .NET MailMessage objects that are fetched from the server
+ ' by writing them temporarily to disk as an eml file and then reading them back into a Message object.
+ ' This approach uses an unintended use of internal .NET APIs and may break in the future.
+ For Each oMessageId As UInteger In oMessageIds
+ Dim oMessage = oClient.GetMessage(oMessageId, False, Folder)
+ Dim oTempPath = Path.GetTempFileName()
+ Dim oResult = WriteMessageToFile(oMessage, oTempPath)
+
+ Dim oMsg As New Message(oTempPath)
+ oMessages.Add(oMsg)
+
+ Try
+ File.Delete(oTempPath)
+ Catch ex As Exception
+ _logger.Error(ex)
+ _logger.Warn("Temp file could not be deleted")
+ End Try
+ Next
+
+ _logger.Debug("{0} Messages fetched", oMessages.Count)
+ End Using
+
+ Return oMessages
+ Catch ex As Exception
+ _logger.Error(ex)
+ Return Nothing
+ End Try
+ End Function
+
+ '''
+ ''' Uses a private API from MailWriter to write a MailMessage to disk.
+ ''' May break in future versions of .NET
+ '''
+ Public Function WriteMessageToFile(Message As MailMessage, Filename As String) As Boolean
+ Dim oAssembly As Assembly = GetType(Mail.SmtpClient).Assembly
+ Dim oMailWriterType As Type = oAssembly.[GetType]("System.Net.Mail.MailWriter")
+
+ Try
+ Using oStream As New FileStream(Filename, FileMode.Create)
+ Dim oMailWriterConstructor As ConstructorInfo = oMailWriterType.GetConstructor(
+ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, New Type() {GetType(Stream)}, Nothing
+ )
+ Dim oMailWriter As Object = oMailWriterConstructor.Invoke(New Object() {oStream})
+ Dim sendMethod As MethodInfo = GetType(MailMessage).GetMethod("Send", BindingFlags.Instance Or BindingFlags.NonPublic)
+ sendMethod.Invoke(Message, BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, {oMailWriter, True, True}, Nothing)
+ End Using
+
+ Return True
+ Catch ex As Exception
+ Return Nothing
+ End Try
+ End Function
+
Public Function IMAP_COLLECT(INBOXNAME As String, MYMAIL_SERVER As String, MYMAIL_PORT As Integer, MYMAIL_USER As String, MYMAIL_USER_PW As String)
Try
Dim oMAIL_LIST As New ArrayList()
@@ -134,6 +261,7 @@ Public Class Email
mailfrom As String, mailsmtp As String, mailport As Integer, mailUser As String, mailPW As String,
AUTH_TYPE As String, SENDER_INSTANCE As String, Optional attachmentString As String = "", Optional Test As Boolean = False)
Try
+ Dim oError As Boolean = False
Dim oReceipiants As String()
If mailto.Contains(";") Then
oReceipiants = mailto.Split(";")
@@ -141,42 +269,42 @@ Public Class Email
ReDim Preserve oReceipiants(0)
oReceipiants(0) = mailto
End If
- _logger.Debug($"mailsmtp [{mailsmtp}]")
- _logger.Debug($"mailfrom [{mailfrom}]")
- _logger.Debug($"mailport [{mailport}]")
For Each oMailReceipiant As String In oReceipiants
_logger.Debug($"oMailReceipiant [{oMailReceipiant}]")
+ _logger.Debug($"mailsmtp [{mailsmtp}]")
+ Dim sClient As Net.Mail.SmtpClient
+ Try
+ sClient = New Net.Mail.SmtpClient(mailsmtp, mailport)
+ Catch ex As Exception
+ _logger.Warn($"Could not create SMTP-Client: [{ex.Message}]")
+ Return False
+ End Try
+ sClient.DeliveryMethod = SmtpDeliveryMethod.Network
- Dim oSmtp_Server As New Mail.SmtpClient
- Dim oE_mail As New MailMessage()
- oSmtp_Server.UseDefaultCredentials = False
- oSmtp_Server.Credentials = New Net.NetworkCredential(mailUser, mailPW)
- oSmtp_Server.Port = mailport
+ Dim mymesssage As New MailMessage
+ sClient.Port = mailport
+ _logger.Debug($"mailport [{mailport}]")
If AUTH_TYPE = "SSL" Then
_logger.Debug("SSL = true")
- oSmtp_Server.EnableSsl = True
+ sClient.EnableSsl = True
Else
_logger.Debug("SSL = false")
- oSmtp_Server.EnableSsl = False
+ sClient.EnableSsl = False
End If
+ _logger.Debug($"mailUser [{mailUser}]")
+ sClient.Credentials = New NetworkCredential(mailUser, mailPW)
+ sClient.UseDefaultCredentials = False
- oSmtp_Server.Host = mailsmtp
-
- oE_mail = New MailMessage()
- oE_mail.From = New MailAddress(mailfrom)
- oE_mail.To.Add(oMailReceipiant)
- oE_mail.Subject = mailSubject
- oE_mail.IsBodyHtml = False
If Test = True Then
- oE_mail.Body = $"This is the body (text will be replaced within profile)!
mailsmtp: {mailsmtp}
mailport: {mailport}
mailUser: {mailUser}
mailPW: XXXX
AUTH_TYPE: {AUTH_TYPE}"
+ mymesssage.Body = $"This is the body (text will be replaced within profile)!
mailsmtp: {mailsmtp}
mailport: {mailport}
mailUser: {mailUser}
mailPW: XXXX
AUTH_TYPE: {AUTH_TYPE}"
Else
- oE_mail.Body = mailBody
+ mymesssage.Body = mailBody
End If
_logger.Debug($"mailBody [{mailBody}]")
- oE_mail.IsBodyHtml = True
- Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(oE_mail.Body)
+ 'mymesssage.IsBodyHtml = True
+ Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(mymesssage.Body)
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
- oE_mail.AlternateViews.Add(htmlView)
+ mymesssage.AlternateViews.Add(htmlView)
_logger.Debug($"attachmentString [{attachmentString}]")
If attachmentString <> "" Then
_logger.Info($"Attachment Path is: {attachmentString}")
@@ -189,20 +317,29 @@ Public Class Email
'ElseIf attment.ToLower.EndsWith("docx") Then
' oAttachment.ContentType = New Independentsoft.Email.Mime.ContentType("application", "MS-word")
'End If
- oE_mail.Attachments.Add(oAttachment)
+ mymesssage.Attachments.Add(oAttachment)
Else
_logger.Debug("No Attachment.")
End If
_logger.Debug($"mailfrom [{mailfrom}]")
- oSmtp_Server.Send(oE_mail)
+
+ mymesssage.From = New MailAddress(mailfrom)
+ _logger.Debug($"mailSubject [{mailSubject}]")
+ mymesssage.Subject = mailSubject
+ mymesssage.To.Add(New MailAddress(oMailReceipiant))
+ _logger.Debug($"Now Sending mail...")
+ sClient.Send(mymesssage)
_logger.Debug($"Mail has been sent!")
_logger.Info("Message to " & oMailReceipiant & " has been send.")
Next
+ If oError = False Then
+ Return True
+ Else
+ Return False
+ End If
- Return True
-
- Catch error_t As Exception
- _logger.Error(error_t)
+ Catch ex As Exception
+ _logger.Error(ex)
Return False
End Try
diff --git a/Message/Messaging.vbproj b/Message/Messaging.vbproj
index 8c9bb92e..a396cfbb 100644
--- a/Message/Messaging.vbproj
+++ b/Message/Messaging.vbproj
@@ -53,6 +53,9 @@
..\packages\NLog.4.5.11\lib\net45\NLog.dll
+
+ ..\packages\S22.Imap.3.6.0.0\lib\net40\S22.Imap.dll
+
diff --git a/Message/packages.config b/Message/packages.config
index f89fa324..61e0c253 100644
--- a/Message/packages.config
+++ b/Message/packages.config
@@ -1,4 +1,5 @@
+
\ No newline at end of file
diff --git a/Config/Config.vbproj b/Modules.Config/Config.vbproj
similarity index 98%
rename from Config/Config.vbproj
rename to Modules.Config/Config.vbproj
index 4e569b1a..7d7203f6 100644
--- a/Config/Config.vbproj
+++ b/Modules.Config/Config.vbproj
@@ -73,7 +73,9 @@
+
+
True
@@ -89,7 +91,6 @@
Settings.settings
True
-
diff --git a/Modules.Config/ConfigAttributes.vb b/Modules.Config/ConfigAttributes.vb
new file mode 100644
index 00000000..672423f2
--- /dev/null
+++ b/Modules.Config/ConfigAttributes.vb
@@ -0,0 +1,9 @@
+Public Class ConfigAttributes
+ Public Class ConnectionStringAttribute
+ Inherits Attribute
+ End Class
+
+ Public Class ConnectionStringTestAttribute
+ Inherits Attribute
+ End Class
+End Class
diff --git a/Modules.Config/ConfigManager.vb b/Modules.Config/ConfigManager.vb
new file mode 100644
index 00000000..a082ca94
--- /dev/null
+++ b/Modules.Config/ConfigManager.vb
@@ -0,0 +1,268 @@
+Imports System.IO
+Imports System.Reflection
+Imports System.Xml.Serialization
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Config.ConfigAttributes
+
+Public Class ConfigManager(Of T)
+ Private Const USER_CONFIG_NAME As String = "UserConfig.xml"
+ Private Const COMPUTER_CONFIG_NAME As String = "ComputerConfig.xml"
+
+ Private ReadOnly _LogConfig As LogConfig
+ Private ReadOnly _Logger As Logger
+ Private ReadOnly _File As Filesystem.File
+ Private ReadOnly _UserPath As String
+ Private ReadOnly _ComputerPath As String
+
+ Private _ForceUserConfig As Boolean = False
+ Private _TestMode As Boolean = False
+
+ '''
+ ''' The blueprint class from which the default config is created
+ '''
+ Private ReadOnly _Blueprint As T
+ Private ReadOnly _Serializer As XmlSerializer
+
+ Public ReadOnly Property Config As T
+
+ '''
+ ''' Creates a new instance of the ConfigManager
+ '''
+ '''
+ ''' LogConfig instance
+ ''' The path to check for a user config file, eg. AppData
+ ''' The path to check for a computer config file, eg. ProgramData
+ ''' Override values from ComputerConfig with UserConfig
+ Public Sub New(LogConfig As LogConfig, UserConfigPath As String, ComputerConfigPath As String, Optional ForceUserConfig As Boolean = False)
+ _LogConfig = LogConfig
+ _Logger = LogConfig.GetLogger()
+ _File = New Filesystem.File(_LogConfig)
+
+ _UserPath = Path.Combine(UserConfigPath, USER_CONFIG_NAME)
+ _ComputerPath = Path.Combine(ComputerConfigPath, COMPUTER_CONFIG_NAME)
+ _ForceUserConfig = ForceUserConfig
+
+ _Blueprint = Activator.CreateInstance(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)
+ 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)
+ 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
+
+ _Config = LoadConfig()
+ End Sub
+
+ '''
+ ''' Creates a new ConfigManager with a single (user)config path
+ '''
+ '''
+ '''
+ Public Sub New(LogConfig As LogConfig, ConfigPath As String)
+ MyClass.New(LogConfig, ConfigPath, ConfigPath, ForceUserConfig:=True)
+ End Sub
+
+ '''
+ ''' Save the current config object to `UserConfigPath`
+ '''
+ ''' True if save was successful, False otherwise
+ Public Function Save() As Boolean
+ Try
+ WriteToFile(_Config, _UserPath)
+ Return True
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Return False
+ End Try
+ End Function
+
+ '''
+ ''' Copies all properties from Source to Target, except those who have an attribute
+ ''' listed in ExcludedAttributeTypes
+ '''
+ ''' Config Class
+ ''' Source config object
+ ''' Target config object
+ ''' List of Attribute type to exclude
+ Private Sub CopyValues(Of T)(Source As T, Target As T, Optional ExcludedAttributeTypes As List(Of Type) = Nothing)
+ Dim oType As Type = GetType(T)
+ Dim oExcludedAttributeTypes = IIf(IsNothing(ExcludedAttributeTypes), New List(Of Type), ExcludedAttributeTypes)
+ Dim oProperties = oType.GetProperties().
+ Where(Function(p) p.CanRead And p.CanWrite).
+ Where(Function(p)
+ For Each oAttributeType As Type In oExcludedAttributeTypes
+ If Attribute.IsDefined(p, oAttributeType) Then
+ Return False
+ End If
+ Next
+ Return True
+ End Function)
+
+ For Each oProperty As PropertyInfo In oProperties
+ Dim oValue = oProperty.GetValue(Source, Nothing)
+ If Not IsNothing(oValue) Then
+ oProperty.SetValue(Target, oValue, Nothing)
+ End If
+ Next
+ End Sub
+
+ Private Function LoadConfig() As T
+ ' first create an empty/default config object
+ Dim oConfig = Activator.CreateInstance(_Blueprint.GetType)
+ ' then Try to load computer config
+ oConfig = LoadComputerConfig(oConfig)
+ ' now try to load userconfig
+ oConfig = LoadUserConfig(oConfig)
+ Return oConfig
+ End Function
+
+ Private Function LoadComputerConfig(ByVal Config As T) As T
+ If File.Exists(_ComputerPath) Then
+ Try
+ Dim oComputerConfig = ReadFromFile(_ComputerPath)
+ CopyValues(oComputerConfig, Config)
+ Catch ex As Exception
+ _Logger.Error(ex)
+ _Logger.Warn("Computer config could not be loaded!")
+ End Try
+ Else
+ _ForceUserConfig = True
+ End If
+
+ Return Config
+ End Function
+
+ Private Function LoadUserConfig(ByVal Config As T) As T
+ If File.Exists(_UserPath) Then
+ Try
+ Dim oUserConfig = ReadFromFile(_UserPath)
+
+ ' if user config exists
+ If Not IsNothing(oUserConfig) Then
+ Dim oExcludedAttributes As New List(Of Type)
+
+ ' Copy values from user config to final config
+ If _ForceUserConfig Then
+ CopyValues(oUserConfig, Config, New List(Of Type))
+ Else
+ CopyValues(oUserConfig, Config, New List(Of Type) From {
+ GetType(ConnectionStringAttribute),
+ GetType(ConnectionStringTestAttribute)
+ })
+ End If
+ End If
+
+ 'Dim oConnectionProperty = TestHasAttribute(oConfig, GetType(ConnectionStringAttribute))
+ Catch ex As Exception
+ _Logger.Error(ex)
+ _Logger.Warn("User config could not be loaded!")
+ End Try
+ End If
+
+ Return Config
+ End Function
+
+ Private Function LoadDefaultConfig() As T
+ _Logger.Debug("Creating default config in UserPath: {0}", _UserPath)
+ Dim oConfig = Activator.CreateInstance(_Blueprint.GetType)
+
+ Try
+ WriteToFile(oConfig, _UserPath)
+ Catch ex As Exception
+ _Logger.Warn("Could not create default config in UserPath: {0}", _UserPath)
+ End Try
+
+ Return oConfig
+ End Function
+
+ Private Function TestHasAttribute(Config As T, AttributeType As Type) As Boolean
+ For Each oProperty As PropertyInfo In Config.GetType.GetProperties()
+ If Attribute.IsDefined(oProperty, GetType(ConnectionStringAttribute)) Then
+ Return True
+ End If
+ Next
+
+ Return False
+ End Function
+
+ '''
+ ''' Serialize a config object to byte array
+ '''
+ '''
+ '''
+ Private Function Serialize(Data As T) As Byte()
+ Try
+ _Logger.Debug("Serializing config object")
+
+ Using oStream = New MemoryStream()
+ _Serializer.Serialize(oStream, Data)
+ Return oStream.ToArray()
+ End Using
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ '''
+ ''' Write an object to disk as xml
+ '''
+ ''' The object to write
+ ''' The file name to write to
+ Private Sub WriteToFile(Data As T, Path As String)
+ Try
+ _Logger.Debug("Saving config to: {0}", Path)
+ Dim oBytes = Serialize(Data)
+
+ Using oFileStream = New FileStream(Path, FileMode.Create, FileAccess.Write)
+ oFileStream.Write(oBytes, 0, oBytes.Length)
+ oFileStream.Flush()
+ End Using
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Sub
+
+ '''
+ ''' Reads an xml from disk and deserializes to object
+ '''
+ '''
+ Private Function ReadFromFile(Path As String) As T
+ Try
+ _Logger.Debug("Loading config from: {0}", Path)
+ Dim oConfig As T
+
+ Using oReader As New StreamReader(Path)
+ 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
+
+ Return oConfig
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+End Class
diff --git a/Modules.Config/ConfigSample.vb b/Modules.Config/ConfigSample.vb
new file mode 100644
index 00000000..0f2f7e75
--- /dev/null
+++ b/Modules.Config/ConfigSample.vb
@@ -0,0 +1,10 @@
+Imports DigitalData.Modules.Config.ConfigAttributes
+
+Public Class ConfigSample
+
+
+ Public Property ConnectionString As String
+
+
+ Public Property ConnectionStringTest As String
+End Class
diff --git a/Modules.Config/My Project/Application.Designer.vb b/Modules.Config/My Project/Application.Designer.vb
new file mode 100644
index 00000000..8ab460ba
--- /dev/null
+++ b/Modules.Config/My Project/Application.Designer.vb
@@ -0,0 +1,13 @@
+'------------------------------------------------------------------------------
+'
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
+'
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
+'
+'------------------------------------------------------------------------------
+
+Option Strict On
+Option Explicit On
+
diff --git a/LookupGrid/My Project/Application.myapp b/Modules.Config/My Project/Application.myapp
similarity index 100%
rename from LookupGrid/My Project/Application.myapp
rename to Modules.Config/My Project/Application.myapp
diff --git a/Config/My Project/AssemblyInfo.vb b/Modules.Config/My Project/AssemblyInfo.vb
similarity index 92%
rename from Config/My Project/AssemblyInfo.vb
rename to Modules.Config/My Project/AssemblyInfo.vb
index e6f4faa3..7a591066 100644
--- a/Config/My Project/AssemblyInfo.vb
+++ b/Modules.Config/My Project/AssemblyInfo.vb
@@ -12,7 +12,7 @@ Imports System.Runtime.InteropServices
-
+
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
'
-
+
diff --git a/Config/My Project/Resources.Designer.vb b/Modules.Config/My Project/Resources.Designer.vb
similarity index 100%
rename from Config/My Project/Resources.Designer.vb
rename to Modules.Config/My Project/Resources.Designer.vb
diff --git a/Modules.Config/My Project/Resources.resx b/Modules.Config/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/Modules.Config/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/Config/My Project/Settings.Designer.vb b/Modules.Config/My Project/Settings.Designer.vb
similarity index 100%
rename from Config/My Project/Settings.Designer.vb
rename to Modules.Config/My Project/Settings.Designer.vb
diff --git a/Modules.Config/My Project/Settings.settings b/Modules.Config/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/Modules.Config/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Config/SampleConfig.vb b/Modules.Config/SampleConfig.vb
similarity index 100%
rename from Config/SampleConfig.vb
rename to Modules.Config/SampleConfig.vb
diff --git a/Modules.Config/packages.config b/Modules.Config/packages.config
new file mode 100644
index 00000000..f89fa324
--- /dev/null
+++ b/Modules.Config/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Modules.Database/Firebird.vb b/Modules.Database/Firebird.vb
index 0d9ffffe..1bc2b3b2 100644
--- a/Modules.Database/Firebird.vb
+++ b/Modules.Database/Firebird.vb
@@ -47,7 +47,7 @@ Imports DigitalData.Modules.Logging
'''
Public Class Firebird
Private _Logger As Logger
- Private _MyLogger As LogConfig
+ Private _LogConfig As LogConfig
Private _connectionServer As String
Private _connectionDatabase As String
Private _connectionUsername As String
@@ -79,15 +79,16 @@ Public Class Firebird
'''
'''
'''
- '''
- '''
- '''
- '''
+ ''' The LogFactory containing the current log config. Used to instanciate the class logger for this and any dependent class
+ ''' The server where the database lives, for example 127.0.0.1 or dd-vmx09-vm03
+ ''' The location of the Database in the format `127.0.0.1:E:\Path\To\Database.FDB`
+ ''' The user name to connect as
+ ''' The user's password
'''
Public Sub New(LogConfig As LogConfig, Datasource As String, Database As String, User As String, Password As String)
Try
- _MyLogger = LogConfig
- _Logger = _MyLogger.GetLogger()
+ _LogConfig = LogConfig
+ _Logger = _LogConfig.GetLogger()
Dim oConnectionString = GetConnectionString(Datasource, Database, User, Password)
_connectionServer = Datasource
@@ -147,7 +148,7 @@ Public Class Firebird
}.ToString()
End Function
- Private Function MaybeGetTransaction(Connection As FbConnection, Mode As TransactionMode, Transaction As FbTransaction)
+ Private Function MaybeGetTransaction(Connection As FbConnection, Mode As TransactionMode, Transaction As FbTransaction) As FbTransaction
If Mode = TransactionMode.NoTransaction Then
Return Nothing
ElseIf Mode = TransactionMode.ExternalTransaction Then
@@ -157,7 +158,7 @@ Public Class Firebird
End If
End Function
- Private Function MaybeCommitTransaction(Transaction As FbTransaction, TransactionMode As TransactionMode)
+ Private Function MaybeCommitTransaction(Transaction As FbTransaction, TransactionMode As TransactionMode) As Boolean
Select Case TransactionMode
Case TransactionMode.NoTransaction
Return True
@@ -168,7 +169,7 @@ Public Class Firebird
Transaction.Commit()
Return True
Catch ex As Exception
- _logger.Error(ex)
+ _Logger.Error(ex)
Return False
End Try
Case Else
diff --git a/Modules.Database/MSSQLServer.vb b/Modules.Database/MSSQLServer.vb
index 45437826..cf1b1fbc 100644
--- a/Modules.Database/MSSQLServer.vb
+++ b/Modules.Database/MSSQLServer.vb
@@ -1,29 +1,27 @@
Imports System.Data.SqlClient
+Imports DigitalData.Modules.Logging
Public Class MSSQLServer
- Private Shared Logger As NLog.Logger = NLog.LogManager.GetCurrentClassLogger
Public DBInitialized As Boolean = False
Public CurrentSQLConnectionString As String = ""
- Private CurrentSQLConnection As SqlClient.SqlConnection
- Public Sub New(CONSTRING As String)
- Init(CONSTRING)
- End Sub
- Public Function Init(CONSTRING As String)
+ Private CurrentSQLConnection As SqlConnection
+ Private _Logger As Logger
+
+ Public Sub New(LogConfig As LogConfig, ConnectionString As String)
+ _Logger = LogConfig.GetLogger()
+
Try
- Dim oSQLconnect As New SqlClient.SqlConnection
- oSQLconnect.ConnectionString = CONSTRING
+ Dim oSQLconnect As New SqlConnection
+ oSQLconnect.ConnectionString = ConnectionString
oSQLconnect.Open()
oSQLconnect.Close()
- CurrentSQLConnectionString = CONSTRING
+ CurrentSQLConnectionString = ConnectionString
DBInitialized = True
- Return True
Catch ex As Exception
DBInitialized = False
- Logger.Error(ex)
- 'clsLogger.Add("Error in DatabaseInit: " & ex.Message, True)
- Return False
+ _Logger.Error(ex)
End Try
- End Function
+ End Sub
Private Function GetSQLConnection()
Try
@@ -32,22 +30,21 @@ Public Class MSSQLServer
oSQLconnect.ConnectionString = CurrentSQLConnectionString
CurrentSQLConnection = oSQLconnect
CurrentSQLConnection.Open()
-
Else
If CurrentSQLConnection.State <> ConnectionState.Open Then
- Logger.Warn($"Actual ConnectionState is: '{CurrentSQLConnection.State.ToString}'")
+ _Logger.Warn($"Actual ConnectionState is: '{CurrentSQLConnection.State.ToString}'")
Try
CurrentSQLConnection.Open()
Return True
Catch ex As Exception
- Logger.Warn("Could not reconnect to database!")
+ _Logger.Warn("Could not reconnect to database!")
Return False
End Try
End If
End If
Return True
Catch ex As Exception
- Logger.Error(ex)
+ _Logger.Error(ex)
Return False
End Try
End Function
@@ -65,18 +62,18 @@ Public Class MSSQLServer
Return Nothing
End If
- Dim oSQLCOmmand As SqlClient.SqlCommand
+ Dim oSQLCOmmand As SqlCommand
oSQLCOmmand = CurrentSQLConnection.CreateCommand()
oSQLCOmmand.CommandText = sqlcommand
oSQLCOmmand.CommandTimeout = commandtimeout
- Dim adapter1 As SqlClient.SqlDataAdapter = New SqlClient.SqlDataAdapter(oSQLCOmmand)
+ Dim adapter1 As SqlDataAdapter = New SqlDataAdapter(oSQLCOmmand)
adapter1.Fill(dt)
Return dt
Catch ex As Exception
- Logger.Error(ex)
- Logger.Debug("sqlcommand: " & sqlcommand)
+ _Logger.Error(ex)
+ _Logger.Debug("sqlcommand: " & sqlcommand)
Return Nothing
End Try
End Function
@@ -93,7 +90,7 @@ Public Class MSSQLServer
Return Nothing
End If
'Dim oSQLconnect As New SqlClient.SqlConnection
- Dim oSQLCOmmand As SqlClient.SqlCommand
+ Dim oSQLCOmmand As SqlCommand
oSQLCOmmand = CurrentSQLConnection.CreateCommand()
oSQLCOmmand.CommandText = executeStatement
@@ -102,8 +99,8 @@ Public Class MSSQLServer
oSQLCOmmand.Dispose()
Return True
Catch ex As Exception
- Logger.Error(ex)
- Logger.Debug("executeStatement: " & executeStatement)
+ _Logger.Error(ex)
+ _Logger.Debug("executeStatement: " & executeStatement)
Return False
End Try
End Function
@@ -118,8 +115,8 @@ Public Class MSSQLServer
Exit Sub
End If
- Dim oSQLCOmmand As SqlClient.SqlCommand
- Dim callback As New AsyncCallback(AddressOf Execute_non_Query_Async_Callback)
+ Dim oSQLCOmmand As SqlCommand
+ Dim callback As New AsyncCallback(AddressOf NewExecuteNonQueryAsync_Callback)
Try
oSQLCOmmand = CurrentSQLConnection.CreateCommand()
oSQLCOmmand.CommandText = executeStatement
@@ -127,15 +124,15 @@ Public Class MSSQLServer
oSQLCOmmand.BeginExecuteNonQuery(callback, oSQLCOmmand)
oSQLCOmmand.Dispose()
Catch ex As Exception
- Logger.Error(ex)
- Logger.Debug("executeStatement: " & executeStatement)
+ _Logger.Error(ex)
+ _Logger.Debug("executeStatement: " & executeStatement)
End Try
End Sub
- Private Sub Execute_non_Query_Async_Callback(ByVal result As IAsyncResult)
- Dim command As SqlClient.SqlCommand = CType(result.AsyncState, SqlClient.SqlCommand)
+ Private Sub NewExecuteNonQueryAsync_Callback(ByVal result As IAsyncResult)
+ Dim command As SqlCommand = CType(result.AsyncState, SqlCommand)
Dim res = command.EndExecuteNonQuery(result)
- Logger.Info(String.Format("Finished executing Async database operation: {0}", command.CommandText))
+ _Logger.Info(String.Format("Finished executing Async database operation: {0}", command.CommandText))
End Sub
'''
''' Executes the passed sql-statement as Scalar
@@ -159,8 +156,8 @@ Public Class MSSQLServer
oSQLCOmmand.Dispose()
Return result
Catch ex As Exception
- Logger.Error(ex)
- Logger.Debug("executeStatement: " & executeStatement)
+ _Logger.Error(ex)
+ _Logger.Debug("executeStatement: " & executeStatement)
Return Nothing
End Try
End Function
diff --git a/Modules.Interfaces/ActiveDirectoryInterface.vb b/Modules.Interfaces/ActiveDirectoryInterface.vb
new file mode 100644
index 00000000..09ceae2b
--- /dev/null
+++ b/Modules.Interfaces/ActiveDirectoryInterface.vb
@@ -0,0 +1,309 @@
+Imports System.DirectoryServices
+Imports System.DirectoryServices.AccountManagement
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Logging
+
+Public Class ActiveDirectoryInterface
+ Private _logConfig As LogConfig
+ Private _logger As Logger
+ Private _firebird As Firebird
+
+ Private _rootPath As String
+ Private _rootNode As DirectoryEntry
+
+ Private Const SEARCH_LIMIT = 50000
+
+ Private Const SAMACCOUNTNAME = "samaccountname"
+ Private Const OBJECTCLASS = "objectClass"
+ Private Const CN = "cn"
+ Private Const DESCRIPTION = "description"
+ Private Const DISINGUISHEDNAME = "distinguishedName"
+ Private Const NAME = "name"
+ Private Const OBJECTCATEGORY = "objectCategory"
+
+ Public Sub New(LogConfig As LogConfig, Firebird As Firebird, Optional RootPath As String = Nothing)
+ _logConfig = LogConfig
+ _logger = _logConfig.GetLogger()
+ _firebird = Firebird
+
+ If RootPath Is Nothing Then
+ _rootPath = $"LDAP://{Environment.UserDomainName}"
+ Else
+ _rootPath = RootPath
+ End If
+ End Sub
+
+ Public Function SyncUsersForGroup(GroupName As String) As List(Of ADUser)
+ Dim oUsers As New List(Of ADUser)
+ Dim oSyncedUsers As New List(Of ADUser)
+ Dim oGroupId As Int64 = Nothing
+
+ Try
+ _logger.Debug("Fetching users from ActiveDirectory")
+ oUsers = ListUsers(GroupName)
+ _logger.Debug("Found {0} users", oUsers.Count)
+ Catch ex As Exception
+ _logger.Error(ex)
+ Return Nothing
+ End Try
+
+ If oUsers.Count = 0 Then
+ _logger.Debug("Group {0} does not contain any users.", GroupName)
+ Return oSyncedUsers
+ End If
+
+ Try
+ _logger.Debug("Getting group Id for group {0}", GroupName)
+ oGroupId = GetGroupId(GroupName)
+
+ If oGroupId = 0 Then
+ _logger.Warn("Group {0} does not exist in database. Exiting", GroupName)
+ Return Nothing
+ End If
+
+ _logger.Debug("Using group Id {0}", oGroupId)
+ Catch ex As Exception
+ _logger.Error(ex)
+ Return Nothing
+ End Try
+
+ For Each oUser In oUsers
+ Dim oUserId As Int64
+ Dim oUserExists As Boolean = False
+
+ ' Check if user already exists
+ Try
+ _logger.Debug("Checking if user {0} exists", oUser)
+ oUserId = GetUserId(oUser.samAccountName)
+ oUserExists = Not IsNothing(oUserId)
+ _logger.Debug("User {0} exists in database: ", oUser, oUserExists)
+ Catch ex As Exception
+ _logger.Error(ex)
+ _logger.Warn("Could not get UserId for user. Skipping")
+ Continue For
+ End Try
+
+ ' I user does not exist, create a new user
+ Try
+ If Not oUserExists Then
+ _logger.Debug("Creating new user for {0}", oUser)
+ oUserId = CreateUser(oUser)
+ _logger.Debug("User created with Id {0}", oUserId)
+ End If
+ Catch ex As Exception
+ _logger.Error(ex)
+ _logger.Warn("Could not create user. Skipping")
+ Continue For
+ End Try
+
+ ' Add the user to group
+ Try
+ AddUserToGroup(oUserId, oGroupId)
+ Catch ex As Exception
+ _logger.Error(ex)
+ _logger.Warn("Could not add user to group. Skipping")
+ Continue For
+ End Try
+
+ oSyncedUsers.Add(oUser)
+ Next
+
+ Return oSyncedUsers
+ End Function
+
+ Public Function Authenticate() As Boolean
+ Try
+ Dim oEntry = GetRootNode()
+ oEntry.RefreshCache()
+
+ _rootNode = oEntry
+ Return True
+ Catch ex As Exception
+ _logger.Error(ex)
+ _logger.Warn("Could not authenticate with Active Directory.")
+ Return False
+ End Try
+ End Function
+ Public Function Authenticate(Username As String, Password As String) As Boolean
+ Try
+ Dim oEntry = GetRootNode(Username, Password)
+ oEntry.RefreshCache()
+
+ _rootNode = oEntry
+ Return True
+ Catch ex As Exception
+ _logger.Error(ex)
+ _logger.Warn("Could not authenticate with Active Directory.")
+ Return False
+ End Try
+ End Function
+
+ Public Function ListGroups(Optional Query As String = "(&(objectClass=group) (samAccountName=*))") As List(Of ADGroup)
+ Return ListGroups(_rootNode, Query)
+ End Function
+ Public Function ListGroups(RootNode As DirectoryEntry, Optional Query As String = "(&(objectClass=group) (samAccountName=*))") As List(Of ADGroup)
+ Dim oGroups As New List(Of ADGroup)
+
+ Try
+ Dim oDirectorySearcher As New DirectorySearcher(RootNode) With {
+ .SearchScope = SearchScope.Subtree,
+ .SizeLimit = SEARCH_LIMIT,
+ .Filter = Query
+ }
+ Dim oResults As SearchResultCollection = oDirectorySearcher.FindAll()
+
+ _logger.Info("Found {0} Groups.", oResults.Count)
+
+ Return GroupResultsToList(oResults)
+ Catch ex As Exception
+ _logger.Error(ex)
+ Return oGroups
+ End Try
+ End Function
+
+ Public Function ListUsers(GroupName As String) As List(Of ADUser)
+ Dim oUsers As New List(Of ADUser)
+
+ Try
+ Using oContext As New PrincipalContext(ContextType.Domain)
+ Using oGroupPrincipal As GroupPrincipal = GroupPrincipal.FindByIdentity(oContext, IdentityType.Name, GroupName)
+ If oGroupPrincipal Is Nothing Then
+ _logger.Warn("Group {0} does not exist.", GroupName)
+ Return oUsers
+ End If
+
+ Using oMembers = oGroupPrincipal.GetMembers(True)
+ For Each oMember As Principal In oMembers
+ If TypeOf oMember Is UserPrincipal Then
+ Dim oUser As UserPrincipal = DirectCast(oMember, UserPrincipal)
+
+ oUsers.Add(New ADUser() With {
+ .GUID = oUser.Guid,
+ .SId = oUser.Sid,
+ .samAccountName = oUser.SamAccountName,
+ .Surname = oUser.Surname,
+ .Middlename = oUser.MiddleName,
+ .GivenName = oUser.GivenName,
+ .Email = oUser.EmailAddress
+ })
+ End If
+ Next
+ End Using
+ End Using
+ End Using
+
+ Return oUsers
+ Catch ex As Exception
+ _logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Private Function GetGroupId(GroupName As String) As Integer
+ Try
+ Dim oSQL As String = $"SELECT FNICM_GET_RECORD4SYSKEY('{GroupName}','002-NAME') from RDB$DATABASE"
+ Dim oGroupId = _firebird.GetScalarValue(oSQL)
+
+ If IsDBNull(oGroupId) OrElse oGroupId = 0 Then
+ _logger.Debug("Group {0} not found in database", GroupName)
+ Return Nothing
+ End If
+
+ Return oGroupId
+ Catch ex As Exception
+ _logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Private Function GetUserId(UserName As String) As Integer
+ Try
+ Dim oSQL As String = $"SELECT FNICM_GET_RECORD4SYSKEY('{UserName}','001-USRNAME') from RDB$DATABASE"
+ Dim oResult = _firebird.GetScalarValue(oSQL)
+
+ If IsDBNull(oResult) Then
+ Return Nothing
+ End If
+
+ Return oResult
+ Catch ex As Exception
+ _logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Private Function CreateUser(User As ADUser) As Int64
+ Try
+ Dim oSQL = $"SELECT FNICM_RADM_NEW_USER('{User.GivenName}', '{User.Surname}', '{User.samAccountName}', 'AD-Sync') from RDB$DATABASE"
+ Dim oUserId As Integer = _firebird.GetScalarValue(oSQL)
+
+ Return oUserId
+ Catch ex As Exception
+ _logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Private Function AddUserToGroup(UserId As Integer, GroupId As Integer) As Int64
+ Try
+ Dim oSQL = $"SELECT FNICM_RADM_NEW_USER2GROUP({UserId}, {GroupId}, 'AD-Sync') from RDB$DATABASE"
+ Dim oRecordId = _firebird.GetScalarValue(oSQL)
+
+ If IsDBNull(oRecordId) Then
+ _logger.Warn("UserId {0} - GroupId {1} relation already exists.", UserId, GroupId)
+ Return Nothing
+ End If
+
+ Return oRecordId
+ Catch ex As Exception
+ _logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Private Function GetRootNode() As DirectoryEntry
+ Dim oEntry As New DirectoryEntry(_rootPath) With {
+ .AuthenticationType = AuthenticationTypes.Secure,
+ .Password = Nothing,
+ .Username = Nothing
+ }
+
+ Return oEntry
+ End Function
+ Private Function GetRootNode(Username As String, Password As String) As DirectoryEntry
+ Dim oEntry As New DirectoryEntry(_rootPath) With {
+ .AuthenticationType = AuthenticationTypes.Secure,
+ .Password = Username,
+ .Username = Password
+ }
+
+ Return oEntry
+ End Function
+
+ Private Function GroupResultsToList(Results As SearchResultCollection) As List(Of ADGroup)
+ Dim oGroups As New List(Of ADGroup)
+
+ For Each oResult As SearchResult In Results
+ oGroups.Add(New ADGroup() With {
+ .Name = TryGetProperty(oResult, NAME),
+ .SAMAccountName = TryGetProperty(oResult, SAMACCOUNTNAME),
+ .CN = TryGetProperty(oResult, CN),
+ .Description = TryGetProperty(oResult, DESCRIPTION),
+ .DistinguishedName = TryGetProperty(oResult, DISINGUISHEDNAME),
+ .ObjectCategory = TryGetProperty(oResult, OBJECTCATEGORY),
+ .ObjectClass = TryGetProperty(oResult, OBJECTCLASS)
+ })
+ Next
+
+ Return oGroups
+ End Function
+
+ Private Function TryGetProperty(Result As SearchResult, PropertyName As String) As String
+ Try
+ Return Result.Properties.Item(PropertyName).Item(0)
+ Catch ex As Exception
+ _logger.Warn("Property {0} not found")
+ Return String.Empty
+ End Try
+ End Function
+End Class
diff --git a/Modules.Interfaces/ActiveDirectoryInterface/ActiveDirectoryGroup.vb b/Modules.Interfaces/ActiveDirectoryInterface/ActiveDirectoryGroup.vb
new file mode 100644
index 00000000..8535f34b
--- /dev/null
+++ b/Modules.Interfaces/ActiveDirectoryInterface/ActiveDirectoryGroup.vb
@@ -0,0 +1,13 @@
+Public Class ADGroup
+ Public SAMAccountName As String
+ Public ObjectClass As String
+ Public CN As String
+ Public Description As String
+ Public DistinguishedName As String
+ Public Name As String
+ Public ObjectCategory As String
+
+ Public Overrides Function ToString() As String
+ Return $"SAMAccountName={SAMAccountName}, ObjectClass={ObjectClass}, CN={CN}, Description={Description}, DistinguishedName={DistinguishedName}, Name={Name}, ObjectCategory={ObjectCategory}"
+ End Function
+End Class
diff --git a/Modules.Interfaces/ActiveDirectoryInterface/ActiveDirectoryUser.vb b/Modules.Interfaces/ActiveDirectoryInterface/ActiveDirectoryUser.vb
new file mode 100644
index 00000000..4c4840a7
--- /dev/null
+++ b/Modules.Interfaces/ActiveDirectoryInterface/ActiveDirectoryUser.vb
@@ -0,0 +1,18 @@
+Imports System.Security.Principal
+
+Public Class ADUser
+ Public GUID As Guid
+ Public SId As SecurityIdentifier
+ Public samAccountName As String
+ Public Surname As String
+ Public GivenName As String
+ Public Middlename As String
+ Public Email As String
+
+ Public Overrides Function Equals(obj As Object) As Boolean
+ Return DirectCast(obj, ADUser).samAccountName
+ End Function
+ Public Overrides Function ToString() As String
+ Return samAccountName
+ End Function
+End Class
diff --git a/Modules.Interfaces/ActiveDirectoryInterface/UserEqualityComparer.vb b/Modules.Interfaces/ActiveDirectoryInterface/UserEqualityComparer.vb
new file mode 100644
index 00000000..873e05cc
--- /dev/null
+++ b/Modules.Interfaces/ActiveDirectoryInterface/UserEqualityComparer.vb
@@ -0,0 +1,19 @@
+Imports DigitalData.Modules.Interfaces
+
+Public Class UserEqualityComparer
+ Implements IEqualityComparer(Of ADUser)
+
+ Public Overloads Function Equals(x As ADUser, y As ADUser) As Boolean Implements IEqualityComparer(Of ADUser).Equals
+ If ReferenceEquals(x, y) Then Return True
+ If x Is Nothing Or y Is Nothing Then Return False
+
+ Return x.SId = y.SId
+ End Function
+
+ Public Overloads Function GetHashCode(obj As ADUser) As Integer Implements IEqualityComparer(Of ADUser).GetHashCode
+ If obj Is Nothing Then Return 0
+
+ Dim oHashCode = obj.SId.GetHashCode()
+ Return oHashCode
+ End Function
+End Class
diff --git a/Modules.Interfaces/Interfaces.vbproj b/Modules.Interfaces/Interfaces.vbproj
index e3996de3..153c34b7 100644
--- a/Modules.Interfaces/Interfaces.vbproj
+++ b/Modules.Interfaces/Interfaces.vbproj
@@ -50,6 +50,8 @@
+
+
@@ -72,7 +74,11 @@
-
+
+
+
+
+
True
@@ -88,7 +94,7 @@
Settings.settings
True
-
+
@@ -110,21 +116,25 @@
Settings.Designer.vb
-
+
PreserveNewest
+
+ {EAF0EA75-5FA7-485D-89C7-B2D843B03A96}
+ Database
+
{903B2D7D-3B80-4BE9-8713-7447B704E1B0}
Logging
-
+
PreserveNewest
-
+
PreserveNewest
diff --git a/Modules.Interfaces/ZUGFeRDInterface.vb b/Modules.Interfaces/ZUGFeRDInterface.vb
index 67531f29..39a91fe1 100644
--- a/Modules.Interfaces/ZUGFeRDInterface.vb
+++ b/Modules.Interfaces/ZUGFeRDInterface.vb
@@ -9,7 +9,7 @@ Public Class ZUGFeRDInterface
Private _logConfig As LogConfig
Private _logger As Logger
- Private Const ZUGFERD_CONVERTER_EXE = "pdf_zugferd_test.exe"
+ Private Const ZUGFERD_CONVERTER_EXE = "ZUGFeRDInterface\pdf_zugferd_test.exe"
Private Const ZUGFERD_CONVERTER_SUCCESS_MESSAGE = "Document contains ZUGFeRD data."
Public Enum ErrorType
diff --git a/Modules.Interfaces/CrossIndustryDocumentType.vb b/Modules.Interfaces/ZUGFeRDInterface/CrossIndustryDocumentType.vb
similarity index 100%
rename from Modules.Interfaces/CrossIndustryDocumentType.vb
rename to Modules.Interfaces/ZUGFeRDInterface/CrossIndustryDocumentType.vb
diff --git a/Modules.Interfaces/Exceptions.vb b/Modules.Interfaces/ZUGFeRDInterface/Exceptions.vb
similarity index 100%
rename from Modules.Interfaces/Exceptions.vb
rename to Modules.Interfaces/ZUGFeRDInterface/Exceptions.vb
diff --git a/Modules.Interfaces/pdf_zugferd_lib.dll b/Modules.Interfaces/ZUGFeRDInterface/pdf_zugferd_lib.dll
similarity index 100%
rename from Modules.Interfaces/pdf_zugferd_lib.dll
rename to Modules.Interfaces/ZUGFeRDInterface/pdf_zugferd_lib.dll
diff --git a/Modules.Interfaces/pdf_zugferd_lib.lib b/Modules.Interfaces/ZUGFeRDInterface/pdf_zugferd_lib.lib
similarity index 100%
rename from Modules.Interfaces/pdf_zugferd_lib.lib
rename to Modules.Interfaces/ZUGFeRDInterface/pdf_zugferd_lib.lib
diff --git a/Modules.Interfaces/pdf_zugferd_test.exe b/Modules.Interfaces/ZUGFeRDInterface/pdf_zugferd_test.exe
similarity index 100%
rename from Modules.Interfaces/pdf_zugferd_test.exe
rename to Modules.Interfaces/ZUGFeRDInterface/pdf_zugferd_test.exe
diff --git a/Modules.Interfaces/packages.config b/Modules.Interfaces/packages.config
index dba90a58..f89fa324 100644
--- a/Modules.Interfaces/packages.config
+++ b/Modules.Interfaces/packages.config
@@ -1,5 +1,4 @@
-
\ No newline at end of file
diff --git a/Modules.Windream/Windream2.vb b/Modules.Windream/Windream2.vb
index a9e28883..320f605c 100644
--- a/Modules.Windream/Windream2.vb
+++ b/Modules.Windream/Windream2.vb
@@ -1101,6 +1101,69 @@ Public Class Windream2
Return False
End Try
End Function
+
+ Public Function ExportFile(WMObject As WMObject, ExportPath As String) As Boolean
+ Try
+ Dim oWMObject As IWMObject6 = DirectCast(WMObject, IWMObject6)
+
+ Dim oFilenameFull As String = oWMObject.aName
+ Dim oFilenameExport As String
+ Dim oSplitIndex = oFilenameFull.LastIndexOf(".")
+ Dim oVersion = 1
+
+ Dim oFilename = oFilenameFull.Substring(0, oSplitIndex)
+ Dim oExtension = oFilenameFull.Substring(oSplitIndex)
+
+ _logger.Debug("Preparing export of file {0}..", oFilenameFull)
+ _logger.Debug("Filename: {0}", oFilename)
+ _logger.Debug("Extension: {0}", oExtension)
+
+ ' build the file path in case the exported file doesn't already exist
+ oFilenameExport = BuildExportPath(ExportPath, oFilename, oExtension)
+
+ ' Add version until we find the version that does NOT exist
+ Do While File.Exists(oFilenameExport)
+ oVersion += 1
+ oFilenameExport = BuildExportPath(ExportPath, oFilename, oExtension, oVersion)
+ Loop
+
+ _logger.Debug("File will be exported to {0}", oFilenameExport)
+
+ _logger.Debug("Opening file stream..")
+ Dim oStream As WMStream = oWMObject.OpenStream("BinaryObject", WMObjectStreamOpenMode.WMObjectStreamOpenModeRead)
+ Dim oWMFileIO As New WMFileIO() With {
+ .aWMStreamEx = oStream,
+ .aWMStream = oStream,
+ .bstrOriginalFileName = oFilenameExport
+ }
+
+ _logger.Debug("Exporting file..")
+ oWMFileIO.ExportOriginal(True)
+
+ _logger.Debug("Cleaning up..")
+ oStream.Flush()
+ oStream.Close()
+
+ _logger.Debug("File exported to {0}", oFilenameExport)
+ Return True
+ Catch ex As Exception
+ _logger.Error(ex)
+ Return False
+ End Try
+ End Function
+
+ Private Function BuildExportPath(BasePath As String, FilenameWithoutExtension As String, Extension As String, Optional Version As Integer = 1)
+ Dim oFilename
+
+ If Version = 1 Then
+ oFilename = FilenameWithoutExtension & Extension
+ Else
+ oFilename = FilenameWithoutExtension & "_" & Version & Extension
+ End If
+
+ Return Path.Combine(BasePath, oFilename)
+ End Function
+
Public Function Export_WMFile(WMPath As String, Exportpath As String)
Try
If Not Exportpath.EndsWith("\") Then
diff --git a/SERVICES/DDEDM_NetworkService/EDMService.vb b/SERVICES/DDEDM_NetworkService/EDMService.vb
index 5e5f7157..7863b874 100644
--- a/SERVICES/DDEDM_NetworkService/EDMService.vb
+++ b/SERVICES/DDEDM_NetworkService/EDMService.vb
@@ -146,7 +146,7 @@ Public Class EDMService
Dim oExtension As String = Path.GetExtension(FileName).Substring(1)
_logger.Debug("File extension of file {0} is {1}", FileName, oExtension)
- Dim oSQL = $"SELECT FNICM_NEW_DOC('{FileName}','{oExtension}','{oContainerId}','{GetContainerName(oContainerId)}','{_username}') FROM RDB$DATABASE;"
+ Dim oSQL = $"SELECT FNICM_NEW_DOC('010', '{oContainerId}', '{GetContainerName(oContainerId)}', '{FileName}', '{oExtension}', '{_username}') FROM RDB$DATABASE;"
Dim oDocId As Int64 = Database.GetScalarValue(oSQL)
If oDocId = -1 Then
@@ -254,7 +254,13 @@ Public Class EDMService
oRow.Item("ORIGINAL_FILENAME")
)
- Return New DocumentResult(oDocument)
+ TestFileExists(oDocument.ContainerId)
+
+ Dim oContainerPath = GetContainerPath(oDocument.ContainerId)
+ Dim oContainer As FileContainer = FileContainer.Load(LogConfig, AppConfig.ContainerPassword, oContainerPath)
+ Dim oContents As Byte() = oContainer.GetFile().Contents
+
+ Return New DocumentResult(oDocument, oContents)
Catch ex As Exception
Return New DocumentResult(ex.Message)
End Try
@@ -276,7 +282,13 @@ Public Class EDMService
oRow.Item("ORIGINAL_FILENAME")
)
- Return New DocumentResult(oDocument)
+ TestFileExists(oDocument.ContainerId)
+
+ Dim oContainerPath = GetContainerPath(oDocument.ContainerId)
+ Dim oContainer As FileContainer = FileContainer.Load(LogConfig, AppConfig.ContainerPassword, oContainerPath)
+ Dim oContents As Byte() = oContainer.GetFile().Contents
+
+ Return New DocumentResult(oDocument, oContents)
Catch ex As Exception
Return New DocumentResult(ex.Message)
End Try
diff --git a/SERVICES/DDEDM_NetworkService/IEDMService.vb b/SERVICES/DDEDM_NetworkService/IEDMService.vb
index ac6bf76c..be7882e6 100644
--- a/SERVICES/DDEDM_NetworkService/IEDMService.vb
+++ b/SERVICES/DDEDM_NetworkService/IEDMService.vb
@@ -38,6 +38,8 @@ Interface IEDMService
Function DeleteFile(DocObject As DocumentObject) As Boolean
+
+
#End Region
#Region "Utils"
diff --git a/SERVICES/DDEDM_NetworkService/Results/BaseResult.vb b/SERVICES/DDEDM_NetworkService/Results/BaseResult.vb
index 67ba3f4a..c2bff9b2 100644
--- a/SERVICES/DDEDM_NetworkService/Results/BaseResult.vb
+++ b/SERVICES/DDEDM_NetworkService/Results/BaseResult.vb
@@ -3,7 +3,7 @@
-Public Class BaseResult
+Public MustInherit Class BaseResult
Public Property OK As Boolean
diff --git a/ZUGFeRDTest/App.config b/ZUGFeRDTest/App.config
deleted file mode 100644
index 203b80fb..00000000
--- a/ZUGFeRDTest/App.config
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 172.24.12.41:E:\DB\Firebird\Databases\EDMI_TEMPLATE\EDMI_MASTER.FDB
-
-
- 172.24.12.41
-
-
-
-
-
-
- sysdba
-
-
- dd
-
-
-
-
\ No newline at end of file