diff --git a/Config/BaseConfig.vb b/Config/BaseConfig.vb
deleted file mode 100644
index bc2a89d7..00000000
--- a/Config/BaseConfig.vb
+++ /dev/null
@@ -1,76 +0,0 @@
-Imports System.IO
-Imports NLog
-
-Public MustInherit Class BaseConfig
- Private Const _userConfigFileName As String = "UserConfig.xml"
- Private _logFactory As LogFactory
- Private _logger As Logger
-
- Protected Const _configKey As String = "Key"
- Protected Const _configValue As String = "Value"
- Protected _dataTable As DataTable
-
- Protected ReadOnly Property PropertyNames As Dictionary(Of String, String)
- Get
- Return New Dictionary(Of String, String)
- End Get
- End Property
-
- Public Sub New(LogFactory As LogFactory)
- _logFactory = LogFactory
- _logger = LogFactory.GetCurrentClassLogger()
- End Sub
-
- Private Function GetUserConfigPath() As String
- Dim oAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData)
- Dim oCompanyName = My.Application.Info.CompanyName
- Dim oProductName = My.Application.Info.ProductName
-
- Return Path.Combine(oAppData, oCompanyName, oProductName, _userConfigFileName)
- End Function
-
- Protected Function LoadConfig() As DataTable
- Dim oUserConfigPath As String = GetUserConfigPath()
- Dim oDatatable As New DataTable()
-
- If Not File.Exists(oUserConfigPath) Then
- _logger.Warn("Config file {0} does not exist", oUserConfigPath)
- Return Nothing
- End If
-
- Try
- oDatatable.ReadXml(oUserConfigPath)
- Return oDatatable
- Catch ex As Exception
- _logger.Error(ex)
- Return Nothing
- End Try
- End Function
-
- Protected Sub SaveConfig(DataTable As DataTable)
- Dim oUserConfigPath As String = GetUserConfigPath()
-
- Try
- DataTable.WriteXml(oUserConfigPath)
- Catch ex As Exception
- _logger.Error(ex)
- End Try
- End Sub
-
- Protected Function ConvertToDataTable(dictionary As Dictionary(Of String, String)) As DataTable
- Dim oNewDataTable As New DataTable("Config")
- oNewDataTable.Columns.Add(New DataColumn("Key", GetType(String)))
- oNewDataTable.Columns.Add(New DataColumn("Value", GetType(String)))
-
- For Each oProperty In dictionary
- Dim oNewRow = oNewDataTable.NewRow()
- oNewRow.Item("Key") = oProperty.Key
- oNewRow.Item("Value") = oProperty.Value
- oNewDataTable.Rows.Add(oNewRow)
- Next
-
- oNewDataTable.AcceptChanges()
-
- Return oNewDataTable
- End Function
-End Class
diff --git a/Config/Config.vbproj b/Config/Config.vbproj
index fa1c6cec..4e569b1a 100644
--- a/Config/Config.vbproj
+++ b/Config/Config.vbproj
@@ -45,7 +45,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
@@ -54,6 +54,7 @@
+
@@ -72,7 +73,7 @@
-
+
True
@@ -88,6 +89,7 @@
Settings.settings
True
+
@@ -107,9 +109,17 @@
My
Settings.Designer.vb
-
- Designer
-
+
+
+
+
+ {991d0231-4623-496d-8bd0-9ca906029cbc}
+ Filesystem
+
+
+ {903b2d7d-3b80-4be9-8713-7447b704e1b0}
+ Logging
+
\ No newline at end of file
diff --git a/Config/ConfigManager.vb b/Config/ConfigManager.vb
new file mode 100644
index 00000000..e32f5059
--- /dev/null
+++ b/Config/ConfigManager.vb
@@ -0,0 +1,165 @@
+Imports System.IO
+Imports System.Xml.Serialization
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Filesystem
+Imports System.Xml
+
+Public Class ConfigManager(Of T)
+ Private Const USER_CONFIG_NAME As String = "UserConfig.xml"
+ 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
+ Throw New DirectoryNotFoundException($"Path {UserConfigPath} does not exist!")
+ End If
+
+ If Not Directory.Exists(ComputerConfigPath) Then
+ Throw New DirectoryNotFoundException($"Path {ComputerConfigPath} does not exist!")
+ End If
+
+ If Not _File.TestPathIsDirectory(UserConfigPath) Then
+ Throw New ArgumentException($"Path {UserConfigPath} is not a directory!")
+ End If
+
+ If Not _File.TestPathIsDirectory(ComputerConfigPath) Then
+ 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
+
+ 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
new file mode 100644
index 00000000..f3b94c7e
--- /dev/null
+++ b/Config/SinceVersionAttribute.vb
@@ -0,0 +1,9 @@
+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/Config/packages.config b/Config/packages.config
index 9764f16f..f89fa324 100644
--- a/Config/packages.config
+++ b/Config/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/DDLicenseService/AppConfig.vb b/DDLicenseService/AppConfig.vb
new file mode 100644
index 00000000..5503ef49
--- /dev/null
+++ b/DDLicenseService/AppConfig.vb
@@ -0,0 +1,12 @@
+Imports System.Configuration
+
+Public Class AppConfig
+ Public Shared ConfigPath As String
+
+ Public Shared Sub Load()
+ With ConfigurationManager.AppSettings
+ ConfigPath = .Item("CONFIG_PATH")
+ End With
+ End Sub
+End Class
+
diff --git a/DDLicenseService/DDEDMLicenseService.vbproj b/DDLicenseService/DDEDMLicenseService.vbproj
new file mode 100644
index 00000000..6be2d11c
--- /dev/null
+++ b/DDLicenseService/DDEDMLicenseService.vbproj
@@ -0,0 +1,145 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}
+ WinExe
+ DDLicenseService
+ DDEDMLicenseService
+ 512
+ Console
+ v4.6.1
+ True
+
+
+ true
+ full
+ true
+ true
+ bin\Debug\
+ DDEDMLicenseService.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ DDEDMLicenseService.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+ DDLicenseService.WindowsService
+
+
+
+
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Component
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ Component
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
+ {991d0231-4623-496d-8bd0-9ca906029cbc}
+ Filesystem
+
+
+ {eaf0ea75-5fa7-485d-89c7-b2d843b03a96}
+ Database
+
+
+ {903b2d7d-3b80-4be9-8713-7447b704e1b0}
+ Logging
+
+
+
+
\ No newline at end of file
diff --git a/DDLicenseService/ILicenseService.vb b/DDLicenseService/ILicenseService.vb
new file mode 100644
index 00000000..f11f08e3
--- /dev/null
+++ b/DDLicenseService/ILicenseService.vb
@@ -0,0 +1,10 @@
+Imports System.ServiceModel
+
+' HINWEIS: Mit dem Befehl "Umbenennen" im Kontextmenü können Sie den Schnittstellennamen "ILicenseService" sowohl im Code als auch in der Konfigurationsdatei ändern.
+
+Public Interface ILicenseService
+
+
+ Sub DoWork()
+
+End Interface
diff --git a/DDLicenseService/LicenseService.vb b/DDLicenseService/LicenseService.vb
new file mode 100644
index 00000000..1afd3a26
--- /dev/null
+++ b/DDLicenseService/LicenseService.vb
@@ -0,0 +1,14 @@
+Imports DigitalData.Modules.Logging
+
+Public Class LicenseService
+ Implements ILicenseService
+
+ Public Shared Event ClientConnectedEvent As EventHandler(Of Session)
+ Public Shared Event ClientDisconnectedEvent As EventHandler(Of Session)
+
+ Public Shared LogConfig As LogConfig
+
+ Public Sub DoWork() Implements ILicenseService.DoWork
+ End Sub
+
+End Class
diff --git a/DDLicenseService/My Project/Application.Designer.vb b/DDLicenseService/My Project/Application.Designer.vb
new file mode 100644
index 00000000..8ab460ba
--- /dev/null
+++ b/DDLicenseService/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/DDLicenseService/My Project/Application.myapp b/DDLicenseService/My Project/Application.myapp
new file mode 100644
index 00000000..758895de
--- /dev/null
+++ b/DDLicenseService/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 1
+ true
+
diff --git a/DDLicenseService/My Project/AssemblyInfo.vb b/DDLicenseService/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..b3f69a0c
--- /dev/null
+++ b/DDLicenseService/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/DDLicenseService/My Project/Resources.Designer.vb b/DDLicenseService/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..82280de9
--- /dev/null
+++ b/DDLicenseService/My Project/Resources.Designer.vb
@@ -0,0 +1,63 @@
+'------------------------------------------------------------------------------
+'
+' 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("DDLicenseService.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
+ End Module
+End Namespace
diff --git a/DDLicenseService/My Project/Resources.resx b/DDLicenseService/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/DDLicenseService/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/DDLicenseService/My Project/Settings.Designer.vb b/DDLicenseService/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..2bbfdbc1
--- /dev/null
+++ b/DDLicenseService/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' 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
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.DDLicenseService.My.MySettings
+ Get
+ Return Global.DDLicenseService.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/DDLicenseService/My Project/Settings.settings b/DDLicenseService/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/DDLicenseService/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/DDLicenseService/ProjectInstaller.vb b/DDLicenseService/ProjectInstaller.vb
new file mode 100644
index 00000000..0576459b
--- /dev/null
+++ b/DDLicenseService/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.NetworkService
+ }
+ service = New ServiceInstaller With {
+ .ServiceName = SERVICE_NAME,
+ .DisplayName = SERVICE_DISPLAY_NAME
+ }
+ Installers.Add(process)
+ Installers.Add(service)
+ End Sub
+End Class
diff --git a/SERVICES/DDEDM_NetworkService/Session.vb b/DDLicenseService/Session.vb
similarity index 100%
rename from SERVICES/DDEDM_NetworkService/Session.vb
rename to DDLicenseService/Session.vb
diff --git a/DDLicenseService/SettingsModule.vb b/DDLicenseService/SettingsModule.vb
new file mode 100644
index 00000000..88b69220
--- /dev/null
+++ b/DDLicenseService/SettingsModule.vb
@@ -0,0 +1,4 @@
+Module SettingsModule
+ Public Const SERVICE_NAME As String = "DDEDMLicenseSvc"
+ Public Const SERVICE_DISPLAY_NAME As String = "Digital Data EDM License Service"
+End Module
\ No newline at end of file
diff --git a/DDLicenseService/WindowsService.vb b/DDLicenseService/WindowsService.vb
new file mode 100644
index 00000000..d1bdcfca
--- /dev/null
+++ b/DDLicenseService/WindowsService.vb
@@ -0,0 +1,72 @@
+Imports System.ServiceModel
+Imports System.ServiceProcess
+Imports System.Configuration
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Database
+Imports DigitalData.Modules.Database.Exceptions
+
+Public Class WindowsService
+ Inherits ServiceBase
+
+ Private _serviceHost As ServiceHost = Nothing
+
+ Private _logConfig As LogConfig
+ Private _logger As Logger
+ Private _db As Firebird
+ Private _clientsConnected As Integer = 0
+ Private _clients As New List(Of Session)
+
+ Public Sub New()
+ ServiceName = SERVICE_NAME
+ End Sub
+
+ Public Shared Sub Main()
+ Run(New WindowsService())
+ End Sub
+
+ Protected Overrides Sub OnStart(ByVal args As String())
+ Try
+ _logConfig = New LogConfig(LogConfig.PathType.CustomPath, AppConfig.ConfigPath)
+ _logger = _logConfig.GetLogger()
+
+ _logger.Info("Service {0} is starting", SERVICE_DISPLAY_NAME)
+
+ AddHandler LicenseService.ClientConnectedEvent, AddressOf EDMService_ClientConnected
+ AddHandler LicenseService.ClientDisconnectedEvent, AddressOf EDMService_ClientDisonnected
+
+ LicenseService.LogConfig = _logConfig
+
+ _logger.Info("Starting the WCF Service")
+
+ _serviceHost = New ServiceHost(GetType(LicenseService))
+ _serviceHost.Open()
+
+ _logger.Info("Successfully started the WCF Service!")
+
+ _logger.Info("Service {0} successfully started!", SERVICE_DISPLAY_NAME)
+ Catch ex As Exception
+ _logger.Error(ex, "Failed to start the service host!")
+ End Try
+ End Sub
+
+ Private Sub EDMService_ClientDisonnected(sender As Object, e As Session)
+ _clientsConnected -= 1
+ _clients.Remove(e)
+ _logger.Info("Client {0}/{1} disconnected! Total {2}", e.Username, e.SessionId, _clientsConnected)
+ End Sub
+
+ Private Sub EDMService_ClientConnected(sender As Object, e As Session)
+ _clientsConnected += 1
+ _clients.Add(e)
+ _logger.Info("Client {0}/{1} connected! Total {2}", e.Username, e.SessionId, _clientsConnected)
+ End Sub
+
+ Protected Overrides Sub OnStop()
+ If _serviceHost IsNot Nothing Then
+ _serviceHost.Close()
+ _serviceHost = Nothing
+ End If
+ _logger.Info("Service {0} is stopping!", SERVICE_DISPLAY_NAME)
+ End Sub
+End Class
+
diff --git a/DDLicenseService/app.config b/DDLicenseService/app.config
new file mode 100644
index 00000000..0997aa57
--- /dev/null
+++ b/DDLicenseService/app.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/DDLicenseService/packages.config b/DDLicenseService/packages.config
new file mode 100644
index 00000000..f89fa324
--- /dev/null
+++ b/DDLicenseService/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/DDMonorepo.sln b/DDMonorepo.sln
index 8362091a..5de0393a 100644
--- a/DDMonorepo.sln
+++ b/DDMonorepo.sln
@@ -57,7 +57,7 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DD_CommunicationService", "
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "GUI_EDMI", "GUI_EDMI\GUI_EDMI.vbproj", "{88EDAD5B-1B98-43E4-B068-1251E7AF01A0}"
EndProject
-Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMI_ClientSuite", "EDMI_ClientSuite\EDMI_ClientSuite.vbproj", "{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}"
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ClientSuite", "EDMI_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
@@ -65,6 +65,10 @@ Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "EDMIFileOps", "EDMI_FILE_OP
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClientSuiteTest", "DXApplication1\ClientSuiteTest\ClientSuiteTest.csproj", "{221FDADA-D849-4036-A7CE-D1FC1D67E1FA}"
EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "DDEDMLicenseService", "DDLicenseService\DDEDMLicenseService.vbproj", "{CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}"
+EndProject
+Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "License", "Modules.License\License.vbproj", "{5EBACBFA-F11A-4BBF-8D02-91461F2293ED}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -159,6 +163,14 @@ Global
{221FDADA-D849-4036-A7CE-D1FC1D67E1FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
{221FDADA-D849-4036-A7CE-D1FC1D67E1FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
{221FDADA-D849-4036-A7CE-D1FC1D67E1FA}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {5EBACBFA-F11A-4BBF-8D02-91461F2293ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -186,6 +198,8 @@ Global
{A8C3F298-76AB-4359-AB3C-986E313B4336} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
{5B1171DC-FFFE-4813-A20D-786AAE47B320} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
{221FDADA-D849-4036-A7CE-D1FC1D67E1FA} = {8FFE925E-8B84-45F1-93CB-32B1C96F41EB}
+ {CBE9322E-67A1-4CC5-B25F-4A1B4C9FC55C} = {7AF3F9C2-C939-4A08-95C1-0453207E298A}
+ {5EBACBFA-F11A-4BBF-8D02-91461F2293ED} = {3E2008C8-27B1-41DD-9B1A-0C4029F6AECC}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {C1BE4090-A0FD-48AF-86CB-39099D14B286}
diff --git a/DDTestService/DDTestService.vbproj b/DDTestService/DDTestService.vbproj
index 9068d5b2..31cceea4 100644
--- a/DDTestService/DDTestService.vbproj
+++ b/DDTestService/DDTestService.vbproj
@@ -52,7 +52,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
diff --git a/DDTestService/packages.config b/DDTestService/packages.config
index 9764f16f..f89fa324 100644
--- a/DDTestService/packages.config
+++ b/DDTestService/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/EDMDesigner/EDMDesigner.vbproj b/EDMDesigner/EDMDesigner.vbproj
index 4e1ba6c3..deed0716 100644
--- a/EDMDesigner/EDMDesigner.vbproj
+++ b/EDMDesigner/EDMDesigner.vbproj
@@ -76,7 +76,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
diff --git a/EDMDesigner/packages.config b/EDMDesigner/packages.config
index 9613071f..81ef80e4 100644
--- a/EDMDesigner/packages.config
+++ b/EDMDesigner/packages.config
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/App.config b/EDMI_ClientSuite/App.config
index 9720616f..c6126768 100644
--- a/EDMI_ClientSuite/App.config
+++ b/EDMI_ClientSuite/App.config
@@ -2,9 +2,14 @@
-
+
+
+
+
+
+
@@ -16,7 +21,7 @@
-
+
@@ -24,11 +29,16 @@
-
+
net.tcp://172.24.12.67:9000/DigitalData/Services/Main
-
+
+
+
+ net.tcp://172.24.12.67:9000/DigitalData/Services/Main
+
+
Skin/Office 2016 Colorful
@@ -73,4 +83,17 @@
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/ApplicationEvents.vb b/EDMI_ClientSuite/ApplicationEvents.vb
index bc254e28..505e4b67 100644
--- a/EDMI_ClientSuite/ApplicationEvents.vb
+++ b/EDMI_ClientSuite/ApplicationEvents.vb
@@ -1,4 +1,8 @@
-Namespace My
+Imports DigitalData.Modules.Config
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.Logging.LogConfig
+
+Namespace My
' Für MyApplication sind folgende Ereignisse verfügbar:
' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung mit einem Fehler beendet wird.
@@ -6,5 +10,21 @@
' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn die Anwendung bereits aktiv ist.
' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
Partial Friend Class MyApplication
+ Private _Logger As Logger
+
+ Public Sub App_Startup() Handles Me.Startup
+ Dim oLogConfig As New LogConfig(PathType.AppData)
+ Dim oConfigManager As New ConfigManager(Of ClassConfig)(oLogConfig, Windows.Forms.Application.UserAppDataPath, Windows.Forms.Application.CommonAppDataPath)
+
+ LogConfig = oLogConfig
+ ConfigManager = oConfigManager
+
+ _Logger = LogConfig.GetLogger()
+ _Logger.Debug("Starting Client Suite..")
+ End Sub
+
+ Public Sub App_Shutdown(sender As Object, e As EventArgs) Handles Me.Shutdown
+ _Logger.Debug("Shutting down Client Suite..")
+ End Sub
End Class
End Namespace
diff --git a/EDMI_ClientSuite/ClassConfig.vb b/EDMI_ClientSuite/ClassConfig.vb
new file mode 100644
index 00000000..bbf69a37
--- /dev/null
+++ b/EDMI_ClientSuite/ClassConfig.vb
@@ -0,0 +1,49 @@
+Imports System.ComponentModel
+Imports System.Runtime.CompilerServices
+Imports System.Xml.Serialization
+
+'''
+''' --- User Config for EDMI ---
+'''
+''' All settings are simple properties that should have a default value where possible
+'''
+''' More complex properties (for example, ServiceConnection) are built from simple ones,
+''' should be readonly and have an `XmlIgnore` Attribute to prevent them from being saved to the config file.
+'''
+''' They can make saving and loading complex properties more easy.
+'''
+''' The config is loaded with `ConfigManager` which is initialized in ApplicationEvents
+''' to ensure that the config is loaded before any of the forms (that might need a config)
+'''
+''' The config object can be accessed in two ways:
+'''
+''' - My.ConfigManager.Config
+''' - My.Config (which simply points to My.ConfigManager.Config)
+'''
+''' After changing a config value, My.ConfigManager.Save() must be called to persist the change in the config file
+'''
+Public Class ClassConfig
+ ' === Complex/Readonly Config Properties
+
+ Public ReadOnly Property ServiceConnection As String
+ Get
+ If ServiceIP = String.Empty Or ServicePort = -1 Then
+ Return String.Empty
+ Else
+ Return $"net.tcp://{ServiceIP}:{ServicePort}/DigitalData/Services/Main"
+ End If
+ End Get
+ End Property
+
+ ' === 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
+
+ ' === Logging Configuration
+ Public Property LogDebug As Boolean = False
+
+ ' === User Configuration ===
+ Public Property UserLanguage As String = "de-DE"
+End Class
diff --git a/EDMI_ClientSuite/ClassConstants.vb b/EDMI_ClientSuite/ClassConstants.vb
new file mode 100644
index 00000000..df542a90
--- /dev/null
+++ b/EDMI_ClientSuite/ClassConstants.vb
@@ -0,0 +1,10 @@
+Public Class ClassConstants
+ Public Const SERVICE_MAX_MESSAGE_SIZE = 2147483647
+ Public Const SERVICE_MAX_BUFFER_SIZE = 2147483647
+ Public Const SERVICE_MAX_ARRAY_LENGTH = 2147483647
+ Public Const SERVICE_MAX_STRING_LENGTH = 2147483647
+ Public Const SERVICE_MAX_CONNECTIONS = 10000
+ Public Const SERVICE_OPEN_TIMEOUT = 3
+
+ Public Const FOLDER_NAME_LAYOUT = "Layout"
+End Class
diff --git a/EDMI_ClientSuite/ClassInit.vb b/EDMI_ClientSuite/ClassInit.vb
deleted file mode 100644
index c2346e4a..00000000
--- a/EDMI_ClientSuite/ClassInit.vb
+++ /dev/null
@@ -1,40 +0,0 @@
-Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.Logging.LogConfig
-Imports System.ServiceModel
-Imports EDMI_ClientSuite.NetworkService_DDEDM
-
-Public Class ClassInit
- Private Const OPEN_TIMEOUT = 10
- Private Const MAX_MESSAGE_SIZE = 2147483647
- Private Const MAX_BUFFER_SIZE = 2147483647
- Private Const MAX_ARRAY_LENGTH = 2147483647
- Private Const MAX_STRING_LENGTH = 2147483647
- Private Const MAX_CONNECTIONS = 10000
-
- Public Property _LogConfig As LogConfig
-
- Public Sub New()
- _LogConfig = New LogConfig(PathType.AppData)
- End Sub
-
- Public Function CreateService() As ChannelFactory(Of IEDMServiceChannel)
- Return CreateChannelFactory()
- End Function
-
- Private Function CreateChannelFactory() As ChannelFactory(Of IEDMServiceChannel)
- Dim oBinding As New NetTcpBinding()
- oBinding.Security.Mode = SecurityMode.Transport
- oBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows
- oBinding.MaxReceivedMessageSize = MAX_MESSAGE_SIZE
- oBinding.MaxBufferSize = MAX_BUFFER_SIZE
- oBinding.MaxBufferPoolSize = MAX_BUFFER_SIZE
- oBinding.MaxConnections = MAX_CONNECTIONS
- oBinding.ReaderQuotas.MaxArrayLength = MAX_ARRAY_LENGTH
- oBinding.ReaderQuotas.MaxStringContentLength = MAX_STRING_LENGTH
- oBinding.OpenTimeout = New TimeSpan(0, 0, OPEN_TIMEOUT)
- Dim oEndpointAddress = New EndpointAddress(My.Settings.EDM_NetworkService_Adress)
-
- Return New ChannelFactory(Of IEDMServiceChannel)(oBinding, oEndpointAddress)
- End Function
-
-End Class
diff --git a/EDMI_ClientSuite/ClassLayout.vb b/EDMI_ClientSuite/ClassLayout.vb
index ae2f22e4..1935d98d 100644
--- a/EDMI_ClientSuite/ClassLayout.vb
+++ b/EDMI_ClientSuite/ClassLayout.vb
@@ -1,10 +1,21 @@
Imports System.IO
-Imports DevExpress.Utils.Serializing
+'''
+''' Helper Class to save DevExpress layouts
+'''
+''' Example:
+'''
+''' Layout 1 (for frmMain)
+''' ----------------------------------------------
+''' | Component 1 Component 2 |
+''' | |-------------| |----------------| |
+''' | | MainGrid | | DocumentGrid | |
+''' | |-------------| |----------------| |
+''' | |
+''' |---------------------------------------------
+'''
Public Class ClassLayout
- Public Const LAYOUT_FOLDER = "Layout"
-
- Public Enum LayoutName
+ Public Enum GroupName
LayoutMain
End Enum
@@ -13,9 +24,19 @@ Public Class ClassLayout
DocumentManager
End Enum
- Public Shared Function GetLayoutPath(LayoutName As LayoutName, Component As LayoutComponent) As String
- Dim oFileName As String = $"{LayoutName.ToString}-{Component.ToString}.xml"
- Return IO.Path.Combine(GetAppDataFolder(), LAYOUT_FOLDER, oFileName)
+ '''
+ ''' Returns a path for the chosen Devexpress layout file
+ '''
+ ''' The Group to which the the component belongs to. For example, a form could be a Layout
+ ''' The component to which the layout belongs to
+ '''
+ Public Shared Function GetLayoutPath(Group As GroupName, Component As LayoutComponent) As String
+ Dim oFileName As String = $"{Group.ToString}-{Component.ToString}.xml"
+ Return Path.Combine(GetLayoutDirectory(), oFileName)
+ End Function
+
+ Public Shared Function GetLayoutDirectory() As String
+ Return Path.Combine(GetAppDataFolder(), ClassConstants.FOLDER_NAME_LAYOUT)
End Function
Private Shared Function GetAppDataFolder() As String
diff --git a/EDMI_ClientSuite/ClassService.vb b/EDMI_ClientSuite/ClassService.vb
new file mode 100644
index 00000000..50f0c09e
--- /dev/null
+++ b/EDMI_ClientSuite/ClassService.vb
@@ -0,0 +1,94 @@
+Imports System.ServiceModel
+Imports System.ServiceModel.Channels
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+
+Public Class ClassService
+ Private ReadOnly _LogConfig As LogConfig
+ Private ReadOnly _Logger As Logger
+
+ Public Enum ConnectionTestResult
+ Successful
+ NotFound
+ Unknown
+ End Enum
+
+ Public Sub New(LogConfig As LogConfig)
+ _LogConfig = LogConfig
+ _Logger = _LogConfig.GetLogger()
+ End Sub
+
+ Public Function TestConnection() As ConnectionTestResult
+ Return TestConnection(My.Config.ServiceConnection)
+ End Function
+
+ Public Function TestConnection(EndpointURL As String) As ConnectionTestResult
+ Try
+ Dim oChannelFactory = GetChannelFactory(EndpointURL)
+ Dim oChannel = oChannelFactory.CreateChannel()
+ oChannel.OperationTimeout = New TimeSpan(0, 0, ClassConstants.SERVICE_OPEN_TIMEOUT)
+ oChannel.Open()
+ oChannel.Close()
+
+ Return ConnectionTestResult.Successful
+ Catch ex As EndpointNotFoundException
+ _Logger.Error(ex)
+ Return ConnectionTestResult.NotFound
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Return ConnectionTestResult.Unknown
+ End Try
+ End Function
+
+ Public Async Function TestConnectionAsync() As Task(Of ConnectionTestResult)
+ Return Await TestConnectionAsync(My.Config.ServiceConnection)
+ End Function
+
+ Public Async Function TestConnectionAsync(EndpointURL As String) As Task(Of ConnectionTestResult)
+ Return Await Task.Factory.StartNew(Function()
+ Try
+ Dim oChannelFactory = GetChannelFactory(EndpointURL)
+ Dim oChannel = oChannelFactory.CreateChannel()
+ oChannel.OperationTimeout = New TimeSpan(0, 0, ClassConstants.SERVICE_OPEN_TIMEOUT)
+ oChannel.Open()
+ oChannel.Close()
+
+ Return ConnectionTestResult.Successful
+ Catch ex As EndpointNotFoundException
+ _Logger.Error(ex)
+ Return ConnectionTestResult.NotFound
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Return ConnectionTestResult.Unknown
+ End Try
+ End Function)
+ End Function
+
+ Public Function GetChannelFactory() As IChannelFactory(Of IEDMServiceChannel)
+ Return GetChannelFactory(My.Config.ServiceConnection)
+ End Function
+
+ Public Function GetChannelFactory(EndpointURL As String) As ChannelFactory(Of IEDMServiceChannel)
+ Dim oBinding = GetBinding()
+ Dim oEndpoint = New EndpointAddress(EndpointURL)
+
+ Dim oFactory As New ChannelFactory(Of IEDMServiceChannel)(oBinding, oEndpoint)
+ Return oFactory
+ End Function
+
+ Private Function GetBinding() As NetTcpBinding
+ Dim oBinding As New NetTcpBinding()
+ oBinding.Security.Mode = SecurityMode.Transport
+ oBinding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows
+ oBinding.MaxReceivedMessageSize = ClassConstants.SERVICE_MAX_MESSAGE_SIZE
+ oBinding.MaxBufferSize = ClassConstants.SERVICE_MAX_BUFFER_SIZE
+ oBinding.MaxBufferPoolSize = ClassConstants.SERVICE_MAX_BUFFER_SIZE
+ oBinding.MaxConnections = ClassConstants.SERVICE_MAX_CONNECTIONS
+ oBinding.ReaderQuotas.MaxArrayLength = ClassConstants.SERVICE_MAX_ARRAY_LENGTH
+ oBinding.ReaderQuotas.MaxStringContentLength = ClassConstants.SERVICE_MAX_STRING_LENGTH
+ oBinding.OpenTimeout = New TimeSpan(0, 0, ClassConstants.SERVICE_OPEN_TIMEOUT)
+
+ Return oBinding
+ End Function
+
+End Class
diff --git a/EDMI_ClientSuite/ClassTimer.vb b/EDMI_ClientSuite/ClassTimer.vb
new file mode 100644
index 00000000..7862b158
--- /dev/null
+++ b/EDMI_ClientSuite/ClassTimer.vb
@@ -0,0 +1,66 @@
+Imports System.ServiceModel
+Imports System.Threading
+Imports System.Timers
+Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
+Imports DigitalData.Modules.Logging
+
+Public Class ClassTimer
+ Private _Callback As TimerCallback
+ Private _LogConfig As LogConfig
+ Private _Logger As Logger
+ Private _Timer As Timers.Timer
+ Private _Channel As IEDMServiceChannel
+
+ Public Event OnlineChanged As OnlineChangedEventHandler
+ 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()
+
+ _Channel = My.ChannelFactory.CreateChannel()
+ _Channel.Open()
+
+ _Timer = New Timers.Timer(HeartbeatInterval) With {
+ .SynchronizingObject = SynchronizingObject,
+ .Enabled = True
+ }
+
+ AddHandler _Timer.Elapsed, AddressOf Callback
+ Catch ex As Exception
+ _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...")
+
+ If _Channel.State = ServiceModel.CommunicationState.Faulted Then
+ _Channel = My.ChannelFactory.CreateChannel()
+ End If
+
+ ' Connect to service and send hearbeat request
+ Dim oResult = Await _Channel.HeartbeatAsync()
+
+
+ _Logger.Debug("Service is online")
+
+ SetOnlineState(True)
+ Catch ex As Exception
+ _Logger.Debug("Service is offline!")
+
+ SetOnlineState(False)
+ Finally
+ My.Application.Service.LastChecked = DateTime.Now
+ End Try
+ End Sub
+
+ Private Sub SetOnlineState(NewState As Boolean)
+ If My.Application.Service.Online <> NewState Then
+ My.Application.Service.Online = NewState
+ RaiseEvent OnlineChanged(Me, NewState)
+ End If
+ End Sub
+End Class
diff --git a/EDMI_ClientSuite/EDMI_ClientSuite.vbproj b/EDMI_ClientSuite/ClientSuite.vbproj
similarity index 61%
rename from EDMI_ClientSuite/EDMI_ClientSuite.vbproj
rename to EDMI_ClientSuite/ClientSuite.vbproj
index 573239e6..b961e407 100644
--- a/EDMI_ClientSuite/EDMI_ClientSuite.vbproj
+++ b/EDMI_ClientSuite/ClientSuite.vbproj
@@ -6,13 +6,14 @@
AnyCPU
{406C95F4-9FEA-45B6-8385-1768CDBBF1A7}
WinExe
- EDMI_ClientSuite.My.MyApplication
- EDMI_ClientSuite
- EDMI_ClientSuite
+ DigitalData.GUIs.ClientSuite.My.MyApplication
+ DigitalData.GUIs.ClientSuite
+ ClientSuite
512
WindowsForms
v4.6.1
true
+ false
publish\
true
Disk
@@ -25,7 +26,6 @@
true
0
1.0.0.%2a
- false
false
true
@@ -36,7 +36,7 @@
true
true
bin\Debug\
- EDMI_ClientSuite.xml
+ ClientSuite.xml
42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
@@ -46,7 +46,7 @@
true
true
bin\Release\
- EDMI_ClientSuite.xml
+ ClientSuite.xml
42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
@@ -61,6 +61,9 @@
On
+
+ My Project\app.manifest
+
@@ -79,76 +82,23 @@
..\packages\FirebirdSql.EntityFrameworkCore.Firebird.6.4.0\lib\netstandard2.0\FirebirdSql.EntityFrameworkCore.Firebird.dll
-
-
- ..\packages\Microsoft.EntityFrameworkCore.2.0.3\lib\netstandard2.0\Microsoft.EntityFrameworkCore.dll
-
-
- ..\packages\Microsoft.EntityFrameworkCore.Relational.2.0.3\lib\netstandard2.0\Microsoft.EntityFrameworkCore.Relational.dll
-
-
- ..\packages\Microsoft.Extensions.Caching.Abstractions.2.0.2\lib\netstandard2.0\Microsoft.Extensions.Caching.Abstractions.dll
-
-
- ..\packages\Microsoft.Extensions.Caching.Memory.2.0.2\lib\netstandard2.0\Microsoft.Extensions.Caching.Memory.dll
-
-
- ..\packages\Microsoft.Extensions.Configuration.Abstractions.2.0.2\lib\netstandard2.0\Microsoft.Extensions.Configuration.Abstractions.dll
-
-
- ..\packages\Microsoft.Extensions.DependencyInjection.2.0.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.dll
-
-
- ..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.2.0.0\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll
-
-
- ..\packages\Microsoft.Extensions.Logging.2.0.2\lib\netstandard2.0\Microsoft.Extensions.Logging.dll
-
-
- ..\packages\Microsoft.Extensions.Logging.Abstractions.2.0.2\lib\netstandard2.0\Microsoft.Extensions.Logging.Abstractions.dll
-
-
- ..\packages\Microsoft.Extensions.Options.2.0.2\lib\netstandard2.0\Microsoft.Extensions.Options.dll
-
-
- ..\packages\Microsoft.Extensions.Primitives.2.0.0\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll
-
False
..\Modules.Logging\bin\Debug\NLog.dll
-
- ..\packages\Remotion.Linq.2.1.1\lib\net45\Remotion.Linq.dll
-
-
- ..\packages\System.Collections.Immutable.1.4.0\lib\netstandard2.0\System.Collections.Immutable.dll
-
-
- ..\packages\System.ComponentModel.Annotations.4.4.0\lib\net461\System.ComponentModel.Annotations.dll
-
-
-
+
-
-
- ..\packages\System.Diagnostics.DiagnosticSource.4.4.1\lib\net46\System.Diagnostics.DiagnosticSource.dll
-
-
- ..\packages\System.Interactive.Async.3.1.1\lib\net46\System.Interactive.Async.dll
-
-
- ..\packages\System.Runtime.CompilerServices.Unsafe.4.4.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll
-
+
+ ..\packages\System.Runtime.Serialization.Primitives.4.3.0\lib\net46\System.Runtime.Serialization.Primitives.dll
+ True
+ True
+
-
-
-
-
@@ -165,14 +115,12 @@
-
+
+
+
+
-
- True
- True
- Reference.svcmap
-
DockManagerTest.vb
@@ -225,16 +173,22 @@
Form
+
+ frmConfigService.vb
+
+
+ Form
+
frmSplash.vb
Form
-
- frmUserBasics.vb
+
+ frmConfigUser.vb
-
+
Form
@@ -253,7 +207,8 @@
True
-
+
+
True
True
@@ -264,10 +219,10 @@
True
ControlProperties.en.resx
-
- ProcessManagerOverview.vb
+
+ ProcessManagerWidget.vb
-
+
UserControl
@@ -293,11 +248,14 @@
frmMain.vb
+
+ frmConfigService.vb
+
frmSplash.vb
-
- frmUserBasics.vb
+
+ frmConfigUser.vb
@@ -316,53 +274,29 @@
ControlProperties.Designer.vb
My.Resources
-
- ProcessManagerOverview.vb
+
+ ProcessManagerWidget.vb
-
- Designer
-
-
-
- Designer
-
-
- Designer
-
-
- Reference.svcmap
-
-
- Reference.svcmap
-
-
- Reference.svcmap
-
-
- Reference.svcmap
-
-
-
- Designer
-
-
- Designer
-
+
MyApplicationCodeGenerator
Application.Designer.vb
- SettingsSingleFileGenerator
+ PublicSettingsSingleFileGenerator
My
Settings.Designer.vb
-
+
+ Designer
+
-
+
+ Designer
+
@@ -371,21 +305,6 @@
-
-
-
-
-
-
-
-
-
-
-
- WCF Proxy Generator
- Reference.vb
-
-
False
@@ -405,6 +324,10 @@
+
+ {44982F9B-6116-44E2-85D0-F39650B1EF99}
+ Config
+
{5b1171dc-fffe-4813-a20d-786aae47b320}
EDMIFileOps
@@ -417,10 +340,17 @@
{3DCD6D1A-C830-4241-B7E4-27430E7EA483}
LookupControl
+
+ {5ebacbfa-f11a-4bbf-8d02-91461f2293ed}
+ License
+
{903b2d7d-3b80-4be9-8713-7447b704e1b0}
Logging
+
+
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Modules.Filesystem.xsd b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Modules.Filesystem.xsd
deleted file mode 100644
index 46469df3..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Modules.Filesystem.xsd
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService.wsdl b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService.wsdl
deleted file mode 100644
index 2fd4ed52..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService.wsdl
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService.xsd b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService.xsd
deleted file mode 100644
index dcec368e..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService.xsd
+++ /dev/null
@@ -1,129 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService1.xsd b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService1.xsd
deleted file mode 100644
index 4fce5c2f..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/DigitalData.Services.EDMService1.xsd
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.ContainerResult.datasource b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.ContainerResult.datasource
deleted file mode 100644
index e187b1c4..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.ContainerResult.datasource
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- EDMI_ClientSuite.NetworkService_DDEDM.ContainerResult, Connected Services.NetworkService_DDEDM.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.NonQueryResult.datasource b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.NonQueryResult.datasource
deleted file mode 100644
index dda8c325..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.NonQueryResult.datasource
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- EDMI_ClientSuite.NetworkService_DDEDM.NonQueryResult, Connected Services.NetworkService_DDEDM.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.ScalarResult.datasource b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.ScalarResult.datasource
deleted file mode 100644
index dd44709e..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.ScalarResult.datasource
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- EDMI_ClientSuite.NetworkService_DDEDM.ScalarResult, Connected Services.NetworkService_DDEDM.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.TableResult.datasource b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.TableResult.datasource
deleted file mode 100644
index f645aaa5..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/EDMI_ClientSuite.NetworkService_DDEDM.TableResult.datasource
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- EDMI_ClientSuite.NetworkService_DDEDM.TableResult, Connected Services.NetworkService_DDEDM.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/Reference.svcmap b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/Reference.svcmap
deleted file mode 100644
index 46ef9665..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/Reference.svcmap
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
- false
- true
- true
-
- false
- false
- false
-
-
- true
- Auto
- true
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/Reference.vb b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/Reference.vb
deleted file mode 100644
index 2354b9f6..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/Reference.vb
+++ /dev/null
@@ -1,588 +0,0 @@
-'------------------------------------------------------------------------------
-'
-' 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
-Imports System.Runtime.Serialization
-
-Namespace NetworkService_DDEDM
-
- _
- Partial Public Class TableResult
- Inherits Object
- Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-
- _
- Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
-
- _
- Private ErrorMessageField As String
-
- _
- Private OKField As Boolean
-
- _
- Private TableField As System.Data.DataTable
-
- _
- Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
- Get
- Return Me.extensionDataField
- End Get
- Set
- Me.extensionDataField = value
- End Set
- End Property
-
- _
- Public Property ErrorMessage() As String
- Get
- Return Me.ErrorMessageField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then
- Me.ErrorMessageField = value
- Me.RaisePropertyChanged("ErrorMessage")
- End If
- End Set
- End Property
-
- _
- Public Property OK() As Boolean
- Get
- Return Me.OKField
- End Get
- Set
- If (Me.OKField.Equals(value) <> true) Then
- Me.OKField = value
- Me.RaisePropertyChanged("OK")
- End If
- End Set
- End Property
-
- _
- Public Property Table() As System.Data.DataTable
- Get
- Return Me.TableField
- End Get
- Set
- If (Object.ReferenceEquals(Me.TableField, value) <> true) Then
- Me.TableField = value
- Me.RaisePropertyChanged("Table")
- End If
- End Set
- End Property
-
- Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
-
- Protected Sub RaisePropertyChanged(ByVal propertyName As String)
- Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
- If (Not (propertyChanged) Is Nothing) Then
- propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
- End If
- End Sub
- End Class
-
- _
- Partial Public Class ScalarResult
- Inherits Object
- Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-
- _
- Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
-
- _
- Private ErrorMessageField As String
-
- _
- Private OKField As Boolean
-
- _
- Private ScalarField As Object
-
- _
- Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
- Get
- Return Me.extensionDataField
- End Get
- Set
- Me.extensionDataField = value
- End Set
- End Property
-
- _
- Public Property ErrorMessage() As String
- Get
- Return Me.ErrorMessageField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then
- Me.ErrorMessageField = value
- Me.RaisePropertyChanged("ErrorMessage")
- End If
- End Set
- End Property
-
- _
- Public Property OK() As Boolean
- Get
- Return Me.OKField
- End Get
- Set
- If (Me.OKField.Equals(value) <> true) Then
- Me.OKField = value
- Me.RaisePropertyChanged("OK")
- End If
- End Set
- End Property
-
- _
- Public Property Scalar() As Object
- Get
- Return Me.ScalarField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ScalarField, value) <> true) Then
- Me.ScalarField = value
- Me.RaisePropertyChanged("Scalar")
- End If
- End Set
- End Property
-
- Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
-
- Protected Sub RaisePropertyChanged(ByVal propertyName As String)
- Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
- If (Not (propertyChanged) Is Nothing) Then
- propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
- End If
- End Sub
- End Class
-
- _
- Partial Public Class NonQueryResult
- Inherits Object
- Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-
- _
- Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
-
- _
- Private ErrorMessageField As String
-
- _
- Private OKField As Boolean
-
- _
- Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
- Get
- Return Me.extensionDataField
- End Get
- Set
- Me.extensionDataField = value
- End Set
- End Property
-
- _
- Public Property ErrorMessage() As String
- Get
- Return Me.ErrorMessageField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then
- Me.ErrorMessageField = value
- Me.RaisePropertyChanged("ErrorMessage")
- End If
- End Set
- End Property
-
- _
- Public Property OK() As Boolean
- Get
- Return Me.OKField
- End Get
- Set
- If (Me.OKField.Equals(value) <> true) Then
- Me.OKField = value
- Me.RaisePropertyChanged("OK")
- End If
- End Set
- End Property
-
- Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
-
- Protected Sub RaisePropertyChanged(ByVal propertyName As String)
- Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
- If (Not (propertyChanged) Is Nothing) Then
- propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
- End If
- End Sub
- End Class
-
- _
- Partial Public Class ContainerResult
- Inherits Object
- Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-
- _
- Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
-
- Private ContainerField As NetworkService_DDEDM.FileContainerInner
-
- Private ErrorMessageField As String
-
- Private OKField As Boolean
-
- _
- Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
- Get
- Return Me.extensionDataField
- End Get
- Set
- Me.extensionDataField = value
- End Set
- End Property
-
- _
- Public Property Container() As NetworkService_DDEDM.FileContainerInner
- Get
- Return Me.ContainerField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ContainerField, value) <> true) Then
- Me.ContainerField = value
- Me.RaisePropertyChanged("Container")
- End If
- End Set
- End Property
-
- _
- Public Property ErrorMessage() As String
- Get
- Return Me.ErrorMessageField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ErrorMessageField, value) <> true) Then
- Me.ErrorMessageField = value
- Me.RaisePropertyChanged("ErrorMessage")
- End If
- End Set
- End Property
-
- _
- Public Property OK() As Boolean
- Get
- Return Me.OKField
- End Get
- Set
- If (Me.OKField.Equals(value) <> true) Then
- Me.OKField = value
- Me.RaisePropertyChanged("OK")
- End If
- End Set
- End Property
-
- Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
-
- Protected Sub RaisePropertyChanged(ByVal propertyName As String)
- Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
- If (Not (propertyChanged) Is Nothing) Then
- propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
- End If
- End Sub
- End Class
-
- _
- Partial Public Class FileContainerInner
- Inherits Object
- Implements System.Runtime.Serialization.IExtensibleDataObject, System.ComponentModel.INotifyPropertyChanged
-
- _
- Private extensionDataField As System.Runtime.Serialization.ExtensionDataObject
-
- Private ContentsField() As Byte
-
- Private CreatedAtField As Date
-
- Private ExtensionField As String
-
- Private FileIdField As String
-
- Private UpdatedAtField As Date
-
- _
- Public Property ExtensionData() As System.Runtime.Serialization.ExtensionDataObject Implements System.Runtime.Serialization.IExtensibleDataObject.ExtensionData
- Get
- Return Me.extensionDataField
- End Get
- Set
- Me.extensionDataField = value
- End Set
- End Property
-
- _
- Public Property Contents() As Byte()
- Get
- Return Me.ContentsField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ContentsField, value) <> true) Then
- Me.ContentsField = value
- Me.RaisePropertyChanged("Contents")
- End If
- End Set
- End Property
-
- _
- Public Property CreatedAt() As Date
- Get
- Return Me.CreatedAtField
- End Get
- Set
- If (Me.CreatedAtField.Equals(value) <> true) Then
- Me.CreatedAtField = value
- Me.RaisePropertyChanged("CreatedAt")
- End If
- End Set
- End Property
-
- _
- Public Property Extension() As String
- Get
- Return Me.ExtensionField
- End Get
- Set
- If (Object.ReferenceEquals(Me.ExtensionField, value) <> true) Then
- Me.ExtensionField = value
- Me.RaisePropertyChanged("Extension")
- End If
- End Set
- End Property
-
- _
- Public Property FileId() As String
- Get
- Return Me.FileIdField
- End Get
- Set
- If (Object.ReferenceEquals(Me.FileIdField, value) <> true) Then
- Me.FileIdField = value
- Me.RaisePropertyChanged("FileId")
- End If
- End Set
- End Property
-
- _
- Public Property UpdatedAt() As Date
- Get
- Return Me.UpdatedAtField
- End Get
- Set
- If (Me.UpdatedAtField.Equals(value) <> true) Then
- Me.UpdatedAtField = value
- Me.RaisePropertyChanged("UpdatedAt")
- End If
- End Set
- End Property
-
- Public Event PropertyChanged As System.ComponentModel.PropertyChangedEventHandler Implements System.ComponentModel.INotifyPropertyChanged.PropertyChanged
-
- Protected Sub RaisePropertyChanged(ByVal propertyName As String)
- Dim propertyChanged As System.ComponentModel.PropertyChangedEventHandler = Me.PropertyChangedEvent
- If (Not (propertyChanged) Is Nothing) Then
- propertyChanged(Me, New System.ComponentModel.PropertyChangedEventArgs(propertyName))
- End If
- End Sub
- End Class
-
- _
- Public Interface IEDMService
-
- _
- Function CreateDatabaseRequest(ByVal Name As String, ByVal Debug As Boolean) As String
-
- _
- Function CreateDatabaseRequestAsync(ByVal Name As String, ByVal Debug As Boolean) As System.Threading.Tasks.Task(Of String)
-
- _
- Sub CloseDatabaseRequest()
-
- _
- Function CloseDatabaseRequestAsync() As System.Threading.Tasks.Task
-
- _
- Function ReturnDatatable(ByVal SQL As String) As NetworkService_DDEDM.TableResult
-
- _
- Function ReturnDatatableAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.TableResult)
-
- _
- Function ReturnScalar(ByVal SQL As String) As NetworkService_DDEDM.ScalarResult
-
- _
- Function ReturnScalarAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.ScalarResult)
-
- _
- Function ExecuteNonQuery(ByVal SQL As String) As NetworkService_DDEDM.NonQueryResult
-
- _
- Function ExecuteNonQueryAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.NonQueryResult)
-
- _
- Function CreateFile(ByVal Contents() As Byte, ByVal Extension As String) As String
-
- _
- Function CreateFileAsync(ByVal Contents() As Byte, ByVal Extension As String) As System.Threading.Tasks.Task(Of String)
-
- _
- Function UpdateFile(ByVal ContainerId As String, ByVal Contents() As Byte) As String
-
- _
- Function UpdateFileAsync(ByVal ContainerId As String, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of String)
-
- _
- Function GetFile(ByVal ContainerId As String) As NetworkService_DDEDM.ContainerResult
-
- _
- Function GetFileAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.ContainerResult)
-
- _
- Function DeleteFile(ByVal ContainerId As String) As Boolean
-
- _
- Function DeleteFileAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of Boolean)
- End Interface
-
- _
- Public Interface IEDMServiceChannel
- Inherits NetworkService_DDEDM.IEDMService, System.ServiceModel.IClientChannel
- End Interface
-
- _
- Partial Public Class EDMServiceClient
- Inherits System.ServiceModel.ClientBase(Of NetworkService_DDEDM.IEDMService)
- Implements NetworkService_DDEDM.IEDMService
-
- Public Sub New()
- MyBase.New
- End Sub
-
- Public Sub New(ByVal endpointConfigurationName As String)
- MyBase.New(endpointConfigurationName)
- End Sub
-
- Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As String)
- MyBase.New(endpointConfigurationName, remoteAddress)
- End Sub
-
- Public Sub New(ByVal endpointConfigurationName As String, ByVal remoteAddress As System.ServiceModel.EndpointAddress)
- MyBase.New(endpointConfigurationName, remoteAddress)
- End Sub
-
- Public Sub New(ByVal binding As System.ServiceModel.Channels.Binding, ByVal remoteAddress As System.ServiceModel.EndpointAddress)
- MyBase.New(binding, remoteAddress)
- End Sub
-
- Public Function CreateDatabaseRequest(ByVal Name As String, ByVal Debug As Boolean) As String Implements NetworkService_DDEDM.IEDMService.CreateDatabaseRequest
- Return MyBase.Channel.CreateDatabaseRequest(Name, Debug)
- End Function
-
- Public Function CreateDatabaseRequestAsync(ByVal Name As String, ByVal Debug As Boolean) As System.Threading.Tasks.Task(Of String) Implements NetworkService_DDEDM.IEDMService.CreateDatabaseRequestAsync
- Return MyBase.Channel.CreateDatabaseRequestAsync(Name, Debug)
- End Function
-
- Public Sub CloseDatabaseRequest() Implements NetworkService_DDEDM.IEDMService.CloseDatabaseRequest
- MyBase.Channel.CloseDatabaseRequest
- End Sub
-
- Public Function CloseDatabaseRequestAsync() As System.Threading.Tasks.Task Implements NetworkService_DDEDM.IEDMService.CloseDatabaseRequestAsync
- Return MyBase.Channel.CloseDatabaseRequestAsync
- End Function
-
- Public Function ReturnDatatable(ByVal SQL As String) As NetworkService_DDEDM.TableResult Implements NetworkService_DDEDM.IEDMService.ReturnDatatable
- Return MyBase.Channel.ReturnDatatable(SQL)
- End Function
-
- Public Function ReturnDatatableAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.TableResult) Implements NetworkService_DDEDM.IEDMService.ReturnDatatableAsync
- Return MyBase.Channel.ReturnDatatableAsync(SQL)
- End Function
-
- Public Function ReturnScalar(ByVal SQL As String) As NetworkService_DDEDM.ScalarResult Implements NetworkService_DDEDM.IEDMService.ReturnScalar
- Return MyBase.Channel.ReturnScalar(SQL)
- End Function
-
- Public Function ReturnScalarAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.ScalarResult) Implements NetworkService_DDEDM.IEDMService.ReturnScalarAsync
- Return MyBase.Channel.ReturnScalarAsync(SQL)
- End Function
-
- Public Function ExecuteNonQuery(ByVal SQL As String) As NetworkService_DDEDM.NonQueryResult Implements NetworkService_DDEDM.IEDMService.ExecuteNonQuery
- Return MyBase.Channel.ExecuteNonQuery(SQL)
- End Function
-
- Public Function ExecuteNonQueryAsync(ByVal SQL As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.NonQueryResult) Implements NetworkService_DDEDM.IEDMService.ExecuteNonQueryAsync
- Return MyBase.Channel.ExecuteNonQueryAsync(SQL)
- End Function
-
- Public Function CreateFile(ByVal Contents() As Byte, ByVal Extension As String) As String Implements NetworkService_DDEDM.IEDMService.CreateFile
- Return MyBase.Channel.CreateFile(Contents, Extension)
- End Function
-
- Public Function CreateFileAsync(ByVal Contents() As Byte, ByVal Extension As String) As System.Threading.Tasks.Task(Of String) Implements NetworkService_DDEDM.IEDMService.CreateFileAsync
- Return MyBase.Channel.CreateFileAsync(Contents, Extension)
- End Function
-
- Public Function UpdateFile(ByVal ContainerId As String, ByVal Contents() As Byte) As String Implements NetworkService_DDEDM.IEDMService.UpdateFile
- Return MyBase.Channel.UpdateFile(ContainerId, Contents)
- End Function
-
- Public Function UpdateFileAsync(ByVal ContainerId As String, ByVal Contents() As Byte) As System.Threading.Tasks.Task(Of String) Implements NetworkService_DDEDM.IEDMService.UpdateFileAsync
- Return MyBase.Channel.UpdateFileAsync(ContainerId, Contents)
- End Function
-
- Public Function GetFile(ByVal ContainerId As String) As NetworkService_DDEDM.ContainerResult Implements NetworkService_DDEDM.IEDMService.GetFile
- Return MyBase.Channel.GetFile(ContainerId)
- End Function
-
- Public Function GetFileAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of NetworkService_DDEDM.ContainerResult) Implements NetworkService_DDEDM.IEDMService.GetFileAsync
- Return MyBase.Channel.GetFileAsync(ContainerId)
- End Function
-
- Public Function DeleteFile(ByVal ContainerId As String) As Boolean Implements NetworkService_DDEDM.IEDMService.DeleteFile
- Return MyBase.Channel.DeleteFile(ContainerId)
- End Function
-
- Public Function DeleteFileAsync(ByVal ContainerId As String) As System.Threading.Tasks.Task(Of Boolean) Implements NetworkService_DDEDM.IEDMService.DeleteFileAsync
- Return MyBase.Channel.DeleteFileAsync(ContainerId)
- End Function
- End Class
-End Namespace
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/System.Data.xsd b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/System.Data.xsd
deleted file mode 100644
index 8c8a3c0c..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/System.Data.xsd
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/configuration.svcinfo b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/configuration.svcinfo
deleted file mode 100644
index 3e545624..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/configuration.svcinfo
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/configuration91.svcinfo b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/configuration91.svcinfo
deleted file mode 100644
index d39914e6..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/configuration91.svcinfo
+++ /dev/null
@@ -1,210 +0,0 @@
-
-
-
-
-
-
- tcpBinding
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- False
-
-
- Buffered
-
-
- OleTransactions
-
-
- StrongWildcard
-
-
- 0
-
-
-
-
-
- 65536
-
-
- 0
-
-
-
-
-
- False
-
-
- System.ServiceModel.Configuration.XmlDictionaryReaderQuotasElement
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- 0
-
-
- System.ServiceModel.Configuration.StandardBindingOptionalReliableSessionElement
-
-
- True
-
-
- 00:10:00
-
-
- False
-
-
- System.ServiceModel.Configuration.NetTcpSecurityElement
-
-
- Transport
-
-
- System.ServiceModel.Configuration.TcpTransportSecurityElement
-
-
- Windows
-
-
- EncryptAndSign
-
-
- System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement
-
-
- Never
-
-
- TransportSelected
-
-
- (Sammlung)
-
-
- Tls, Tls11, Tls12
-
-
- System.ServiceModel.Configuration.MessageSecurityOverTcpElement
-
-
- Windows
-
-
- Default
-
-
-
-
-
-
-
-
- net.tcp://localhost:9000/DigitalData/Services/Main
-
-
-
-
-
- netTcpBinding
-
-
- tcpBinding
-
-
- NetworkService_DDEDM.IEDMService
-
-
- System.ServiceModel.Configuration.AddressHeaderCollectionElement
-
-
- <Header />
-
-
- System.ServiceModel.Configuration.IdentityElement
-
-
- System.ServiceModel.Configuration.UserPrincipalNameElement
-
-
-
-
-
- System.ServiceModel.Configuration.ServicePrincipalNameElement
-
-
-
-
-
- System.ServiceModel.Configuration.DnsElement
-
-
- localhost
-
-
- System.ServiceModel.Configuration.RsaElement
-
-
-
-
-
- System.ServiceModel.Configuration.CertificateElement
-
-
-
-
-
- System.ServiceModel.Configuration.CertificateReferenceElement
-
-
- My
-
-
- LocalMachine
-
-
- FindBySubjectDistinguishedName
-
-
-
-
-
- False
-
-
- tcpBinding
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/service.wsdl b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/service.wsdl
deleted file mode 100644
index 520b3f35..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/service.wsdl
+++ /dev/null
@@ -1,135 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
- EncryptAndSign
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- net.tcp://localhost:9000/DigitalData/Services/Main
-
- localhost
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/service.xsd b/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/service.xsd
deleted file mode 100644
index b4d5ff0f..00000000
--- a/EDMI_ClientSuite/Connected Services/NetworkService_DDEDM/service.xsd
+++ /dev/null
@@ -1,42 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/EntityDesigner/ClassControlBuilder.vb b/EDMI_ClientSuite/EntityDesigner/ClassControlBuilder.vb
index faf70aea..1998a7d6 100644
--- a/EDMI_ClientSuite/EntityDesigner/ClassControlBuilder.vb
+++ b/EDMI_ClientSuite/EntityDesigner/ClassControlBuilder.vb
@@ -1,5 +1,5 @@
Imports DigitalData.Controls.LookupGrid
-Imports EDMI_ClientSuite.ClassControlUtils
+Imports DigitalData.GUIs.ClientSuite.ClassControlUtils
Public Class ClassControlBuilder
#Region "State"
diff --git a/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb b/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb
index 7f2ec34f..ba7e6905 100644
--- a/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb
+++ b/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassBaseProperties.vb
@@ -1,6 +1,6 @@
Imports System.ComponentModel
-Imports EDMI_ClientSuite.ClassControlLocalization
-Imports EDMI_ClientSuite.ClassControlUtils
+Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
+Imports DigitalData.GUIs.ClientSuite.ClassControlUtils
Namespace ControlProperties
Public MustInherit Class ClassBaseProperties
diff --git a/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb b/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb
index b82463e5..8e9f2623 100644
--- a/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb
+++ b/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassInputProperties.vb
@@ -1,4 +1,4 @@
-Imports EDMI_ClientSuite.ClassControlLocalization
+Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
Namespace ControlProperties
Public MustInherit Class ClassInputProperties
diff --git a/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb b/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb
index faa2cc44..93dafd11 100644
--- a/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb
+++ b/EDMI_ClientSuite/EntityDesigner/ControlProperties/BaseClasses/ClassMultiInputProperties.vb
@@ -1,12 +1,6 @@
-Imports System.ComponentModel
-Imports System.Drawing.Design
-Imports DevExpress.XtraEditors.Repository
-Imports EDMI_ClientSuite.ClassControlLocalization
+Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
Namespace ControlProperties
-
-
-
Public Class ClassMultiInputProperties
Inherits ClassInputProperties
@@ -23,5 +17,4 @@ Namespace ControlProperties
End Set
End Property
End Class
-
End Namespace
diff --git a/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb b/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb
index 392b8e99..ffff5f5f 100644
--- a/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb
+++ b/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassLabelProperties.vb
@@ -1,5 +1,5 @@
Imports System.ComponentModel
-Imports EDMI_ClientSuite.ClassControlLocalization
+Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
Namespace ControlProperties
Public Class ClassLabelProperties
diff --git a/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb b/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb
index dd58222b..6a126901 100644
--- a/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb
+++ b/EDMI_ClientSuite/EntityDesigner/ControlProperties/Controls/ClassTextboxProperties.vb
@@ -1,5 +1,5 @@
Imports System.ComponentModel
-Imports EDMI_ClientSuite.ClassControlLocalization
+Imports DigitalData.GUIs.ClientSuite.ClassControlLocalization
Namespace ControlProperties
Public Class ClassTextboxProperties
diff --git a/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.Designer.vb b/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.Designer.vb
index ba5b306a..9b1d1aa7 100644
--- a/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.Designer.vb
+++ b/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.Designer.vb
@@ -22,15 +22,17 @@ Partial Class frmEntityDesigner
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
Private Sub InitializeComponent()
- Me.PanelMain = New EDMI_ClientSuite.ControlSnapPanel()
+ Me.components = New System.ComponentModel.Container()
+ Me.PanelMain = New ClientSuite.ControlSnapPanel(Me.components)
Me.TabControlMain = New DevExpress.XtraTab.XtraTabControl()
Me.TabPageControls = New DevExpress.XtraTab.XtraTabPage()
+ 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.btnCombobox = New System.Windows.Forms.Button()
+ Me.Label1 = New System.Windows.Forms.Label()
CType(Me.TabControlMain, System.ComponentModel.ISupportInitialize).BeginInit()
Me.TabControlMain.SuspendLayout()
Me.TabPageControls.SuspendLayout()
@@ -63,6 +65,7 @@ Partial Class frmEntityDesigner
'
'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)
@@ -70,20 +73,29 @@ Partial Class frmEntityDesigner
Me.TabPageControls.Size = New System.Drawing.Size(222, 425)
Me.TabPageControls.Text = "Controls"
'
+ '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(15, 48)
+ Me.btnTextbox.Location = New System.Drawing.Point(3, 63)
Me.btnTextbox.Name = "btnTextbox"
- Me.btnTextbox.Size = New System.Drawing.Size(122, 23)
+ 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(15, 19)
+ Me.btnLabel.Location = New System.Drawing.Point(3, 34)
Me.btnLabel.Name = "btnLabel"
- Me.btnLabel.Size = New System.Drawing.Size(122, 23)
+ Me.btnLabel.Size = New System.Drawing.Size(216, 23)
Me.btnLabel.TabIndex = 0
Me.btnLabel.Text = "Label"
Me.btnLabel.UseVisualStyleBackColor = True
@@ -118,14 +130,14 @@ Partial Class frmEntityDesigner
Me.SplitContainerControlMain.TabIndex = 1
Me.SplitContainerControlMain.Text = "SplitContainerControl1"
'
- 'btnCombobox
+ 'Label1
'
- Me.btnCombobox.Location = New System.Drawing.Point(15, 77)
- Me.btnCombobox.Name = "btnCombobox"
- Me.btnCombobox.Size = New System.Drawing.Size(122, 23)
- Me.btnCombobox.TabIndex = 1
- Me.btnCombobox.Text = "Combobox"
- Me.btnCombobox.UseVisualStyleBackColor = True
+ 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"
'
'frmEntityDesigner
'
@@ -154,4 +166,5 @@ Partial Class frmEntityDesigner
Friend WithEvents btnLabel As Button
Friend WithEvents SplitContainerControlMain As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents btnCombobox As Button
+ Friend WithEvents Label1 As Label
End Class
diff --git a/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.vb b/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.vb
index 9e0a47ee..3510d287 100644
--- a/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.vb
+++ b/EDMI_ClientSuite/EntityDesigner/frmEntityDesigner.vb
@@ -1,7 +1,8 @@
-Imports DevExpress.XtraEditors.Repository
+Imports System.ComponentModel
+Imports DevExpress.XtraEditors.Repository
Imports DevExpress.XtraVerticalGrid
-Imports EDMI_ClientSuite.ClassControlUtils
-Imports EDMI_ClientSuite.ControlProperties
+Imports DigitalData.GUIs.ClientSuite.ClassControlUtils
+Imports DigitalData.GUIs.ClientSuite.ControlProperties
Public Class frmEntityDesigner
Private _IsMouseDown As Boolean = False
@@ -254,4 +255,8 @@ Public Class frmEntityDesigner
End If
End Select
End Sub
+
+ Private Sub frmEntityDesigner_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
+ My.MainForm.RibbonPageCategoryEntityDesigner.Visible = False
+ End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/My Project/Application.Designer.vb b/EDMI_ClientSuite/My Project/Application.Designer.vb
index 4d9b26d7..5c8d1e2a 100644
--- a/EDMI_ClientSuite/My Project/Application.Designer.vb
+++ b/EDMI_ClientSuite/My Project/Application.Designer.vb
@@ -32,12 +32,7 @@ Namespace My
_
Protected Overrides Sub OnCreateMainForm()
- Me.MainForm = Global.EDMI_ClientSuite.frmMain
- End Sub
-
- _
- Protected Overrides Sub OnCreateSplashScreen()
- Me.SplashScreen = Global.EDMI_ClientSuite.frmSplash
+ Me.MainForm = Global.DigitalData.GUIs.ClientSuite.frmMain
End Sub
End Class
End Namespace
diff --git a/EDMI_ClientSuite/My Project/Application.myapp b/EDMI_ClientSuite/My Project/Application.myapp
index b84db44c..5eb49b3b 100644
--- a/EDMI_ClientSuite/My Project/Application.myapp
+++ b/EDMI_ClientSuite/My Project/Application.myapp
@@ -6,6 +6,5 @@
0
true
0
- frmSplash
true
\ No newline at end of file
diff --git a/EDMI_ClientSuite/My Project/Resources.Designer.vb b/EDMI_ClientSuite/My Project/Resources.Designer.vb
index 7f496587..12f93519 100644
--- a/EDMI_ClientSuite/My Project/Resources.Designer.vb
+++ b/EDMI_ClientSuite/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("EDMI_ClientSuite.Resources", GetType(Resources).Assembly)
+ 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
@@ -60,26 +60,6 @@ Namespace My.Resources
End Set
End Property
- '''
- ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
- '''
- Friend ReadOnly Property email_go() As System.Drawing.Bitmap
- Get
- Dim obj As Object = ResourceManager.GetObject("email_go", resourceCulture)
- Return CType(obj,System.Drawing.Bitmap)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
- '''
- Friend ReadOnly Property folder_go() As System.Drawing.Bitmap
- Get
- Dim obj As Object = ResourceManager.GetObject("folder_go", resourceCulture)
- Return CType(obj,System.Drawing.Bitmap)
- End Get
- End Property
-
'''
''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
'''
diff --git a/EDMI_ClientSuite/My Project/Resources.resx b/EDMI_ClientSuite/My Project/Resources.resx
index ae2292dd..f9ad61a5 100644
--- a/EDMI_ClientSuite/My Project/Resources.resx
+++ b/EDMI_ClientSuite/My Project/Resources.resx
@@ -121,13 +121,7 @@
..\Resources\iconfinder_Gowalla_324477.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
-
- ..\Resources\email_go.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\folder_go.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/EDMI_ClientSuite/My Project/Settings.Designer.vb
index 6ec95a4e..cfc02179 100644
--- a/EDMI_ClientSuite/My Project/Settings.Designer.vb
+++ b/EDMI_ClientSuite/My Project/Settings.Designer.vb
@@ -17,7 +17,7 @@ Namespace My
_
- Partial Friend NotInheritable Class MySettings
+ Partial Public NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings()),MySettings)
@@ -62,6 +62,18 @@ Namespace My
Return CType(Me("EDM_NetworkService_Adress"),String)
End Get
End Property
+
+ _
+ Public Property ICMServiceAddress() As String
+ Get
+ Return CType(Me("ICMServiceAddress"),String)
+ End Get
+ Set
+ Me("ICMServiceAddress") = value
+ End Set
+ End Property
End Class
End Namespace
@@ -73,9 +85,9 @@ Namespace My
Friend Module MySettingsProperty
_
- Friend ReadOnly Property Settings() As Global.EDMI_ClientSuite.My.MySettings
+ Friend ReadOnly Property Settings() As Global.DigitalData.GUIs.ClientSuite.My.MySettings
Get
- Return Global.EDMI_ClientSuite.My.MySettings.Default
+ Return Global.DigitalData.GUIs.ClientSuite.My.MySettings.Default
End Get
End Property
End Module
diff --git a/EDMI_ClientSuite/My Project/Settings.settings b/EDMI_ClientSuite/My Project/Settings.settings
index c95acafd..feab57fd 100644
--- a/EDMI_ClientSuite/My Project/Settings.settings
+++ b/EDMI_ClientSuite/My Project/Settings.settings
@@ -5,5 +5,8 @@
net.tcp://172.24.12.67:9000/DigitalData/Services/Main
+
+
+
\ No newline at end of file
diff --git a/EDMI_ClientSuite/My Project/app.manifest b/EDMI_ClientSuite/My Project/app.manifest
new file mode 100644
index 00000000..ef881eb8
--- /dev/null
+++ b/EDMI_ClientSuite/My Project/app.manifest
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/EDMI_ClientSuite/My Project/licenses.licx b/EDMI_ClientSuite/My Project/licenses.licx
index 8c262734..ccd2d2a4 100644
--- a/EDMI_ClientSuite/My Project/licenses.licx
+++ b/EDMI_ClientSuite/My Project/licenses.licx
@@ -1,6 +1,8 @@
-DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.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.XtraBars.Ribbon.RibbonControl, 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.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.XtraLayout.LayoutControl, DevExpress.XtraLayout.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.XtraBars.Docking.DockManager, 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.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/EDMI_ClientSuite/MyAppSettings.vb b/EDMI_ClientSuite/MyAppSettings.vb
deleted file mode 100644
index 62fd1d39..00000000
--- a/EDMI_ClientSuite/MyAppSettings.vb
+++ /dev/null
@@ -1,10 +0,0 @@
-Imports DigitalData.Modules.Logging
-
-Module MyAppSettings
- Public APP_DB_VERSION As String
-
- Public USER_LANGUAGE As String = "de-DE"
- Public MyLogger As Logger
- Public MyLogConfig As LogConfig
- End Module
-
diff --git a/EDMI_ClientSuite/MyApplication.vb b/EDMI_ClientSuite/MyApplication.vb
index 222d8d84..668e9a65 100644
--- a/EDMI_ClientSuite/MyApplication.vb
+++ b/EDMI_ClientSuite/MyApplication.vb
@@ -1,37 +1,36 @@
Imports System.ServiceModel
+Imports System.Threading
+Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging
-Imports EDMI_ClientSuite.NetworkService_DDEDM
+Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
Namespace My
- '''
- ''' Helper Class to hold User State
- '''
- Public Class User
- Public Username As String
- Public MachineName As String
-
- Public Sub New()
- Username = Environment.UserName
- MachineName = Environment.MachineName
- End Sub
- End Class
-
'''
''' Extends the My Namespace
+ ''' Example: My.LogConfig
'''
Module Extension
+ Property ConfigManager As ConfigManager(Of ClassConfig)
+ ReadOnly Property Config As ClassConfig
+ Get
+ Return ConfigManager.Config
+ End Get
+ End Property
Property LogConfig As LogConfig
Property ChannelFactory As ChannelFactory(Of IEDMServiceChannel)
Property Channel As IEDMServiceChannel
+ Property MainForm As frmMain
End Module
'''
- ''' Extends the My.Application Namespace
+ ''' Extends the My.Application Namespace to hold Application State
+ ''' Example: My.Application.User
'''
Partial Class MyApplication
' User Config
- Public User As New User()
+ Public User As New ClassUserState()
+ Public Service As New ClassServiceState()
End Class
End Namespace
diff --git a/EDMI_ClientSuite/State/ClassServiceState.vb b/EDMI_ClientSuite/State/ClassServiceState.vb
new file mode 100644
index 00000000..25047b48
--- /dev/null
+++ b/EDMI_ClientSuite/State/ClassServiceState.vb
@@ -0,0 +1,4 @@
+Public Class ClassServiceState
+ Public Property Online As Boolean = True
+ Public Property LastChecked As DateTime = DateTime.Now
+End Class
diff --git a/EDMI_ClientSuite/State/ClassUserState.vb b/EDMI_ClientSuite/State/ClassUserState.vb
new file mode 100644
index 00000000..41bc5b75
--- /dev/null
+++ b/EDMI_ClientSuite/State/ClassUserState.vb
@@ -0,0 +1,20 @@
+Imports System.Threading
+
+'''
+''' Helper Class to hold User State
+'''
+Public Class ClassUserState
+ Public UserName As String
+ Public MachineName As String
+ Public Language As String
+ Public IsAdmin As Boolean
+
+ '''
+ ''' Initialize user object with values that can be read from the environment
+ '''
+ Public Sub New()
+ Language = Thread.CurrentThread.CurrentCulture.Name
+ UserName = Environment.UserName
+ MachineName = Environment.MachineName
+ End Sub
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/Strings/ControlProperties.Designer.vb b/EDMI_ClientSuite/Strings/ControlProperties.Designer.vb
index b6dd43c0..61587f26 100644
--- a/EDMI_ClientSuite/Strings/ControlProperties.Designer.vb
+++ b/EDMI_ClientSuite/Strings/ControlProperties.Designer.vb
@@ -43,7 +43,7 @@ Namespace My.Resources
Public Shared 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("EDMI_ClientSuite.ControlProperties", GetType(ControlProperties).Assembly)
+ Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("DigitalData.GUIs.ClientSuite.ControlProperties", GetType(ControlProperties).Assembly)
resourceMan = temp
End If
Return resourceMan
diff --git a/EDMI_ClientSuite/UserControls/ProcessManagerOverview.Designer.vb b/EDMI_ClientSuite/Widgets/ProcessManagerWidget.Designer.vb
similarity index 98%
rename from EDMI_ClientSuite/UserControls/ProcessManagerOverview.Designer.vb
rename to EDMI_ClientSuite/Widgets/ProcessManagerWidget.Designer.vb
index 685b7288..ba4e5736 100644
--- a/EDMI_ClientSuite/UserControls/ProcessManagerOverview.Designer.vb
+++ b/EDMI_ClientSuite/Widgets/ProcessManagerWidget.Designer.vb
@@ -1,5 +1,5 @@
_
-Partial Class ProcessManagerOverview
+Partial Class ProcessManagerWidget
Inherits System.Windows.Forms.UserControl
'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
diff --git a/EDMI_ClientSuite/UserControls/ProcessManagerOverview.resx b/EDMI_ClientSuite/Widgets/ProcessManagerWidget.resx
similarity index 100%
rename from EDMI_ClientSuite/UserControls/ProcessManagerOverview.resx
rename to EDMI_ClientSuite/Widgets/ProcessManagerWidget.resx
diff --git a/EDMI_ClientSuite/UserControls/ProcessManagerOverview.vb b/EDMI_ClientSuite/Widgets/ProcessManagerWidget.vb
similarity index 94%
rename from EDMI_ClientSuite/UserControls/ProcessManagerOverview.vb
rename to EDMI_ClientSuite/Widgets/ProcessManagerWidget.vb
index 2139cd09..7a02571e 100644
--- a/EDMI_ClientSuite/UserControls/ProcessManagerOverview.vb
+++ b/EDMI_ClientSuite/Widgets/ProcessManagerWidget.vb
@@ -1,4 +1,4 @@
-Public Class ProcessManagerOverview
+Public Class ProcessManagerWidget
Public Delegate Sub RowDoubleClickedDelegate(RowView As DataRowView)
Public Event RowDoubleClicked As RowDoubleClickedDelegate
diff --git a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.Designer.vb b/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.Designer.vb
deleted file mode 100644
index 12f2a903..00000000
--- a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.Designer.vb
+++ /dev/null
@@ -1,463 +0,0 @@
-'------------------------------------------------------------------------------
-'
-' 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 Class ControlProperties
-
- Private Shared resourceMan As Global.System.Resources.ResourceManager
-
- Private Shared resourceCulture As Global.System.Globalization.CultureInfo
-
- _
- Friend Sub New()
- MyBase.New
- End Sub
-
- '''
- ''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
- '''
- _
- Friend Shared 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.ControlProperties", GetType(ControlProperties).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 Shared Property Culture() As Global.System.Globalization.CultureInfo
- Get
- Return resourceCulture
- End Get
- Set
- resourceCulture = value
- End Set
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Termin Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_appointment() As String
- Get
- Return ResourceManager.GetString("category_appointment", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Daten ähnelt.
- '''
- Friend Shared ReadOnly Property category_data() As String
- Get
- Return ResourceManager.GetString("category_data", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Datenbank Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_database() As String
- Get
- Return ResourceManager.GetString("category_database", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Datums Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_date() As String
- Get
- Return ResourceManager.GetString("category_date", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Schrift Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_font() As String
- Get
- Return ResourceManager.GetString("category_font", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Form Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_form() As String
- Get
- Return ResourceManager.GetString("category_form", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Information ähnelt.
- '''
- Friend Shared ReadOnly Property category_info() As String
- Get
- Return ResourceManager.GetString("category_info", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Eingabe Eigenschaften ähnelt.
- '''
- Friend Shared ReadOnly Property category_input() As String
- Get
- Return ResourceManager.GetString("category_input", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Andere Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_other() As String
- Get
- Return ResourceManager.GetString("category_other", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Ansichts Einstellungen ähnelt.
- '''
- Friend Shared ReadOnly Property category_view() As String
- Get
- Return ResourceManager.GetString("category_view", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Schlägt bereits eingegebene Einträge bei der der Eingabe vor. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_autosuggest() As String
- Get
- Return ResourceManager.GetString("desc_autosuggest", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Hintergrundfarbe des Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_backcolor() As String
- Get
- Return ResourceManager.GetString("desc_backcolor", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den Beschreibungstext dieses Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_caption() As String
- Get
- Return ResourceManager.GetString("desc_caption", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den Spaltentitel des Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_col_title() As String
- Get
- Return ResourceManager.GetString("desc_col_title", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Farbe an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_color() As String
- Get
- Return ResourceManager.GetString("desc_color", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den Standardwert dieses Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_defaultvalue() As String
- Get
- Return ResourceManager.GetString("desc_defaultvalue", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Beschreibung des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden ähnelt.
- '''
- Friend Shared ReadOnly Property desc_description() As String
- Get
- Return ResourceManager.GetString("desc_description", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt einen SQL Befehl an, der das Control abhängig vom Ergebnis (0 oder 1) aktiviert oder deaktiviert ähnelt.
- '''
- Friend Shared ReadOnly Property desc_enabledwhen() As String
- Get
- Return ResourceManager.GetString("desc_enabledwhen", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Schriftart an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_fontstyle() As String
- Get
- Return ResourceManager.GetString("desc_fontstyle", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt das Format des Textes an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_format() As String
- Get
- Return ResourceManager.GetString("desc_format", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Form-ID der zu öffnenden Form an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_formid() As String
- Get
- Return ResourceManager.GetString("desc_formid", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Der Name eines Elements von dem das End-Datum gelesen wird. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_fromdate() As String
- Get
- Return ResourceManager.GetString("desc_fromdate", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Der Text, der beim überfahren des Controls angezeigt wird ähnelt.
- '''
- Friend Shared ReadOnly Property desc_hint() As String
- Get
- Return ResourceManager.GetString("desc_hint", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die eindeutige ID des Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_id() As String
- Get
- Return ResourceManager.GetString("desc_id", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Position des Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_location() As String
- Get
- Return ResourceManager.GetString("desc_location", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Die Id des Formulars, das über das Kontextmenü geöffnet wird. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_masterdataid() As String
- Get
- Return ResourceManager.GetString("desc_masterdataid", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an, ob das Feld mehrzeilig sein soll. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_multiline() As String
- Get
- Return ResourceManager.GetString("desc_multiline", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den internen Namen des Elements an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_name() As String
- Get
- Return ResourceManager.GetString("desc_name", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den Ort des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden ähnelt.
- '''
- Friend Shared ReadOnly Property desc_place() As String
- Get
- Return ResourceManager.GetString("desc_place", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an, ob dieses Element nur lesbar ist. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_readonly() As String
- Get
- Return ResourceManager.GetString("desc_readonly", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an ob dieses Element benötigt wird um die Eingabe abzuschließen. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_required() As String
- Get
- Return ResourceManager.GetString("desc_required", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Screen-ID der zu öffnenden Form an. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_screenid() As String
- Get
- Return ResourceManager.GetString("desc_screenid", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an, ob nur vorhandene Listeneinträge ausgewählt werden können ähnelt.
- '''
- Friend Shared ReadOnly Property desc_select_only() As String
- Get
- Return ResourceManager.GetString("desc_select_only", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an, ob das Feld als Spalte im Grid angezeigt wird. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_showcolumn() As String
- Get
- Return ResourceManager.GetString("desc_showcolumn", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Größe des Elements an ähnelt.
- '''
- Friend Shared ReadOnly Property desc_size() As String
- Get
- Return ResourceManager.GetString("desc_size", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Datenbank-Abfrage für dieses Element an. Es können @RECORD_ID und @FORM_ID als Platzhalter verwendet werden. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_sqlcommand() As String
- Get
- Return ResourceManager.GetString("desc_sqlcommand", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Eine Liste von statischen Werten, die durch ';' getrennt sind. Überschreibt die Daten aus 'Datenbank-Einstellungen' ähnelt.
- '''
- Friend Shared ReadOnly Property desc_staticlist() As String
- Get
- Return ResourceManager.GetString("desc_staticlist", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den Betreff des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden ähnelt.
- '''
- Friend Shared ReadOnly Property desc_subject() As String
- Get
- Return ResourceManager.GetString("desc_subject", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt den optionalen zweiten Betreff des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden ähnelt.
- '''
- Friend Shared ReadOnly Property desc_subject2() As String
- Get
- Return ResourceManager.GetString("desc_subject2", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt die Reihenfolge an, in der das Element durch die Tabulatortaste aktiviert wird. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_tabindex() As String
- Get
- Return ResourceManager.GetString("desc_tabindex", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an, ob das Element durch die Tabulartortaste aktiviert werden soll. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_tabstop() As String
- Get
- Return ResourceManager.GetString("desc_tabstop", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Der Name eines Elements von dem das Start-Datum gelesen wird. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_todate() As String
- Get
- Return ResourceManager.GetString("desc_todate", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Der Typ des Elements ähnelt.
- '''
- Friend Shared ReadOnly Property desc_type() As String
- Get
- Return ResourceManager.GetString("desc_type", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Sucht eine lokalisierte Zeichenfolge, die Gibt an, ob das Element angezeigt wird. ähnelt.
- '''
- Friend Shared ReadOnly Property desc_visible() As String
- Get
- Return ResourceManager.GetString("desc_visible", resourceCulture)
- End Get
- End Property
- End Class
-End Namespace
diff --git a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.en.Designer.vb b/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.en.Designer.vb
deleted file mode 100644
index e69de29b..00000000
diff --git a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.resx b/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.resx
deleted file mode 100644
index af8c8fbb..00000000
--- a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.resx
+++ /dev/null
@@ -1,252 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 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
-
-
- Termin Einstellungen
-
-
- Daten
-
-
- Datenbank Einstellungen
-
-
- Datums Einstellungen
-
-
- Schrift Einstellungen
-
-
- Form Einstellungen
-
-
- Information
-
-
- Andere Einstellungen
-
-
- Ansichts Einstellungen
-
-
- Schlägt bereits eingegebene Einträge bei der der Eingabe vor.
-
-
- Gibt die Hintergrundfarbe des Elements an.
-
-
- Gibt den Beschreibungstext dieses Elements an.
-
-
- Gibt die Farbe an.
-
-
- Gibt den Spaltentitel des Elements an.
-
-
- Gibt den Standardwert dieses Elements an.
-
-
- Gibt die Beschreibung des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden
-
-
- Gibt einen SQL Befehl an, der das Control abhängig vom Ergebnis (0 oder 1) aktiviert oder deaktiviert
-
-
- Gibt die Schriftart an.
-
-
- Gibt das Format des Textes an.
-
-
- Gibt die Form-ID der zu öffnenden Form an.
-
-
- Der Name eines Elements von dem das End-Datum gelesen wird.
-
-
- Der Text, der beim überfahren des Controls angezeigt wird
-
-
- Gibt die eindeutige ID des Elements an.
-
-
- Gibt die Position des Elements an.
-
-
- Die Id des Formulars, das über das Kontextmenü geöffnet wird.
-
-
- Gibt an, ob das Feld mehrzeilig sein soll.
-
-
- Gibt den internen Namen des Elements an.
-
-
- Gibt den Ort des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden
-
-
- Gibt an, ob dieses Element nur lesbar ist.
-
-
- Gibt an ob dieses Element benötigt wird um die Eingabe abzuschließen.
-
-
- Gibt die Screen-ID der zu öffnenden Form an.
-
-
- Gibt an, ob nur vorhandene Listeneinträge ausgewählt werden können
-
-
- Gibt an, ob das Feld als Spalte im Grid angezeigt wird.
-
-
- Gibt die Größe des Elements an
-
-
- Gibt die Datenbank-Abfrage für dieses Element an. Es können @RECORD_ID und @FORM_ID als Platzhalter verwendet werden.
-
-
- Eine Liste von statischen Werten, die durch ';' getrennt sind. Überschreibt die Daten aus 'Datenbank-Einstellungen'
-
-
- Gibt den Betreff des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden
-
-
- Gibt den optionalen zweiten Betreff des Termins an. Dynamische Werte aus anderen Controls können mit der Syntax [%controlname] eingefügt werden
-
-
- Gibt die Reihenfolge an, in der das Element durch die Tabulatortaste aktiviert wird.
-
-
- Gibt an, ob das Element durch die Tabulartortaste aktiviert werden soll.
-
-
- Der Name eines Elements von dem das Start-Datum gelesen wird.
-
-
- Der Typ des Elements
-
-
- Gibt an, ob das Element angezeigt wird.
-
-
- Eingabe Eigenschaften
-
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmConfigService.Designer.vb b/EDMI_ClientSuite/frmConfigService.Designer.vb
new file mode 100644
index 00000000..5404985e
--- /dev/null
+++ b/EDMI_ClientSuite/frmConfigService.Designer.vb
@@ -0,0 +1,155 @@
+ _
+Partial Class frmConfigService
+ 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.btnCancel = New System.Windows.Forms.Button()
+ Me.btnTest = New System.Windows.Forms.Button()
+ Me.Label1 = New System.Windows.Forms.Label()
+ Me.Label2 = New System.Windows.Forms.Label()
+ Me.Label3 = New System.Windows.Forms.Label()
+ Me.lblStatus = New System.Windows.Forms.Label()
+ Me.btnOK = New System.Windows.Forms.Button()
+ Me.txtIPAddress = New DevExpress.XtraEditors.TextEdit()
+ Me.txtPort = New DevExpress.XtraEditors.TextEdit()
+ CType(Me.txtIPAddress.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtPort.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'btnCancel
+ '
+ Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel
+ Me.btnCancel.Location = New System.Drawing.Point(338, 124)
+ Me.btnCancel.Name = "btnCancel"
+ Me.btnCancel.Size = New System.Drawing.Size(75, 23)
+ Me.btnCancel.TabIndex = 1
+ Me.btnCancel.Text = "Cancel"
+ Me.btnCancel.UseVisualStyleBackColor = True
+ '
+ 'btnTest
+ '
+ Me.btnTest.Location = New System.Drawing.Point(12, 124)
+ Me.btnTest.Name = "btnTest"
+ Me.btnTest.Size = New System.Drawing.Size(109, 23)
+ Me.btnTest.TabIndex = 2
+ Me.btnTest.Text = "Verbindungstest"
+ Me.btnTest.UseVisualStyleBackColor = True
+ '
+ 'Label1
+ '
+ Me.Label1.AutoSize = True
+ Me.Label1.Location = New System.Drawing.Point(12, 16)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(64, 13)
+ Me.Label1.TabIndex = 3
+ Me.Label1.Text = "IP-Adresse:"
+ '
+ 'Label2
+ '
+ Me.Label2.AutoSize = True
+ Me.Label2.Location = New System.Drawing.Point(265, 16)
+ Me.Label2.Name = "Label2"
+ Me.Label2.Size = New System.Drawing.Size(31, 13)
+ Me.Label2.TabIndex = 3
+ Me.Label2.Text = "Port:"
+ '
+ 'Label3
+ '
+ Me.Label3.AutoSize = True
+ Me.Label3.Location = New System.Drawing.Point(12, 55)
+ Me.Label3.Name = "Label3"
+ Me.Label3.Size = New System.Drawing.Size(42, 13)
+ Me.Label3.TabIndex = 4
+ Me.Label3.Text = "Status:"
+ '
+ 'lblStatus
+ '
+ Me.lblStatus.Location = New System.Drawing.Point(12, 68)
+ Me.lblStatus.Name = "lblStatus"
+ Me.lblStatus.Size = New System.Drawing.Size(401, 53)
+ Me.lblStatus.TabIndex = 4
+ Me.lblStatus.Text = "Nicht verbunden"
+ '
+ 'btnOK
+ '
+ Me.btnOK.DialogResult = System.Windows.Forms.DialogResult.Cancel
+ Me.btnOK.Location = New System.Drawing.Point(257, 124)
+ Me.btnOK.Name = "btnOK"
+ Me.btnOK.Size = New System.Drawing.Size(75, 23)
+ Me.btnOK.TabIndex = 1
+ Me.btnOK.Text = "OK"
+ Me.btnOK.UseVisualStyleBackColor = True
+ '
+ 'txtIPAddress
+ '
+ Me.txtIPAddress.Location = New System.Drawing.Point(12, 32)
+ Me.txtIPAddress.Name = "txtIPAddress"
+ Me.txtIPAddress.Properties.Mask.EditMask = "\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}"
+ Me.txtIPAddress.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.RegEx
+ Me.txtIPAddress.Size = New System.Drawing.Size(250, 20)
+ Me.txtIPAddress.TabIndex = 6
+ '
+ 'txtPort
+ '
+ Me.txtPort.Location = New System.Drawing.Point(268, 32)
+ Me.txtPort.Name = "txtPort"
+ Me.txtPort.Properties.Mask.EditMask = "n0"
+ Me.txtPort.Properties.Mask.MaskType = DevExpress.XtraEditors.Mask.MaskType.Numeric
+ Me.txtPort.Size = New System.Drawing.Size(145, 20)
+ Me.txtPort.TabIndex = 7
+ '
+ 'frmConfigService
+ '
+ Me.AcceptButton = Me.btnOK
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.CancelButton = Me.btnCancel
+ Me.ClientSize = New System.Drawing.Size(425, 159)
+ Me.Controls.Add(Me.txtPort)
+ Me.Controls.Add(Me.txtIPAddress)
+ Me.Controls.Add(Me.lblStatus)
+ Me.Controls.Add(Me.Label3)
+ Me.Controls.Add(Me.Label2)
+ Me.Controls.Add(Me.Label1)
+ Me.Controls.Add(Me.btnTest)
+ Me.Controls.Add(Me.btnOK)
+ Me.Controls.Add(Me.btnCancel)
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "frmConfigService"
+ Me.Text = "Dienst Kommunikation konfigurieren"
+ CType(Me.txtIPAddress.Properties, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtPort.Properties, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+ Friend WithEvents btnCancel As Button
+ Friend WithEvents btnTest As Button
+ Friend WithEvents Label1 As Label
+ Friend WithEvents Label2 As Label
+ Friend WithEvents Label3 As Label
+ Friend WithEvents lblStatus As Label
+ Friend WithEvents btnOK As Button
+ Friend WithEvents txtIPAddress As DevExpress.XtraEditors.TextEdit
+ Friend WithEvents txtPort As DevExpress.XtraEditors.TextEdit
+End Class
diff --git a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.en.resx b/EDMI_ClientSuite/frmConfigService.resx
similarity index 50%
rename from EDMI_ClientSuite/_Skpokpotrings/ControlProperties.en.resx
rename to EDMI_ClientSuite/frmConfigService.resx
index e526f696..1af7de15 100644
--- a/EDMI_ClientSuite/_Skpokpotrings/ControlProperties.en.resx
+++ b/EDMI_ClientSuite/frmConfigService.resx
@@ -117,136 +117,4 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- Scheduler Configuration
-
-
- Data
-
-
- Database Configuration
-
-
- Date Configuration
-
-
- Font Configuration
-
-
- Form Configuration
-
-
- Information
-
-
- Other Configuration
-
-
- View Configuration
-
-
- Suggests already entered entries
-
-
- The element's background color.
-
-
- The element's caption.
-
-
- The element's color.
-
-
- The element's colum title.
-
-
- The element's default value.
-
-
- The appointment's description. Dynamic values from other controls can be inserted with the syntax [%controlname].
-
-
- An SQL Query that enables or disables the Control depending on the result (0 or 1)
-
-
- The element's font style.
-
-
- The element's number format.
-
-
- The form-ID of the form that will be opened.
-
-
- The appointment's start-date. Dynamic values from other controls can be inserted with the syntax [%controlname].
-
-
- The text that will be shown when the control is hovered over
-
-
- The element's unique identifier.
-
-
- The element's location
-
-
- The Form's Id that will be opened via the contextmenu.
-
-
- Should the element be a multiline field?
-
-
- The element's internal name
-
-
- The appointment's location. Dynamic values from other controls can be inserted with the syntax [%controlname].
-
-
- Is the element read-only?
-
-
- Is the element required to be filled to complete the input?
-
-
- The screen-ID of the form that will be opened.
-
-
- Can only existing list items be selected?
-
-
- Should the element be show as a column?
-
-
- The element's size
-
-
- The database query for this element. @RECORD_ID and @FORM_ID can be used as placeholders. Dynamic values from other controls can be inserted with the Syntax @controlid@.
-
-
- A list of static values seperated by a semicolon (;)
-
-
- The appointment's subject. Dynamic values from other controls can be inserted with the syntax [%controlname].
-
-
- The appointment's optional secondary subject. Dynamic values from other controls can be inserted with the syntax [%controlname].
-
-
- The order in which this element should be activated by the tab key.
-
-
- Should this element be activated by the tab key?
-
-
- The appointment's end-date. Dynamic values from other controls can be inserted with the syntax [%controlname].
-
-
- The element's type
-
-
- Should the element be visible?
-
-
- Input Configuration
-
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmConfigService.vb b/EDMI_ClientSuite/frmConfigService.vb
new file mode 100644
index 00000000..60a66feb
--- /dev/null
+++ b/EDMI_ClientSuite/frmConfigService.vb
@@ -0,0 +1,43 @@
+Public Class frmConfigService
+ Private _Service As ClassService
+
+ Private Sub frmServiceConfig_Load(sender As Object, e As EventArgs) Handles Me.Load
+ _Service = New ClassService(My.LogConfig)
+
+ If My.ConfigManager.Config.ServiceConnection <> String.Empty Then
+ txtIPAddress.Text = My.ConfigManager.Config.ServiceIP
+ txtPort.Text = My.ConfigManager.Config.ServicePort
+ End If
+
+ txtIPAddress.Focus()
+ End Sub
+
+ Private Async Sub btnTest_Click(sender As Object, e As EventArgs) Handles btnTest.Click
+ Dim oIPAddress = txtIPAddress.Text
+ Dim oPort = txtPort.Text
+ Dim oEndpointURL = $"net.tcp://{oIPAddress}:{oPort}/DigitalData/Services/Main"
+ Dim oResult As ClassService.ConnectionTestResult
+
+ My.Config.ServiceIP = oIPAddress
+ My.Config.ServicePort = Integer.Parse(oPort)
+
+ lblStatus.Text = "Verbindung wird hergestellt..."
+ oResult = Await _Service.TestConnectionAsync()
+
+ If oResult = ClassService.ConnectionTestResult.Successful Then
+ My.ConfigManager.Save()
+ lblStatus.Text = "Verbindung hergestellt."
+ Else
+ Select Case oResult
+ Case ClassService.ConnectionTestResult.NotFound
+ lblStatus.Text = "Dienst konnte nicht gefunden werden. Bitte überprüfen sie Addresse und Port."
+ Case Else
+ lblStatus.Text = "Unbekannter Fehler."
+ End Select
+ End If
+ End Sub
+
+ Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
+ DialogResult = DialogResult.OK
+ End Sub
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmUserBasics.Designer.vb b/EDMI_ClientSuite/frmConfigUser.Designer.vb
similarity index 50%
rename from EDMI_ClientSuite/frmUserBasics.Designer.vb
rename to EDMI_ClientSuite/frmConfigUser.Designer.vb
index eed36f8e..7d598497 100644
--- a/EDMI_ClientSuite/frmUserBasics.Designer.vb
+++ b/EDMI_ClientSuite/frmConfigUser.Designer.vb
@@ -1,9 +1,9 @@
- _
-Partial Class frmUserBasics
+
+Partial Class frmConfigUser
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
@@ -20,87 +20,61 @@ Partial Class frmUserBasics
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
- _
+
Private Sub InitializeComponent()
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmUserBasics))
- Me.TabControl1 = New System.Windows.Forms.TabControl()
- Me.TabPage1 = New System.Windows.Forms.TabPage()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmConfigUser))
+ Me.TabPageSupport = New DevExpress.XtraTab.XtraTabPage()
+ Me.btnAppFolder = New DevExpress.XtraEditors.SimpleButton()
+ Me.btnLogFolder = New DevExpress.XtraEditors.SimpleButton()
+ Me.Button4 = New System.Windows.Forms.Button()
+ Me.LinkLabel1 = New System.Windows.Forms.LinkLabel()
+ Me.chkLogErrorsOnly = New System.Windows.Forms.CheckBox()
+ Me.XtraTabControl1 = New DevExpress.XtraTab.XtraTabControl()
+ Me.TabPageMain = New DevExpress.XtraTab.XtraTabPage()
Me.Label1 = New System.Windows.Forms.Label()
Me.Button3 = New System.Windows.Forms.Button()
Me.cmbLanguage = New System.Windows.Forms.ComboBox()
- Me.Button4 = New System.Windows.Forms.Button()
- Me.btnApplicationFolder = New System.Windows.Forms.Button()
- Me.chkLogErrorsOnly = New System.Windows.Forms.CheckBox()
- Me.LinkLabel1 = New System.Windows.Forms.LinkLabel()
- Me.Button1 = New System.Windows.Forms.Button()
- Me.TabPage2 = New System.Windows.Forms.TabPage()
- Me.TabControl1.SuspendLayout()
- Me.TabPage1.SuspendLayout()
+ Me.TabPageSupport.SuspendLayout()
+ CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.XtraTabControl1.SuspendLayout()
+ Me.TabPageMain.SuspendLayout()
Me.SuspendLayout()
'
- 'TabControl1
+ 'TabPageSupport
'
- Me.TabControl1.Controls.Add(Me.TabPage1)
- Me.TabControl1.Controls.Add(Me.TabPage2)
- Me.TabControl1.Dock = System.Windows.Forms.DockStyle.Fill
- Me.TabControl1.Location = New System.Drawing.Point(0, 0)
- Me.TabControl1.Name = "TabControl1"
- Me.TabControl1.SelectedIndex = 0
- Me.TabControl1.Size = New System.Drawing.Size(800, 450)
- Me.TabControl1.TabIndex = 0
+ Me.TabPageSupport.Controls.Add(Me.btnAppFolder)
+ Me.TabPageSupport.Controls.Add(Me.btnLogFolder)
+ Me.TabPageSupport.Controls.Add(Me.Button4)
+ Me.TabPageSupport.Controls.Add(Me.LinkLabel1)
+ Me.TabPageSupport.Controls.Add(Me.chkLogErrorsOnly)
+ Me.TabPageSupport.ImageOptions.Image = CType(resources.GetObject("TabPageSupport.ImageOptions.Image"), System.Drawing.Image)
+ Me.TabPageSupport.Name = "TabPageSupport"
+ Me.TabPageSupport.Size = New System.Drawing.Size(700, 444)
+ Me.TabPageSupport.Text = "Support"
'
- 'TabPage1
+ 'btnAppFolder
'
- Me.TabPage1.Controls.Add(Me.Label1)
- Me.TabPage1.Controls.Add(Me.Button3)
- Me.TabPage1.Controls.Add(Me.cmbLanguage)
- Me.TabPage1.Controls.Add(Me.Button4)
- Me.TabPage1.Controls.Add(Me.btnApplicationFolder)
- Me.TabPage1.Controls.Add(Me.chkLogErrorsOnly)
- Me.TabPage1.Controls.Add(Me.LinkLabel1)
- Me.TabPage1.Controls.Add(Me.Button1)
- Me.TabPage1.Location = New System.Drawing.Point(4, 22)
- Me.TabPage1.Name = "TabPage1"
- Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage1.Size = New System.Drawing.Size(792, 424)
- Me.TabPage1.TabIndex = 0
- Me.TabPage1.Text = "Logging und Support"
- Me.TabPage1.UseVisualStyleBackColor = True
+ Me.btnAppFolder.ImageOptions.Image = CType(resources.GetObject("btnAppFolder.ImageOptions.Image"), System.Drawing.Image)
+ Me.btnAppFolder.Location = New System.Drawing.Point(349, 58)
+ Me.btnAppFolder.Name = "btnAppFolder"
+ Me.btnAppFolder.Size = New System.Drawing.Size(164, 36)
+ Me.btnAppFolder.TabIndex = 21
+ Me.btnAppFolder.Text = "AppData Ordner öffnen"
'
- 'Label1
+ 'btnLogFolder
'
- Me.Label1.AutoSize = True
- Me.Label1.Location = New System.Drawing.Point(5, 125)
- Me.Label1.Name = "Label1"
- Me.Label1.Size = New System.Drawing.Size(91, 13)
- Me.Label1.TabIndex = 50
- Me.Label1.Text = "Aktuelle Sprache:"
- '
- 'Button3
- '
- Me.Button3.ImeMode = System.Windows.Forms.ImeMode.NoControl
- Me.Button3.Location = New System.Drawing.Point(148, 139)
- Me.Button3.Name = "Button3"
- Me.Button3.Size = New System.Drawing.Size(134, 23)
- Me.Button3.TabIndex = 49
- Me.Button3.Text = "Sprache jetzt wechseln"
- Me.Button3.UseVisualStyleBackColor = True
- '
- 'cmbLanguage
- '
- Me.cmbLanguage.FormattingEnabled = True
- Me.cmbLanguage.Items.AddRange(New Object() {"de-DE", "en-US"})
- Me.cmbLanguage.Location = New System.Drawing.Point(8, 141)
- Me.cmbLanguage.Name = "cmbLanguage"
- Me.cmbLanguage.Size = New System.Drawing.Size(134, 21)
- Me.cmbLanguage.TabIndex = 48
+ Me.btnLogFolder.ImageOptions.Image = CType(resources.GetObject("btnLogFolder.ImageOptions.Image"), System.Drawing.Image)
+ Me.btnLogFolder.Location = New System.Drawing.Point(349, 18)
+ Me.btnLogFolder.Name = "btnLogFolder"
+ Me.btnLogFolder.Size = New System.Drawing.Size(164, 34)
+ Me.btnLogFolder.TabIndex = 20
+ Me.btnLogFolder.Text = "Log Ordner öffnen"
'
'Button4
'
- Me.Button4.Image = Global.EDMI_ClientSuite.My.Resources.Resources.email_go
Me.Button4.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button4.ImeMode = System.Windows.Forms.ImeMode.NoControl
- Me.Button4.Location = New System.Drawing.Point(8, 6)
+ Me.Button4.Location = New System.Drawing.Point(15, 14)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(133, 23)
Me.Button4.TabIndex = 19
@@ -108,91 +82,108 @@ Partial Class frmUserBasics
Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.Button4.UseVisualStyleBackColor = True
'
- 'btnApplicationFolder
- '
- Me.btnApplicationFolder.Image = Global.EDMI_ClientSuite.My.Resources.Resources.folder_go
- Me.btnApplicationFolder.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.btnApplicationFolder.ImeMode = System.Windows.Forms.ImeMode.NoControl
- Me.btnApplicationFolder.Location = New System.Drawing.Point(265, 35)
- Me.btnApplicationFolder.Name = "btnApplicationFolder"
- Me.btnApplicationFolder.Size = New System.Drawing.Size(144, 23)
- Me.btnApplicationFolder.TabIndex = 16
- Me.btnApplicationFolder.Text = "Open AppFolder User"
- Me.btnApplicationFolder.TextAlign = System.Drawing.ContentAlignment.MiddleRight
- Me.btnApplicationFolder.UseVisualStyleBackColor = True
- '
- 'chkLogErrorsOnly
- '
- Me.chkLogErrorsOnly.AutoSize = True
- Me.chkLogErrorsOnly.ImeMode = System.Windows.Forms.ImeMode.NoControl
- Me.chkLogErrorsOnly.Location = New System.Drawing.Point(147, 10)
- Me.chkLogErrorsOnly.Name = "chkLogErrorsOnly"
- Me.chkLogErrorsOnly.Size = New System.Drawing.Size(100, 17)
- Me.chkLogErrorsOnly.TabIndex = 18
- Me.chkLogErrorsOnly.Text = "Log Errors Only"
- Me.chkLogErrorsOnly.UseVisualStyleBackColor = True
- '
'LinkLabel1
'
Me.LinkLabel1.AutoSize = True
Me.LinkLabel1.Font = New System.Drawing.Font("Segoe UI", 9.75!)
Me.LinkLabel1.ImeMode = System.Windows.Forms.ImeMode.NoControl
- Me.LinkLabel1.Location = New System.Drawing.Point(5, 79)
+ Me.LinkLabel1.Location = New System.Drawing.Point(12, 87)
Me.LinkLabel1.Name = "LinkLabel1"
Me.LinkLabel1.Size = New System.Drawing.Size(200, 17)
Me.LinkLabel1.TabIndex = 15
Me.LinkLabel1.TabStop = True
Me.LinkLabel1.Text = "Link zu Support-Tool Digital Data"
'
- 'Button1
+ 'chkLogErrorsOnly
'
- Me.Button1.Image = Global.EDMI_ClientSuite.My.Resources.Resources.folder_go
- Me.Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.Button1.ImeMode = System.Windows.Forms.ImeMode.NoControl
- Me.Button1.Location = New System.Drawing.Point(8, 35)
- Me.Button1.Name = "Button1"
- Me.Button1.Size = New System.Drawing.Size(133, 23)
- Me.Button1.TabIndex = 17
- Me.Button1.Text = "Open Log-Folder"
- Me.Button1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
- Me.Button1.UseVisualStyleBackColor = True
+ Me.chkLogErrorsOnly.AutoSize = True
+ Me.chkLogErrorsOnly.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.chkLogErrorsOnly.Location = New System.Drawing.Point(154, 18)
+ Me.chkLogErrorsOnly.Name = "chkLogErrorsOnly"
+ Me.chkLogErrorsOnly.Size = New System.Drawing.Size(100, 17)
+ Me.chkLogErrorsOnly.TabIndex = 18
+ Me.chkLogErrorsOnly.Text = "Log Errors Only"
+ Me.chkLogErrorsOnly.UseVisualStyleBackColor = True
'
- 'TabPage2
+ 'XtraTabControl1
'
- Me.TabPage2.Location = New System.Drawing.Point(4, 22)
- Me.TabPage2.Name = "TabPage2"
- Me.TabPage2.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage2.Size = New System.Drawing.Size(792, 424)
- Me.TabPage2.TabIndex = 1
- Me.TabPage2.Text = "TabPage2"
- Me.TabPage2.UseVisualStyleBackColor = True
+ Me.XtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.XtraTabControl1.HeaderLocation = DevExpress.XtraTab.TabHeaderLocation.Left
+ Me.XtraTabControl1.HeaderOrientation = DevExpress.XtraTab.TabOrientation.Horizontal
+ Me.XtraTabControl1.Location = New System.Drawing.Point(0, 0)
+ Me.XtraTabControl1.Name = "XtraTabControl1"
+ Me.XtraTabControl1.SelectedTabPage = Me.TabPageSupport
+ Me.XtraTabControl1.Size = New System.Drawing.Size(800, 450)
+ Me.XtraTabControl1.TabIndex = 51
+ Me.XtraTabControl1.TabPages.AddRange(New DevExpress.XtraTab.XtraTabPage() {Me.TabPageMain, Me.TabPageSupport})
'
- 'frmUserBasics
+ 'TabPageMain
+ '
+ Me.TabPageMain.Controls.Add(Me.Label1)
+ Me.TabPageMain.Controls.Add(Me.Button3)
+ Me.TabPageMain.Controls.Add(Me.cmbLanguage)
+ Me.TabPageMain.ImageOptions.Image = CType(resources.GetObject("TabPageMain.ImageOptions.Image"), System.Drawing.Image)
+ Me.TabPageMain.Name = "TabPageMain"
+ Me.TabPageMain.Size = New System.Drawing.Size(700, 444)
+ Me.TabPageMain.Text = "Allgemein"
+ '
+ 'Label1
+ '
+ Me.Label1.AutoSize = True
+ Me.Label1.Location = New System.Drawing.Point(15, 21)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(91, 13)
+ Me.Label1.TabIndex = 53
+ Me.Label1.Text = "Aktuelle Sprache:"
+ '
+ 'Button3
+ '
+ Me.Button3.ImeMode = System.Windows.Forms.ImeMode.NoControl
+ Me.Button3.Location = New System.Drawing.Point(158, 35)
+ Me.Button3.Name = "Button3"
+ Me.Button3.Size = New System.Drawing.Size(134, 23)
+ Me.Button3.TabIndex = 52
+ Me.Button3.Text = "Sprache jetzt wechseln"
+ Me.Button3.UseVisualStyleBackColor = True
+ '
+ 'cmbLanguage
+ '
+ Me.cmbLanguage.FormattingEnabled = True
+ Me.cmbLanguage.Items.AddRange(New Object() {"de-DE", "en-US"})
+ Me.cmbLanguage.Location = New System.Drawing.Point(18, 37)
+ Me.cmbLanguage.Name = "cmbLanguage"
+ Me.cmbLanguage.Size = New System.Drawing.Size(134, 21)
+ Me.cmbLanguage.TabIndex = 51
+ '
+ 'frmConfigUser
'
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.TabControl1)
+ Me.Controls.Add(Me.XtraTabControl1)
Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
- Me.Name = "frmUserBasics"
+ Me.Name = "frmConfigUser"
Me.Text = "Grundeinstellungen User"
- Me.TabControl1.ResumeLayout(False)
- Me.TabPage1.ResumeLayout(False)
- Me.TabPage1.PerformLayout()
+ Me.TabPageSupport.ResumeLayout(False)
+ Me.TabPageSupport.PerformLayout()
+ CType(Me.XtraTabControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.XtraTabControl1.ResumeLayout(False)
+ Me.TabPageMain.ResumeLayout(False)
+ Me.TabPageMain.PerformLayout()
Me.ResumeLayout(False)
End Sub
- Friend WithEvents TabControl1 As TabControl
- Friend WithEvents TabPage1 As TabPage
- Friend WithEvents TabPage2 As TabPage
+ Friend WithEvents TabPageSupport As DevExpress.XtraTab.XtraTabPage
Friend WithEvents Button4 As Button
- Friend WithEvents chkLogErrorsOnly As CheckBox
- Friend WithEvents Button1 As Button
- Friend WithEvents btnApplicationFolder As Button
Friend WithEvents LinkLabel1 As LinkLabel
+ Friend WithEvents chkLogErrorsOnly As CheckBox
+ Friend WithEvents XtraTabControl1 As DevExpress.XtraTab.XtraTabControl
+ Friend WithEvents TabPageMain As DevExpress.XtraTab.XtraTabPage
Friend WithEvents Label1 As Label
Friend WithEvents Button3 As Button
Friend WithEvents cmbLanguage As ComboBox
+ Friend WithEvents btnLogFolder As DevExpress.XtraEditors.SimpleButton
+ Friend WithEvents btnAppFolder As DevExpress.XtraEditors.SimpleButton
End Class
diff --git a/EDMI_ClientSuite/frmUserBasics.resx b/EDMI_ClientSuite/frmConfigUser.resx
similarity index 97%
rename from EDMI_ClientSuite/frmUserBasics.resx
rename to EDMI_ClientSuite/frmConfigUser.resx
index cc0c9c2e..c4c2117d 100644
--- a/EDMI_ClientSuite/frmUserBasics.resx
+++ b/EDMI_ClientSuite/frmConfigUser.resx
@@ -118,6 +118,51 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAArdEVYdFRpdGxlAE9wZW47Rm9sZGVyO0JhcnM7Umli
+ Ym9uO1N0YW5kYXJkO0xvYWTxw8RjAAAAb0lEQVQ4T6XQ0Q2AIAwEUBbsMs7Q0ZzHFeqVRIJ6VQof7+fC
+ XUiLmS2hYQYNM4qqChjhOS31fICVL8JKvb+BSBueHUB3cQCGB+oxmWjgVjj2TcAC8hzwx1+Fl34gXYb2
+ g6ky1BtMl1295AoajrNyArCYwjN4ThJYAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAArdEVYdFRpdGxlAE9wZW47Rm9sZGVyO0JhcnM7Umli
+ Ym9uO1N0YW5kYXJkO0xvYWTxw8RjAAAAb0lEQVQ4T6XQ0Q2AIAwEUBbsMs7Q0ZzHFeqVRIJ6VQof7+fC
+ XUiLmS2hYQYNM4qqChjhOS31fICVL8JKvb+BSBueHUB3cQCGB+oxmWjgVjj2TcAC8hzwx1+Fl34gXYb2
+ g6ky1BtMl1295AoajrNyArCYwjN4ThJYAAAAAElFTkSuQmCC
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAARdEVYdFRpdGxlAEJ1ZztSZXBvcnQ7sbAXPQAAAc5J
+ REFUWEfFljFOw0AQRVMgEkHDPbgGbaDhBtyAO9AAHUhUuQOUtHRAuhRwBehAAiGBZP63ZqPZ3W/s2MYp
+ nmK/nT8zcRIpo6Io1oqUQyLl89FeHTvgyt3zms7XRKg5RErVwLEJHkDhHK/vAc987RI1h0ipGjiOAQem
+ CxCe+dolag6RUjVwzEHVAo/ORag5REoLlU2F/whngk+Q9gpnkQ9IyeIQFH7tC/iPIIVnaa9wFvmAlMQF
+ p3Y/Bqfg27yCZ2dgbJmpedzqOVKSEDQOwW3i/oK1zCxd2j8gJQLR9j3AXnKWlCw2+liiHE7ULClDAGyA
+ V6AaN4FZ9lhtAWKhA6AarwJ7yBkkEyju87NPKX9RnuiGBUngP4iWSBeICsFL4trwBqI35mdWLRC+uT/O
+ dSF6un5m1QK8Ju/OtYVPIPQrnZ9ZuYDdL5xry8J61S8QYLG9zkKoAzPfM0VKwgA4sSZdYA85g0jJAOjz
+ J1l+qdWsTLDQAqpRF+QSmWCRC5F9cJ24JtwAZr3L5mWCRS5Qbg22wJ25JrB2GzDrn2Y2LxMWygK4ngD+
+ 26n7R3QOJnX9ApnwgYqzXXABnsCXwetLwLMoY7nmCwyNlEMi5XAUo19RwjicG819swAAAABJRU5ErkJg
+ gg==
+
+
+
+
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAALdEVYdFRpdGxlAEhvbWU7HnRkOAAAATpJREFUWEft
+ ks0NwjAMRkHMxQhw7wIMwAhVJ+BH4oSEgBlgAObhwhUR7KqunMRO2zSUSw9Pbb7a+R4SE2PMX6lfiqKI
+ YVohfQuSQmAGnIED0FmirwCWXwFT0Vmij4BbLkos8rvhUE7ECmjlRC3xCwGpfAecnKyUgNJXSgGtHH8t
+ fvMklvltziUgs+7sIhAq5zNBCTjzO1sLSOVbQPrHByXg3ZpvI9ClnFAl4GnNNgnElBOiBGDthgT6lBON
+ EppAinIiKCEJpCwnVAlJ4MKGkL7lhCSxlwRWwIcNpSgnUILufQOZJICgxAbAQX4BQZc0oe0egQzPmgAf
+ drMyfz7WQXDG2al3+dkT4NCwlEulHJxx9xAt9wJkFBgFQgJtcPcQLfcCpLpI/BbLKBAjkBy3B/GCoRHD
+ IRHD4TCTL7ccmUyvvNxMAAAAAElFTkSuQmCC
+
+
AAABAAoAMDAQAAEABABoBgAApgAAACAgEAABAAQA6AIAAA4HAAAQEBAAAQAEACgBAAD2CQAAMDAAAAEA
diff --git a/EDMI_ClientSuite/frmConfigUser.vb b/EDMI_ClientSuite/frmConfigUser.vb
new file mode 100644
index 00000000..9f083691
--- /dev/null
+++ b/EDMI_ClientSuite/frmConfigUser.vb
@@ -0,0 +1,34 @@
+Imports System.Configuration
+Imports System.IO
+Imports DigitalData.Modules.Logging
+Public Class frmConfigUser
+ Private _Logger As Logger
+
+ Private Sub LinkLabel1_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel1.LinkClicked
+ ' Specify that the link was visited.
+ Me.LinkLabel1.LinkVisited = True
+ ' Navigate to a URL.
+ System.Diagnostics.Process.Start("http://www.didalog.de/Support")
+ End Sub
+
+ Private Sub frmUserBasics_Load(sender As Object, e As EventArgs) Handles Me.Load
+ _Logger = My.LogConfig.GetLogger()
+
+ chkLogErrorsOnly.Checked = Not My.Config.LogDebug
+ End Sub
+
+ Private Sub btnLogFolder_Click(sender As Object, e As EventArgs) Handles btnLogFolder.Click
+ Process.Start(My.LogConfig.LogDirectory)
+ End Sub
+
+ Private Sub btnAppFolder_Click(sender As Object, e As EventArgs) Handles btnAppFolder.Click
+ Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))
+ End Sub
+
+ Private Sub chkLogErrorsOnly_CheckedChanged(sender As Object, e As EventArgs) Handles chkLogErrorsOnly.CheckedChanged
+ Dim oLogDebug = Not chkLogErrorsOnly.Checked
+ My.LogConfig.Debug = oLogDebug
+ My.Config.LogDebug = oLogDebug
+ My.ConfigManager.Save()
+ End Sub
+End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmFileTest.vb b/EDMI_ClientSuite/frmFileTest.vb
index a8130db6..0928c1c5 100644
--- a/EDMI_ClientSuite/frmFileTest.vb
+++ b/EDMI_ClientSuite/frmFileTest.vb
@@ -3,19 +3,17 @@ Imports DigitalData.Modules.Logging
Public Class frmFileTest
Private _fileOp As FileOp
- Private _LogConfig As LogConfig
Private _Logger As Logger
- Public Sub New(LogConfig As LogConfig)
+ Public Sub New()
InitializeComponent()
- _LogConfig = LogConfig
- _Logger = LogConfig.GetLogger()
+ _Logger = My.LogConfig.GetLogger()
End Sub
Private Sub frmFileTest_Load(sender As Object, e As EventArgs) Handles Me.Load
Try
- _fileOp = New FileOp(_LogConfig, My.Settings.EDM_NetworkService_Adress)
+ _fileOp = New FileOp(My.LogConfig, My.Settings.EDM_NetworkService_Adress)
Catch ex As Exception
_Logger.Warn($"Unexpected error in frmFileTest_Load: {ex.Message}")
diff --git a/EDMI_ClientSuite/frmMain.Designer.vb b/EDMI_ClientSuite/frmMain.Designer.vb
index a2dcb50c..489d0300 100644
--- a/EDMI_ClientSuite/frmMain.Designer.vb
+++ b/EDMI_ClientSuite/frmMain.Designer.vb
@@ -21,10 +21,12 @@ Partial Class frmMain
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
+ Dim PushTransition1 As DevExpress.Utils.Animation.PushTransition = New DevExpress.Utils.Animation.PushTransition()
Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.MainMenu = New DevExpress.XtraBars.Ribbon.ApplicationMenu(Me.components)
Me.BarButtonExit = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonUserSettings = New DevExpress.XtraBars.BarButtonItem()
+ Me.BarButtonConnectionSettings = New DevExpress.XtraBars.BarButtonItem()
Me.LabelCurrentUser = New DevExpress.XtraBars.BarStaticItem()
Me.LabelCurrentMachine = New DevExpress.XtraBars.BarStaticItem()
Me.LabelCurrentVersion = New DevExpress.XtraBars.BarStaticItem()
@@ -34,6 +36,11 @@ Partial Class frmMain
Me.BarButtonDashboard = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonEntityDesigner = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonDeleteControl = New DevExpress.XtraBars.BarButtonItem()
+ Me.LabelCurrentLanguage = New DevExpress.XtraBars.BarStaticItem()
+ Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
+ Me.BarWorkspaceMenuItem1 = New DevExpress.XtraBars.BarWorkspaceMenuItem()
+ Me.WorkspaceManager1 = New DevExpress.Utils.WorkspaceManager()
+ Me.LabelServiceOnline = New DevExpress.XtraBars.BarStaticItem()
Me.RibbonPageCategoryEntityDesigner = New DevExpress.XtraBars.Ribbon.RibbonPageCategory()
Me.RibbonPageControlActions = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup5 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
@@ -54,7 +61,7 @@ Partial Class frmMain
Me.Label1 = New System.Windows.Forms.Label()
Me.DockPanelProcessManager = New DevExpress.XtraBars.Docking.DockPanel()
Me.DockPanel2_Container = New DevExpress.XtraBars.Docking.ControlContainer()
- Me.ProcessManagerOverview = New EDMI_ClientSuite.ProcessManagerOverview()
+ Me.ProcessManagerWidget = New DigitalData.GUIs.ClientSuite.ProcessManagerWidget()
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.MainMenu, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DocumentManager, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -71,12 +78,13 @@ 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.BarButtonDock1, Me.SkinDropDownButtonItem1, Me.BarButtonDashboard, Me.BarButtonEntityDesigner, Me.BarButtonDeleteControl})
+ Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarButtonExit, Me.BarButtonUserSettings, Me.LabelCurrentUser, Me.LabelCurrentMachine, Me.LabelCurrentVersion, Me.BarButtonItem1, Me.BarButtonDock1, Me.SkinDropDownButtonItem1, Me.BarButtonDashboard, Me.BarButtonEntityDesigner, Me.BarButtonDeleteControl, Me.BarButtonConnectionSettings, Me.LabelCurrentLanguage, Me.BarButtonItem2, Me.BarWorkspaceMenuItem1, Me.LabelServiceOnline})
Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
- Me.RibbonControl.MaxItemId = 14
+ Me.RibbonControl.MaxItemId = 19
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.PageCategories.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageCategory() {Me.RibbonPageCategoryEntityDesigner})
Me.RibbonControl.PageHeaderItemLinks.Add(Me.SkinDropDownButtonItem1)
+ Me.RibbonControl.PageHeaderItemLinks.Add(Me.BarWorkspaceMenuItem1)
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageStart, Me.RibbonPageView, Me.RibbonPageWorkflow})
Me.RibbonControl.Size = New System.Drawing.Size(1139, 146)
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
@@ -85,6 +93,7 @@ Partial Class frmMain
'
Me.MainMenu.ItemLinks.Add(Me.BarButtonExit)
Me.MainMenu.ItemLinks.Add(Me.BarButtonUserSettings)
+ Me.MainMenu.ItemLinks.Add(Me.BarButtonConnectionSettings)
Me.MainMenu.Name = "MainMenu"
Me.MainMenu.Ribbon = Me.RibbonControl
'
@@ -97,23 +106,28 @@ Partial Class frmMain
'
'BarButtonUserSettings
'
- Me.BarButtonUserSettings.Caption = "Einstellungen"
+ Me.BarButtonUserSettings.Caption = "Benutzereinstellungen"
Me.BarButtonUserSettings.Id = 2
Me.BarButtonUserSettings.ImageOptions.Image = CType(resources.GetObject("BarButtonUserSettings.ImageOptions.Image"), System.Drawing.Image)
Me.BarButtonUserSettings.Name = "BarButtonUserSettings"
'
+ 'BarButtonConnectionSettings
+ '
+ Me.BarButtonConnectionSettings.Caption = "Verbindungseinstellungen"
+ Me.BarButtonConnectionSettings.Id = 14
+ Me.BarButtonConnectionSettings.ImageOptions.Image = CType(resources.GetObject("BarButtonConnectionSettings.ImageOptions.Image"), System.Drawing.Image)
+ Me.BarButtonConnectionSettings.Name = "BarButtonConnectionSettings"
+ '
'LabelCurrentUser
'
Me.LabelCurrentUser.Caption = "Current User"
Me.LabelCurrentUser.Id = 3
- Me.LabelCurrentUser.ImageOptions.Image = CType(resources.GetObject("LabelCurrentUser.ImageOptions.Image"), System.Drawing.Image)
Me.LabelCurrentUser.Name = "LabelCurrentUser"
'
'LabelCurrentMachine
'
Me.LabelCurrentMachine.Caption = "Current Machine"
Me.LabelCurrentMachine.Id = 4
- Me.LabelCurrentMachine.ImageOptions.Image = CType(resources.GetObject("LabelCurrentMachine.ImageOptions.Image"), System.Drawing.Image)
Me.LabelCurrentMachine.Name = "LabelCurrentMachine"
'
'LabelCurrentVersion
@@ -121,7 +135,6 @@ Partial Class frmMain
Me.LabelCurrentVersion.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right
Me.LabelCurrentVersion.Caption = "Current Version"
Me.LabelCurrentVersion.Id = 5
- Me.LabelCurrentVersion.ImageOptions.Image = CType(resources.GetObject("LabelCurrentVersion.ImageOptions.Image"), System.Drawing.Image)
Me.LabelCurrentVersion.Name = "LabelCurrentVersion"
'
'BarButtonItem1
@@ -153,8 +166,8 @@ Partial Class frmMain
'
Me.BarButtonEntityDesigner.Caption = "Entitäten Designer"
Me.BarButtonEntityDesigner.Id = 12
- Me.BarButtonEntityDesigner.ImageOptions.Image = CType(resources.GetObject("BarButtonItem2.ImageOptions.Image"), System.Drawing.Image)
- Me.BarButtonEntityDesigner.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.LargeImage"), System.Drawing.Image)
+ 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
@@ -165,9 +178,40 @@ Partial Class frmMain
Me.BarButtonDeleteControl.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonDeleteControl.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonDeleteControl.Name = "BarButtonDeleteControl"
'
+ 'LabelCurrentLanguage
+ '
+ Me.LabelCurrentLanguage.Caption = "CurrentLanguage"
+ Me.LabelCurrentLanguage.Id = 15
+ Me.LabelCurrentLanguage.Name = "LabelCurrentLanguage"
+ '
+ 'BarButtonItem2
+ '
+ Me.BarButtonItem2.Caption = "License Test"
+ Me.BarButtonItem2.Id = 16
+ Me.BarButtonItem2.Name = "BarButtonItem2"
+ '
+ 'BarWorkspaceMenuItem1
+ '
+ Me.BarWorkspaceMenuItem1.Caption = "BarWorkspaceMenuItem1"
+ Me.BarWorkspaceMenuItem1.Id = 17
+ Me.BarWorkspaceMenuItem1.Name = "BarWorkspaceMenuItem1"
+ Me.BarWorkspaceMenuItem1.WorkspaceManager = Me.WorkspaceManager1
+ '
+ 'WorkspaceManager1
+ '
+ Me.WorkspaceManager1.TargetControl = Me
+ Me.WorkspaceManager1.TransitionType = PushTransition1
+ '
+ 'LabelServiceOnline
+ '
+ Me.LabelServiceOnline.Caption = "BarStaticItem1"
+ Me.LabelServiceOnline.Id = 18
+ Me.LabelServiceOnline.Name = "LabelServiceOnline"
+ '
'RibbonPageCategoryEntityDesigner
'
Me.RibbonPageCategoryEntityDesigner.AutoStretchPageHeaders = True
+ Me.RibbonPageCategoryEntityDesigner.Color = System.Drawing.Color.FromArgb(CType(CType(192, Byte), Integer), CType(CType(0, Byte), Integer), CType(CType(0, Byte), Integer))
Me.RibbonPageCategoryEntityDesigner.Name = "RibbonPageCategoryEntityDesigner"
Me.RibbonPageCategoryEntityDesigner.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPageControlActions})
Me.RibbonPageCategoryEntityDesigner.Text = "Entitäten Designer"
@@ -201,6 +245,7 @@ Partial Class frmMain
'RibbonPageGroup3
'
Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem1)
+ Me.RibbonPageGroup3.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
Me.RibbonPageGroup3.Text = "RibbonPageGroup3"
'
@@ -233,6 +278,8 @@ Partial Class frmMain
Me.RibbonStatusBar.ItemLinks.Add(Me.LabelCurrentUser)
Me.RibbonStatusBar.ItemLinks.Add(Me.LabelCurrentMachine)
Me.RibbonStatusBar.ItemLinks.Add(Me.LabelCurrentVersion)
+ Me.RibbonStatusBar.ItemLinks.Add(Me.LabelCurrentLanguage)
+ Me.RibbonStatusBar.ItemLinks.Add(Me.LabelServiceOnline)
Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 556)
Me.RibbonStatusBar.Name = "RibbonStatusBar"
Me.RibbonStatusBar.Ribbon = Me.RibbonControl
@@ -315,20 +362,20 @@ Partial Class frmMain
'
'DockPanel2_Container
'
- Me.DockPanel2_Container.Controls.Add(Me.ProcessManagerOverview)
+ Me.DockPanel2_Container.Controls.Add(Me.ProcessManagerWidget)
Me.DockPanel2_Container.Location = New System.Drawing.Point(5, 38)
Me.DockPanel2_Container.Name = "DockPanel2_Container"
Me.DockPanel2_Container.Size = New System.Drawing.Size(337, 163)
Me.DockPanel2_Container.TabIndex = 0
'
- 'ProcessManagerOverview
+ 'ProcessManagerWidget
'
- Me.ProcessManagerOverview.DataSource = Nothing
- Me.ProcessManagerOverview.Dock = System.Windows.Forms.DockStyle.Fill
- Me.ProcessManagerOverview.Location = New System.Drawing.Point(0, 0)
- Me.ProcessManagerOverview.Name = "ProcessManagerOverview"
- Me.ProcessManagerOverview.Size = New System.Drawing.Size(337, 163)
- Me.ProcessManagerOverview.TabIndex = 0
+ Me.ProcessManagerWidget.DataSource = Nothing
+ Me.ProcessManagerWidget.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.ProcessManagerWidget.Location = New System.Drawing.Point(0, 0)
+ Me.ProcessManagerWidget.Name = "ProcessManagerWidget"
+ Me.ProcessManagerWidget.Size = New System.Drawing.Size(337, 163)
+ Me.ProcessManagerWidget.TabIndex = 0
'
'frmMain
'
@@ -385,7 +432,7 @@ Partial Class frmMain
Friend WithEvents SkinDropDownButtonItem1 As DevExpress.XtraBars.SkinDropDownButtonItem
Friend WithEvents BarButtonDashboard As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
- Friend WithEvents ProcessManagerOverview As ProcessManagerOverview
+ Friend WithEvents ProcessManagerWidget As ProcessManagerWidget
Friend WithEvents RibbonPageWorkflow As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup4 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarButtonEntityDesigner As DevExpress.XtraBars.BarButtonItem
@@ -393,4 +440,10 @@ Partial Class frmMain
Friend WithEvents RibbonPageControlActions As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup5 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents BarButtonDeleteControl As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents BarButtonConnectionSettings As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents LabelCurrentLanguage As DevExpress.XtraBars.BarStaticItem
+ Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents BarWorkspaceMenuItem1 As DevExpress.XtraBars.BarWorkspaceMenuItem
+ Friend WithEvents WorkspaceManager1 As DevExpress.Utils.WorkspaceManager
+ Friend WithEvents LabelServiceOnline As DevExpress.XtraBars.BarStaticItem
End Class
diff --git a/EDMI_ClientSuite/frmMain.resx b/EDMI_ClientSuite/frmMain.resx
index a62b3c60..ffd1364b 100644
--- a/EDMI_ClientSuite/frmMain.resx
+++ b/EDMI_ClientSuite/frmMain.resx
@@ -228,164 +228,68 @@
QmCC
-
-
- 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
+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
- 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
- MSB7/gewyEBZy6qOBQAAAABJRU5ErkJggg==
-
-
-
-
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAATdEVYdFRpdGxlAFppcENvZGU7Q29kZTtJsi+oAAAF
- pklEQVRYR8WX+XONdxjFU9101E63nyshqKjoH1JVVa1aat9LdUyNVkOHJExWsu9LY0siFLUkV1NMtRhS
- lFpqSSKR3DXJzaXz9Jzn+773XhkzLTMw85ln+b7fc477Im6EiDxTHrp8mvDXc6AXeP4pQ09669Ab9AGv
- 9qDvY9LvP6D2K+AFENF7c47DkZz/izwx8gxJJL8etV4SM2uPWiEi+vCh7sA/EgjcV+ye1cDepuf8aPgt
- Nuf8zD8A/LQi+poA98XbGRBfR0C8YTww4zz8zNvRHew91mwqZh+xZtbg3C3+7vuSmHWUAfozQL9gAOuy
- Fw8b0QcNbAHTm3PdoXfbZzobuAvH40UF/u57Ep/pYIABGiApt14/lvDLDZfbZI/jb4vrUoNaw1p3XdJr
- zpjnIGaLpleflvFLSuW9xaUyniwqldhFJaBU0qpP4Rm/uHwAlQE2bDnCAAMZoD/fBz8WO+m5S21qZLgm
- u2uvSzVqdS37a2qQBkM+S0H2sQthuBCGSrGMIwuKJRawpladEpcHATxd0uW/J9+nHQoFSMxymABMCWhE
- 2D8MGsQuKNHeCcYtKFKc3i5xwoDQzO7fnVcIcI5du9svnQgQl3qQAQYxwID4jDpNpQkhUnnkqlQevqJ9
- UIxmlui4+UUqqgZuGMwtlLHACXHu2q19u0XM7AIZC+yZAdYmHQgF2LilVgOoAR7YeeiK7Dx4xYhQsEcd
- OxeCcwqDgjFzCtTEntvcnWF0yZhZeRID2lzmrLMrIGs27WOAwRpgffphTWUud8m2A39Jxf7L2ofolHZL
- IGZ2vowBbS5jMubzPOUuDbG7S6yevDMzV9E96ECA1fF7gwEGxqUcRICAivFC+Y+XpHzfJRXhBSPaERSn
- mRHs0FkNZpi5FXMrqxPPOnEORk/LBjnYcd+hAVZtqAkF4Pvg0k544myTlOz5E1yUkpqLUgyKai5I0W7D
- 6Ok5klB+whLsRH9cRsEkr/K8kkt2/SG5OxskZ1eDjJqaJRvLjklLuw8wQLesXF/NAEMYYNA3eB8awEp4
- /EyjFFZfkMIqQ0HVeSmovGAM0I/6LEsSfzghLU6fPp+IMCOnZkoODLO3G7LItgbJBNGfZEpC2XEToM0n
- vs5uWRFXGQqwOmEvlgF9oBXo72LX+WBiU31yx+qjYTby00xr55ORMKAJ+yAwMtUr0VO2yoiPt5odZi8C
- LFu7gwGGMsDgVRt2ayr7sv07MRcssG+2BKKnZCicyQjLoBlnZscaYvjkLUrTXcyAARav2R4KsHJ9lS4p
- zguZFecko+Ks9vaOF1mbgBE0hpxHTE43BpzxnMETrMMnpUsUMDsPfrb4ZeHXFQzwGgMMWfFdJZbdakKR
- tLIzin3BEBKN+giCoNE6i5qUpjS2enXX2ArsCiI/TJWoiTx3y23MHgSYt6o8FGDZtzs0FcV4MaX4tCSD
- JkuAaG+JRgYNrRnihD0NaGTOaOiWyA9SQKqe3W5xa4A5X5UxwOsMMHQJ3geXtuBPx65JUuHvsrkAoG5i
- BZvyfpNEEDkxVdblOyBGQQ/6ozIMJsNgYmoYE1Lk7QnJsi6vTm7B/FaLCz/E/DLry5JQAL4PD5ZMa4vu
- r78qCXknJSHX5leJzwHZJyUuz6FCRtCIxuU6LDNjOuz9ZGDM43JhfsclN/HsTVQGmLm8mAHe0AB8HwxA
- sdt3IKjAgNhG2PGyfXYzWEO9/Qxnrc32ueEGZ+D2dcn0ZYWhAHwfXNoXQ8KGnrMNBW+w6uxUce3Da7Mz
- DM4u/Sk7bWkowBC+DwZw44DVZfVarZmXgnur1/qYTFtawAD6t6Df1MXZdTOXF8kMvBetX7C3KuDH9QC4
- bFcKPQ5T5mc44K3/J3yJIQD/VeKfSn4s/5c3H4G3LNjTh+YvA/2KxG8oLwKGeVLQzIYzPXvZXxD5He1Z
- 8Ky/HUvEvynFkqiPC+j6AAAAAElFTkSuQmCC
+ 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
- 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
+ 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
- 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
+ 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
+ IRHD4TCTL7ccmUyvvNxMAAAAAElFTkSuQmCC
-
+
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAADXRFWHRUaXRsZQBXaXphcmQ7
- ySU3BgAAATVJREFUOE+lk81Kw0AURoOv1Bdw5c6HKCiIPwh9ABcSxIUE1KUrdyriSsuAgmIUBBHcuBJ3
- Ndg0VNuFiE3m897pJM4k0yB44Esmyb1nZkLiAfhXioHv+6iJ1OeG2cyxBAVS6sEv/DwIgpeyxOscNKco
- MzJLuQ6jQYT4YkONTfQE32WJOpDgMTpZRhLu4vVoHnTNxRYsMENYgp1YLKF3voJ+2ELnsAmZjbjIiUsQ
- xGIR/ZuWytvpgtpG9jXkwgqWgJqnKWlyuVoIeDXR8RyS621ayfjdmJQFm5R2V6ypmbttWsndHkT4gOdo
- wIUVKlsYR6J3taVe4tntExdgdl04JU4B30w/P/B+v6+auJlxSSYKFPojqpPUCwxySZ5c8mcBM0lCVAWu
- MGWJxhaYoSJXGhQWGD8TvB9sYiYvp9hqZQAAAABJRU5ErkJggg==
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAANdEVYdFRpdGxlAFdpemFyZDvJJTcGAAABNUlEQVQ4
+ T6WTzUrDQBRGg6/UF3DlzocoKIg/CH0AFxLEhQTUpSt3KuJKy4CCYhQEEdy4Enc12DRU24WITebz3ukk
+ ziTTIHjgSybJvWdmQuIB+FeKge/7qInU54bZzLEEBVLqwS/8PAiCl7LE6xw0pygzMku5DqNBhPhiQ41N
+ 9ATfZYk6kOAxOllGEu7i9WgedM3FFiwwQ1iCnVgsoXe+gn7YQuewCZmNuMiJSxDEYhH9m5bK2+mC2kb2
+ NeTCCpaAmqcpaXK5Wgh4NdHxHJLrbVrJ+N2YlAWblHZXrKmZu21ayd0eRPiA52jAhRUqWxhHone1pV7i
+ 2e0TF2B2XTglTgHfTD8/8H6/r5q4mXFJJgoU+iOqk9QLDHJJnlzyZwEzSUJUBa4wZYnGFpihIlcaFBYY
+ PxO8H2xiJi+n2GplAAAAAElFTkSuQmCC
-
+
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAADXRFWHRUaXRsZQBXaXphcmQ7
- ySU3BgAAAjpJREFUWEfFlE1LW0EUht2U4i/oX3DXhav+BaH/wE0Fq6G1opsq3Uk2IsFNt6HgqoVSWzV+
- YKuiblqE2m0lFqlNriYmCCaSmOT4niQj9+N478w13r7wMHdOZuY8XCa3i4j+K2IxSsRilIjFKBGLing8
- Tob8BX2A93qQeohFBTZh0A+vTyQSV8lksg9T91mOuUIsKsIIpNNpUSIyAY4kcWeBSu53++n22Ne7JbQE
- jt8/6wePbDVqVMtU3Juj4w8DPPWNXYDTlqiyhK7ACqiBDRArH32n7JdxOknFCHMs8Y9bgKMk8JvnYjKO
- CZpMcLPct1dkLQ1TdmGI8ngu7I5rC/iQwRJHP8YxQZMnmU+DzYZudAT8whKIox/jmKDJA3BZ2BnzCPAb
- Kf54R416DUvNoyswaC0Oe5orWCK3MU31ygWWmyVQAM17QCm/OSo2Z/Jbo3SyHCMrNUG1izy26cdXAI0f
- gv3T1ReUWx+5uXiK07WXxHfDSk3S+a+PVC38wTazBAk8BjMgCebBNmgoAf4GVM4OsZTo6dRqczSN1h2w
- A4G3Fv8lv+KNbM+i1MpB5rwpwaNJwgh0W8tvKPv5OV3+++loGkbCWICpFo9w81/je1zHtPX6w0qEEgBU
- K53x0Iy7qYlEKIH2JkfCSnRMgGNvyqPCT6KjAhx38yCJjgtwTCTuRYCjKxFaIAhOkIRtraeHp3AbODCI
- XiCJ9ErnKcSiBA7SQZRwn2VHLErgIF3cEpG+AYWS4FE8rwV1XQOqvYU8ut/neQAAAABJRU5ErkJggg==
+ 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
@@ -411,6 +315,9 @@
UrQgwP9Df+6iycr/ls9EijOR4kykOBMpzqPsfgDZ5w1jF/MagwAAAABJRU5ErkJggg==
+
+ 412, 17
+
17, 17
diff --git a/EDMI_ClientSuite/frmMain.vb b/EDMI_ClientSuite/frmMain.vb
index 317ad4ae..804248fb 100644
--- a/EDMI_ClientSuite/frmMain.vb
+++ b/EDMI_ClientSuite/frmMain.vb
@@ -1,15 +1,49 @@
-Imports DevExpress.XtraBars.Docking2010.Views
-Imports DevExpress.XtraBars.Docking2010
-Imports DevExpress.XtraBars.Docking2010.Views.Widget
+Imports DevExpress.XtraBars.Docking2010
Imports System.ComponentModel
-Imports EDMI_ClientSuite.ClassLayout
+Imports DigitalData.GUIs.ClientSuite.ClassLayout
Imports System.IO
+Imports DigitalData.Modules.Logging
+Imports DigitalData.Modules.License
Public Class frmMain
+ Private _Logger As Logger
+ Private _Timer As ClassTimer
+
+ Public Sub New()
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+
+ ' Show splashscreen
+ frmSplash.ShowDialog()
+
+ ' Initialize Form Related Variables
+ My.MainForm = Me
+ End Sub
+
+ Private Sub SetOnlineLabel()
+ If My.Application.Service.Online Then
+ LabelServiceOnline.Caption = "Service Online"
+ LabelServiceOnline.ItemAppearance.Normal.ForeColor = Color.Green
+ Else
+ LabelServiceOnline.Caption = "Service Offline"
+ LabelServiceOnline.ItemAppearance.Normal.ForeColor = Color.Red
+ End If
+ End Sub
+
+ Private Sub HandleOnlineChanged(sender As Object, Online As Boolean)
+ SetOnlineLabel()
+ End Sub
+
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
- LabelCurrentUser.Caption = Environment.UserName
- LabelCurrentMachine.Caption = Environment.MachineName
+ ' Initialize Main Timer
+ _Timer = New ClassTimer(My.LogConfig, Me, My.Config.HeartbeatInterval)
+ AddHandler _Timer.OnlineChanged, AddressOf HandleOnlineChanged
+ SetOnlineLabel()
+
+ LabelCurrentUser.Caption = My.Application.User.UserName
+ LabelCurrentMachine.Caption = My.Application.User.MachineName
LabelCurrentVersion.Caption = My.Application.Info.Version.ToString
+ LabelCurrentLanguage.Caption = My.Application.User.Language
Dim oDashboard = New frmDashboard()
oDashboard.MdiParent = DocumentManager.MdiParent
@@ -25,11 +59,10 @@ Public Class frmMain
oDataTable.Rows.Add(oRow)
- ProcessManagerOverview.DataSource = oDataTable
- AddHandler ProcessManagerOverview.RowDoubleClicked, Sub(RowView As DataRowView)
- MsgBox($"Clicked on Document {RowView.Row.Item("DocName")}")
- End Sub
-
+ ProcessManagerWidget.DataSource = oDataTable
+ AddHandler ProcessManagerWidget.RowDoubleClicked, Sub(RowView As DataRowView)
+ MsgBox($"Clicked on Document {RowView.Row.Item("DocName")}")
+ End Sub
LoadLayout()
End Sub
@@ -39,21 +72,21 @@ Public Class frmMain
End Sub
Private Sub LoadLayout()
- Dim oLayoutPathForDockManager As String = GetLayoutPath(LayoutName.LayoutMain, LayoutComponent.DockManager)
- Dim oLayoutPathForDocumentManager As String = GetLayoutPath(LayoutName.LayoutMain, LayoutComponent.DocumentManager)
+ Dim oLayoutPathForDockManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DockManager)
+ Dim oLayoutPathForDocumentManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DocumentManager)
- If IO.File.Exists(oLayoutPathForDockManager) Then
+ If File.Exists(oLayoutPathForDockManager) Then
DockManager.RestoreLayoutFromXml(oLayoutPathForDockManager)
End If
- If IO.File.Exists(oLayoutPathForDocumentManager) Then
+ If File.Exists(oLayoutPathForDocumentManager) Then
DocumentManager.View.RestoreLayoutFromXml(oLayoutPathForDocumentManager)
End If
End Sub
Private Sub SaveLayout()
- Dim oLayoutPathForDockManager As String = GetLayoutPath(LayoutName.LayoutMain, LayoutComponent.DockManager)
- Dim oLayoutPathForDocumentManager As String = GetLayoutPath(LayoutName.LayoutMain, LayoutComponent.DocumentManager)
- Dim oDirectory As String = Path.GetDirectoryName(oLayoutPathForDockManager)
+ Dim oLayoutPathForDockManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DockManager)
+ Dim oLayoutPathForDocumentManager As String = GetLayoutPath(GroupName.LayoutMain, LayoutComponent.DocumentManager)
+ Dim oDirectory As String = GetLayoutDirectory()
If Not Directory.Exists(oDirectory) Then
Directory.CreateDirectory(oDirectory)
@@ -64,7 +97,7 @@ Public Class frmMain
End Sub
Private Sub BarButtonUserSettings_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonUserSettings.ItemClick
- Dim frm As New frmUserBasics()
+ Dim frm As New frmConfigUser()
frm.MdiParent = DocumentManager.MdiParent
frm.Show()
End Sub
@@ -76,7 +109,7 @@ Public Class frmMain
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
- Dim frm As New frmFileTest(MyLogConfig)
+ Dim frm As New frmFileTest()
frm.MdiParent = DocumentManager.MdiParent
frm.Show()
End Sub
@@ -85,6 +118,35 @@ Public Class frmMain
Dim frm As New frmEntityDesigner()
frm.MdiParent = DocumentManager.MdiParent
frm.Show()
+
RibbonPageCategoryEntityDesigner.Visible = True
End Sub
+
+ Private Sub BarButtonConnectionSettings_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonConnectionSettings.ItemClick
+ Dim frm As New frmConfigService()
+ frm.MdiParent = DocumentManager.MdiParent
+ frm.Show()
+ End Sub
+
+ Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
+ Dim oUser1 = LicenseCreator.NewUser(UserType.PowerUser, 5)
+ Dim oUser2 = LicenseCreator.NewUser(UserType.WriteOnly, 5, Date.Now)
+ Dim oUsers As New List(Of LicenseModuleUser)
+ oUsers.Add(oUser1)
+ oUsers.Add(oUser2)
+
+ Dim oModule = LicenseCreator.NewModule("EDMI", oUsers)
+ Dim oModules As New List(Of LicenseModule)
+ oModules.Add(oModule)
+
+ Dim oLicense = LicenseCreator.NewLicense(oModules)
+
+ Dim oLicenseFile As New LicenseFile(My.LogConfig, "E:\")
+ oLicenseFile.SaveFile(oLicense)
+
+ Dim oSerializer As New Xml.Serialization.XmlSerializer(GetType(LicenseSchema))
+ Dim oLicense2 As LicenseSchema
+
+ oLicense2 = oLicenseFile.LoadFile()
+ End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmSplash.designer.vb b/EDMI_ClientSuite/frmSplash.designer.vb
index a968c346..09ee2189 100644
--- a/EDMI_ClientSuite/frmSplash.designer.vb
+++ b/EDMI_ClientSuite/frmSplash.designer.vb
@@ -97,7 +97,7 @@ Partial Class frmSplash
'
'PictureBox1
'
- Me.PictureBox1.Image = Global.EDMI_ClientSuite.My.Resources.Resources.iconfinder_Gowalla_324477
+ Me.PictureBox1.Image = Global.DigitalData.GUIs.ClientSuite.My.Resources.Resources.iconfinder_Gowalla_324477
Me.PictureBox1.Location = New System.Drawing.Point(0, -1)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(520, 374)
diff --git a/EDMI_ClientSuite/frmSplash.vb b/EDMI_ClientSuite/frmSplash.vb
index 496e0f6f..15d29bdd 100644
--- a/EDMI_ClientSuite/frmSplash.vb
+++ b/EDMI_ClientSuite/frmSplash.vb
@@ -1,8 +1,8 @@
Imports System.ComponentModel
Imports System.ServiceModel
+Imports System.Threading
Imports DigitalData.Modules.Logging
-Imports DigitalData.Modules.Logging.LogConfig
-Imports EDMI_ClientSuite.NetworkService_DDEDM
+Imports DigitalData.Modules.EDMIFileOps.EDMIServiceReference
Public NotInheritable Class frmSplash
Private _Worker As New BackgroundWorker()
@@ -13,7 +13,7 @@ Public NotInheritable Class frmSplash
Private _CurrentRetry As Integer = 0
Private Const SLEEP_TIME = 600
- Private Const INIT_STEPS = 1
+ Private Const INIT_STEPS = 4
Private Const MAX_RETRIES = 10
Private Const OPEN_TIMEOUT = 10
@@ -23,13 +23,38 @@ Public NotInheritable Class frmSplash
lblVersion.Text = String.Format("Version {0}", My.Application.Info.Version.ToString)
BringToFront()
- StartWorker()
+
+ Dim oService As New ClassService(My.LogConfig)
+ Dim oConnectionURLExists As Boolean = My.Config.ServiceConnection <> String.Empty
+
+ 'Dim oInit As New ClassInit()
+ 'Dim oConnectionURLExists = oInit.TestConnectionURLExists()
+
+ If Not oConnectionURLExists Then
+ Dim oResult = frmConfigService.ShowDialog()
+
+ If oResult = DialogResult.Cancel Then
+ MsgBox("Es wurde keine Dienst-Verbindungsurl hinterlegt. Die Anwendung wird beendet.")
+ Application.Exit()
+ Else
+ StartWorker()
+ End If
+ Else
+ StartWorker()
+ End If
End Sub
Private Function SetProgress(_step As Integer)
Return _step * (100 / INIT_STEPS)
End Function
+#Region "Worker"
+ Private Enum WorkerResult
+ AllGood
+ ServiceOffline
+ End Enum
+
+
Private Sub StartWorker()
AddHandler _Worker.DoWork, AddressOf bw_DoWork
AddHandler _Worker.ProgressChanged, AddressOf bw_ProgressChanged
@@ -39,35 +64,38 @@ Public NotInheritable Class frmSplash
_Worker.RunWorkerAsync()
End Sub
-#Region "Worker"
- Private Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)
- Dim oInit As ClassInit
+ Private Async Sub bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs)
+ Dim oService As New ClassService(My.LogConfig)
- Try
- oInit = New ClassInit()
- My.LogConfig = oInit._LogConfig
- _Logger = My.LogConfig.GetLogger()
- Catch ex As Exception
- Throw New Exception($"Error while initializing Logger: {ex.Message}", ex)
- End Try
-
- '------------------
_Worker.ReportProgress(SetProgress(1), "Connecting to service..")
- Try
- My.ChannelFactory = oInit.CreateService()
- My.Channel = My.ChannelFactory.CreateChannel()
- AddHandler My.Channel.Faulted, Sub()
- _Logger.Error("Could not connect to service")
- Throw New Exception("Could not connect to service")
- End Sub
- My.Channel.Open()
- Catch ex As Exception
- Throw New Exception($"Error while connectiong to service: {ex.Message}", ex)
- End Try
- System.Threading.Thread.Sleep(SLEEP_TIME)
+ Dim oConnectionSuccessful = False
+
+ e.Result = WorkerResult.AllGood
+
+ _ChannelFactory = oService.GetChannelFactory()
+ _Channel = _ChannelFactory.CreateChannel()
+
+ 'Dim oServiceOnline = Await oService.TestConnectionAsync()
+ Dim oServiceState = oService.TestConnection()
+
+ If oServiceState <> ClassService.ConnectionTestResult.Successful Then
+ e.Result = WorkerResult.ServiceOffline
+ Return
+ End If
+
+ Thread.Sleep(SLEEP_TIME)
' TODO: Initialize Usersettings and populate My.Application.User
+
+ _Worker.ReportProgress(SetProgress(2), "Initializing User Settings..")
+ Thread.Sleep(SLEEP_TIME)
+
+ _Worker.ReportProgress(SetProgress(3), "Connecting to mainframe..")
+ Thread.Sleep(SLEEP_TIME)
+
+ _Worker.ReportProgress(SetProgress(4), "Setting up neural network..")
+ Thread.Sleep(SLEEP_TIME)
End Sub
Private Sub bw_ProgressChanged(sender As Object, e As System.ComponentModel.ProgressChangedEventArgs)
@@ -78,11 +106,25 @@ Public NotInheritable Class frmSplash
Private Sub bw_RunWorkerCompleted(sender As Object, e As System.ComponentModel.RunWorkerCompletedEventArgs)
' Bei Fehler MsgBox anzeigen und Programm beenden
If e.Error IsNot Nothing Then
- 'ClassLogger.Add("Unexpected error in Initializing application....")
- MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Critical Error")
+ MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Unhandled Error")
+ Application.Exit()
+ ElseIf e.Result <> WorkerResult.AllGood Then
+ Dim oErrorMessage
+
+ Select Case e.Result
+ Case WorkerResult.ServiceOffline
+ oErrorMessage = "Service is offline!"
+ Case Else
+ oErrorMessage = "Unknown Error"
+ End Select
+
+ MsgBox($"Application could not be started{vbNewLine}Reason: {oErrorMessage}", MsgBoxStyle.Critical, "Critical Error")
Application.Exit()
End If
+ My.ChannelFactory = _ChannelFactory
+ My.Channel = _Channel
+
' Wenn kein Fehler, Splashscreen schließen
Me.Close()
End Sub
diff --git a/EDMI_ClientSuite/packages.config b/EDMI_ClientSuite/packages.config
index c68c1ffe..9ba88bff 100644
--- a/EDMI_ClientSuite/packages.config
+++ b/EDMI_ClientSuite/packages.config
@@ -2,33 +2,5 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ContainerResult.datasource b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ContainerResult.datasource
index 92381800..37ec8092 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ContainerResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ContainerResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ContainerResult
+ DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ContainerResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
\ 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.EDMIFileOps.EDMIServiceReference.NonQueryResult.datasource
index 1ded1ec6..f729e1d8 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult
+ DigitalData.Modules.EDMIFileOps.EDMIServiceReference.NonQueryResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
\ 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.EDMIFileOps.EDMIServiceReference.ScalarResult.datasource
index 972a9621..7a412454 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult
+ DigitalData.Modules.EDMIFileOps.EDMIServiceReference.ScalarResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
\ 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.EDMIFileOps.EDMIServiceReference.TableResult.datasource
index 21ec4794..afc8fe42 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult.datasource
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult.datasource
@@ -6,5 +6,5 @@
cause the file to be unrecognizable by the program.
-->
- DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult
+ DigitalData.Modules.EDMIFileOps.EDMIServiceReference.TableResult, Connected Services.EDMIServiceReference.Reference.vb.dll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
\ No newline at end of file
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl
index 2fd4ed52..47d71092 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.wsdl
@@ -9,6 +9,12 @@
+
+
+
+
+
+
@@ -64,6 +70,10 @@
+
+
+
+
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.xsd b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.xsd
index dcec368e..29f05a8b 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.xsd
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/DigitalData.Services.EDMService.xsd
@@ -1,6 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb
index 9d037d69..04d51826 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/Reference.vb
@@ -427,6 +427,12 @@ Namespace EDMIServiceReference
System.ServiceModel.ServiceContractAttribute([Namespace]:="http://DigitalData.Services.EDMService", ConfigurationName:="EDMIServiceReference.IEDMService")> _
Public Interface IEDMService
+ _
+ Function Heartbeat() As Boolean
+
+ _
+ Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean)
+
_
Function CreateDatabaseRequest(ByVal Name As String, ByVal Debug As Boolean) As String
@@ -513,6 +519,14 @@ Namespace EDMIServiceReference
MyBase.New(binding, remoteAddress)
End Sub
+ Public Function Heartbeat() As Boolean Implements EDMIServiceReference.IEDMService.Heartbeat
+ Return MyBase.Channel.Heartbeat
+ End Function
+
+ Public Function HeartbeatAsync() As System.Threading.Tasks.Task(Of Boolean) Implements EDMIServiceReference.IEDMService.HeartbeatAsync
+ Return MyBase.Channel.HeartbeatAsync
+ End Function
+
Public Function CreateDatabaseRequest(ByVal Name As String, ByVal Debug As Boolean) As String Implements EDMIServiceReference.IEDMService.CreateDatabaseRequest
Return MyBase.Channel.CreateDatabaseRequest(Name, Debug)
End Function
diff --git a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/service.wsdl b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/service.wsdl
index 520b3f35..a655416c 100644
--- a/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/service.wsdl
+++ b/EDMI_FILE_OPs/Connected Services/EDMIServiceReference/service.wsdl
@@ -39,6 +39,15 @@
+
+
+
+
+
+
+
+
+
diff --git a/Filesystem/Compression.vb b/Filesystem/Compression.vb
index 9edb4517..a1d5027e 100644
--- a/Filesystem/Compression.vb
+++ b/Filesystem/Compression.vb
@@ -2,7 +2,7 @@
Imports System.IO.Compression
Imports DigitalData.Modules.Logging
-Friend Class Compression
+Public Class Compression
Private ReadOnly _logger As Logger
Public Sub New(LogConfig As LogConfig)
diff --git a/Filesystem/Encryption.vb b/Filesystem/Encryption.vb
index 77f3631e..b7a3b95b 100644
--- a/Filesystem/Encryption.vb
+++ b/Filesystem/Encryption.vb
@@ -5,7 +5,7 @@ Imports DigitalData.Modules.Logging
'''
''' https://stackoverflow.com/questions/10168240/encrypting-decrypting-a-string-in-c-sharp
'''
-Friend Class Encryption
+Public Class Encryption
' This constant is used to determine the keysize of the encryption algorithm in bits.
' We divide this by 8 within the code below to get the equivalent number of bytes.
Private Const KEY_SIZE As Integer = 256
diff --git a/Filesystem/File.vb b/Filesystem/File.vb
index 4d02582f..e27264af 100644
--- a/Filesystem/File.vb
+++ b/Filesystem/File.vb
@@ -94,7 +94,11 @@ Public Class File
IO.File.Move(FilePath, Path.Combine(Directory, oFileInfo.Name))
End Sub
- Private Function TestPathIsDirectory(Path As String) As Boolean
+ Public Function TestPathIsDirectory(Path As String) As Boolean
+ If Not Directory.Exists(Path) Then
+ Return False
+ End If
+
Dim oIsDirectory As Boolean = (System.IO.File.GetAttributes(Path) And FileAttributes.Directory) = FileAttributes.Directory
Return oIsDirectory
End Function
diff --git a/Filesystem/FileWatcher.vb b/Filesystem/FileWatcher.vb
new file mode 100644
index 00000000..6f82047a
--- /dev/null
+++ b/Filesystem/FileWatcher.vb
@@ -0,0 +1,132 @@
+Imports System.IO
+Imports DigitalData.Modules.Filesystem
+Imports DigitalData.Modules.Filesystem.FileWatcherFilters
+Imports DigitalData.Modules.Logging
+
+
+Public Class FileWatcher
+ ' Internals
+ Private ReadOnly _Logger As Logger
+ Private ReadOnly _Watchers As List(Of FileSystemWatcher)
+ Private ReadOnly _Files As Dictionary(Of String, FileWatcherProperties)
+ Private ReadOnly _Filters As List(Of BaseFileFilter)
+
+ ' Options
+ Private _Path As String
+
+ ' Public Events
+ Public Event FileSaved(ByVal FullName As String, ByVal IsSpecial As Boolean)
+
+ Public Sub New(LogConfig As LogConfig, Path As String, Optional Filters As List(Of BaseFileFilter) = Nothing)
+ _Logger = LogConfig.GetLogger()
+ _Files = New Dictionary(Of String, FileWatcherProperties)
+ _Watchers = New List(Of FileSystemWatcher)
+ _Filters = IIf(IsNothing(Filters), GetDefaultFilters(), Filters)
+ _Path = Path
+
+ For Each oFilePath In Directory.EnumerateFiles(_Path)
+ Try
+ If IO.File.Exists(oFilePath) Then
+ _Files.Add(oFilePath, New FileWatcherProperties With {
+ .CreatedAt = DateTime.Now,
+ .ChangedAt = Nothing
+ })
+ End If
+ Catch ex As Exception
+ _Logger.Error(ex)
+ _Logger.Warn("File {0} cannot be watched!")
+ End Try
+ Next
+ End Sub
+
+ Public Sub Add(Filter As String)
+ _Watchers.Add(CreateWatcher(Filter))
+ End Sub
+
+ Public Sub Start()
+ For Each oWatcher In _Watchers
+ oWatcher.EnableRaisingEvents = True
+ Next
+ End Sub
+
+ Public Sub [Stop]()
+ For Each oWatcher In _Watchers
+ If Not IsNothing(oWatcher) Then
+ oWatcher.EnableRaisingEvents = False
+ oWatcher.Dispose()
+ End If
+ Next
+ End Sub
+
+ Private Function GetDefaultFilters()
+ Return New List(Of BaseFileFilter) From {
+ New TempFileFilter,
+ New OfficeFileFilter
+ }
+ End Function
+
+ Private Function CreateWatcher(Filter As String)
+ Dim oWatcher = New FileSystemWatcher() With {
+ .Path = _Path,
+ .Filter = Filter,
+ .NotifyFilter = NotifyFilters.LastAccess _
+ Or NotifyFilters.LastWrite _
+ Or NotifyFilters.FileName _
+ Or NotifyFilters.Size _
+ Or NotifyFilters.FileName _
+ Or NotifyFilters.Attributes
+ }
+
+ AddHandler oWatcher.Created, AddressOf HandleFileCreated
+ AddHandler oWatcher.Changed, AddressOf HandleFileChanged
+ AddHandler oWatcher.Deleted, AddressOf HandleFileDeleted
+ AddHandler oWatcher.Renamed, AddressOf HandleFileRenamed
+
+ Return oWatcher
+ End Function
+
+ Private Sub HandleFileCreated(sender As Object, e As FileSystemEventArgs)
+ _Files.Add(e.FullPath, New FileWatcherProperties())
+ _Logger.Debug("[Created] " & e.FullPath)
+ End Sub
+
+ '''
+ ''' This may fire twice for a single save operation,
+ ''' see: https://blogs.msdn.microsoft.com/oldnewthing/20140507-00/?p=1053/
+ '''
+ Private Sub HandleFileChanged(sender As Object, e As FileSystemEventArgs)
+ _Files.Item(e.FullPath).ChangedAt = DateTime.Now
+ _Logger.Debug("[Changed] " & e.FullPath)
+
+ Dim oShouldRaiseSave As Boolean = Not _Filters.Any(Function(oFilter)
+ Return oFilter.ShouldFilter(e)
+ End Function)
+
+ If oShouldRaiseSave Then
+ RaiseEvent FileSaved(e.FullPath, False)
+ End If
+ End Sub
+ Private Sub HandleFileDeleted(sender As Object, e As FileSystemEventArgs)
+ _Files.Remove(e.FullPath)
+ _Logger.Debug("[Removed] " & e.FullPath)
+ End Sub
+
+ Private Sub HandleFileRenamed(sender As Object, e As RenamedEventArgs)
+ Dim oProperties = _Files.Item(e.OldFullPath)
+ _Files.Remove(e.OldFullPath)
+ _Files.Add(e.FullPath, oProperties)
+ ' Soll eine umbenannte datei als NEU gelten?
+
+ Dim oShouldRaiseSave = _Filters.Any(Function(oFilter)
+ Return oFilter.ShouldRaiseSave(e)
+ End Function)
+
+ If oShouldRaiseSave Then
+ RaiseEvent FileSaved(e.OldFullPath, True)
+ End If
+
+ _Logger.Debug("[Renamed] {0} --> {1}", e.OldFullPath, e.FullPath)
+ End Sub
+
+
+End Class
diff --git a/Filesystem/FileWatcherFilters.vb b/Filesystem/FileWatcherFilters.vb
new file mode 100644
index 00000000..84f70b62
--- /dev/null
+++ b/Filesystem/FileWatcherFilters.vb
@@ -0,0 +1,61 @@
+Imports System.IO
+
+'''
+''' Built-in filters for FileWatcher that are useful for correctly detecting changes on Office documents (currently Office 2016)
+'''
+Public Class FileWatcherFilters
+ '''
+ ''' Base Filter that all filters must inherit from
+ ''' Provides two functions that may be overridden and some useful file extension lists
+ '''
+ Public MustInherit Class BaseFileFilter
+ Public TempFiles As New List(Of String) From {".tmp", ""}
+
+ Public Overridable Function ShouldFilter(e As FileSystemEventArgs) As Boolean
+ Return False
+ End Function
+ Public Overridable Function ShouldRaiseSave(e As RenamedEventArgs) As Boolean
+ Return False
+ End Function
+ End Class
+
+ '''
+ ''' Simple Filter that filters changes made on temporary files
+ '''
+ Public Class TempFileFilter
+ Inherits BaseFileFilter
+
+ Public Overrides Function ShouldFilter(e As FileSystemEventArgs) As Boolean
+ Dim oFileInfo As New FileInfo(e.FullPath)
+ Return TempFiles.Contains(oFileInfo.Extension)
+ End Function
+ End Class
+
+ '''
+ ''' Filter to detect changes on Office files
+ '''
+ Public Class OfficeFileFilter
+ Inherits BaseFileFilter
+
+ Public OfficeFiles As New List(Of String) From {".docx", ".pptx", ".xlsx"}
+
+ Public Overrides Function ShouldFilter(e As FileSystemEventArgs) As Boolean
+ Dim oFileInfo As New FileInfo(e.FullPath)
+ Return OfficeFiles.Contains(oFileInfo.Extension) And oFileInfo.Name.StartsWith("~")
+ End Function
+
+ Public Overrides Function ShouldRaiseSave(e As RenamedEventArgs) As Boolean
+ Dim oIsTransform = OfficeFiles.Any(Function(Extension As String)
+ Return e.OldName.EndsWith(Extension)
+ End Function)
+
+ ' Check if it is renamed to a temp file
+ Dim oIsTempFile = TempFiles.Any(Function(Extension)
+ Return e.Name.EndsWith(Extension)
+ End Function)
+
+
+ Return oIsTransform And oIsTempFile
+ End Function
+ End Class
+End Class
diff --git a/Filesystem/FileWatcherProperties.vb b/Filesystem/FileWatcherProperties.vb
new file mode 100644
index 00000000..5eadecbe
--- /dev/null
+++ b/Filesystem/FileWatcherProperties.vb
@@ -0,0 +1,10 @@
+Public Class FileWatcherProperties
+ Public Property CreatedAt As DateTime
+ Public Property ChangedAt As DateTime
+ Public ReadOnly Property HasChanged As Boolean
+ Public Sub New()
+ CreatedAt = DateTime.Now
+ ChangedAt = Nothing
+ HasChanged = False
+ End Sub
+End Class
diff --git a/Filesystem/Filesystem.vbproj b/Filesystem/Filesystem.vbproj
index 83bf4193..720246c0 100644
--- a/Filesystem/Filesystem.vbproj
+++ b/Filesystem/Filesystem.vbproj
@@ -45,7 +45,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
..\packages\protobuf-net.2.4.0\lib\net40\protobuf-net.dll
@@ -80,6 +80,9 @@
+
+
+
True
diff --git a/Filesystem/packages.config b/Filesystem/packages.config
index 72e63d58..4c276e2a 100644
--- a/Filesystem/packages.config
+++ b/Filesystem/packages.config
@@ -1,5 +1,5 @@
-
+
\ No newline at end of file
diff --git a/GUI_EDMI/App.config b/GUI_EDMI/App.config
index 4e26231d..48ca3356 100644
--- a/GUI_EDMI/App.config
+++ b/GUI_EDMI/App.config
@@ -6,7 +6,7 @@
-
+
@@ -29,12 +29,7 @@
-
-
-
-
-
-
+
@@ -57,4 +52,9 @@
-
\ No newline at end of file
+
+
+
+
+
+
\ No newline at end of file
diff --git a/GUI_EDMI/GUI_EDMI.vbproj b/GUI_EDMI/GUI_EDMI.vbproj
index af852fcb..eaeb5584 100644
--- a/GUI_EDMI/GUI_EDMI.vbproj
+++ b/GUI_EDMI/GUI_EDMI.vbproj
@@ -76,9 +76,8 @@
..\packages\EntityFramework.6.2.0\lib\net45\EntityFramework.SqlServer.dll
-
- False
- ..\Modules.Database\bin\Debug\FirebirdSql.Data.FirebirdClient.dll
+
+ ..\packages\FirebirdSql.Data.FirebirdClient.6.4.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll
..\packages\FirebirdSql.EntityFrameworkCore.Firebird.6.4.0\lib\netstandard2.0\FirebirdSql.EntityFrameworkCore.Firebird.dll
diff --git a/GUI_EDMI/packages.config b/GUI_EDMI/packages.config
index 959fc27e..2c2992ff 100644
--- a/GUI_EDMI/packages.config
+++ b/GUI_EDMI/packages.config
@@ -2,7 +2,7 @@
-
+
diff --git a/Message/Messaging.vbproj b/Message/Messaging.vbproj
index afeeb152..8c9bb92e 100644
--- a/Message/Messaging.vbproj
+++ b/Message/Messaging.vbproj
@@ -50,8 +50,8 @@
P:\Projekte DIGITAL DATA\DIGITAL DATA - Entwicklung\DLL_Bibliotheken\Email .NET\Bin\Independentsoft.Email.dll
-
- ..\Modules.Logging\bin\Debug\NLog.dll
+
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
diff --git a/Message/My Project/AssemblyInfo.vb b/Message/My Project/AssemblyInfo.vb
index f862895e..b6fdfd76 100644
--- a/Message/My Project/AssemblyInfo.vb
+++ b/Message/My Project/AssemblyInfo.vb
@@ -8,10 +8,10 @@ Imports System.Runtime.InteropServices
' Werte der Assemblyattribute überprüfen
-
+
-
+
diff --git a/Message/packages.config b/Message/packages.config
index 9764f16f..f89fa324 100644
--- a/Message/packages.config
+++ b/Message/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/Modules.Database/Database.vbproj b/Modules.Database/Database.vbproj
index 4a66b0cb..e7c4b685 100644
--- a/Modules.Database/Database.vbproj
+++ b/Modules.Database/Database.vbproj
@@ -59,8 +59,7 @@
- False
- ..\Modules.Logging\bin\Debug\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
P:\Visual Studio Projekte\Bibliotheken\Oracle.ManagedDataAccess.dll
diff --git a/Modules.Database/packages.config b/Modules.Database/packages.config
index 9613071f..81ef80e4 100644
--- a/Modules.Database/packages.config
+++ b/Modules.Database/packages.config
@@ -3,5 +3,5 @@
-
+
\ No newline at end of file
diff --git a/Modules.License/License.vbproj b/Modules.License/License.vbproj
new file mode 100644
index 00000000..8254f7c8
--- /dev/null
+++ b/Modules.License/License.vbproj
@@ -0,0 +1,130 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {5EBACBFA-F11A-4BBF-8D02-91461F2293ED}
+ Library
+ DigitalData.Modules.License
+ DigitalData.Modules.License
+ 512
+ Windows
+ v4.6.1
+
+
+ true
+ full
+ true
+ true
+ bin\Debug\
+ DigitalData.Modules.License.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ pdbonly
+ false
+ true
+ true
+ bin\Release\
+ DigitalData.Modules.License.xml
+ 42016,41999,42017,42018,42019,42032,42036,42020,42021,42022
+
+
+ On
+
+
+ Binary
+
+
+ Off
+
+
+ On
+
+
+
+
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ LicenseSchema.xsd
+
+
+
+ True
+ Application.myapp
+
+
+ True
+ True
+ Resources.resx
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+ VbMyResourcesResXFileCodeGenerator
+ Resources.Designer.vb
+ My.Resources
+ Designer
+
+
+
+
+ Designer
+
+
+ MyApplicationCodeGenerator
+ Application.Designer.vb
+
+
+ SettingsSingleFileGenerator
+ My
+ Settings.Designer.vb
+
+
+
+
+
+ {991d0231-4623-496d-8bd0-9ca906029cbc}
+ Filesystem
+
+
+ {903b2d7d-3b80-4be9-8713-7447b704e1b0}
+ Logging
+
+
+
+
\ No newline at end of file
diff --git a/Modules.License/LicenseCreator.vb b/Modules.License/LicenseCreator.vb
new file mode 100644
index 00000000..eb62ec4a
--- /dev/null
+++ b/Modules.License/LicenseCreator.vb
@@ -0,0 +1,34 @@
+Public Class LicenseCreator
+ Public Shared Function NewUser(Type As UserType, Count As Integer, Optional ValidUntil As Date = Nothing) As LicenseModuleUser
+ Dim oValidUntilSpecified = Not IsNothing(ValidUntil)
+ Dim oTest = IsNothing(ValidUntil)
+
+ Return New LicenseModuleUser() With {
+ .Count = Count,
+ .Type = Type,
+ .Test = oTest,
+ .ValidUntil = ValidUntil,
+ .ValidUntilSpecified = oValidUntilSpecified
+ }
+ End Function
+
+ Public Shared Function NewModule(Name As String, Users As List(Of LicenseModuleUser), Optional ValidUntil As Date = Nothing) As LicenseModule
+ Dim oUsers = Users.ToArray()
+ Dim oValidUntilSpecified = Not IsNothing(ValidUntil)
+
+ Return New LicenseModule() With {
+ .Name = Name,
+ .Users = oUsers,
+ .ValidUntil = ValidUntil,
+ .ValidUntilSpecified = oValidUntilSpecified
+ }
+ End Function
+
+ Public Shared Function NewLicense(Modules As List(Of LicenseModule)) As LicenseSchema
+ Dim oModules = Modules.ToArray()
+
+ Return New LicenseSchema With {
+ .Modules = oModules
+ }
+ End Function
+End Class
diff --git a/Modules.License/LicenseFile.vb b/Modules.License/LicenseFile.vb
new file mode 100644
index 00000000..0e842d37
--- /dev/null
+++ b/Modules.License/LicenseFile.vb
@@ -0,0 +1,81 @@
+Imports System.IO
+Imports System.Xml
+Imports System.Xml.Serialization
+Imports DigitalData.Modules.Logging
+
+Public Class LicenseFile
+ Public Const LICENSE_FILENAME = "License.xml"
+
+ Public ReadOnly Path As String
+ Private _Logger As Logger
+
+ Public Sub New(LogConfig As LogConfig, Path As String)
+ Me.Path = Path
+ _Logger = LogConfig.GetLogger()
+ End Sub
+
+ Private Function GetSerializer() As XmlSerializer
+ Dim oSerializer As New XmlSerializer(GetType(LicenseSchema))
+ Return oSerializer
+ End Function
+
+ Public Function TestFileValid(Optional FileName As String = LICENSE_FILENAME) As Boolean
+ Try
+ Dim oSerializer = GetSerializer()
+ Dim oFilePath As String = IO.Path.Combine(Path, FileName)
+
+ Using oReader As New StreamReader(oFilePath),
+ oXmlReader = XmlReader.Create(oReader)
+ Return oSerializer.CanDeserialize(oXmlReader)
+ End Using
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Function LoadFile(Optional FileName As String = LICENSE_FILENAME) As LicenseSchema
+ Try
+ Dim oSerializer = GetSerializer()
+ Dim oFilePath As String = IO.Path.Combine(Path, FileName)
+ Dim oLicense As LicenseSchema
+
+ Using oReader As New StreamReader(oFilePath)
+ oLicense = oSerializer.Deserialize(oReader)
+ End Using
+
+ Return oLicense
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Function Serialize(License As LicenseSchema) As Byte()
+ Try
+ Dim oSerializer = GetSerializer()
+
+ Using oStream = New MemoryStream()
+ oSerializer.Serialize(oStream, License)
+ Return oStream.ToArray()
+ End Using
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Function
+
+ Public Sub SaveFile(License As LicenseSchema, Optional FileName As String = LICENSE_FILENAME)
+ Try
+ Dim oBytes = Serialize(License)
+ Dim oFilePath As String = IO.Path.Combine(Path, FileName)
+
+ Using oFileStream = New FileStream(oFilePath, FileMode.Create, FileAccess.Write)
+ oFileStream.Write(oBytes, 0, oBytes.Length)
+ End Using
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw ex
+ End Try
+ End Sub
+End Class
diff --git a/Modules.License/LicenseSchema.vb b/Modules.License/LicenseSchema.vb
new file mode 100644
index 00000000..877fe8c0
--- /dev/null
+++ b/Modules.License/LicenseSchema.vb
@@ -0,0 +1,203 @@
+'------------------------------------------------------------------------------
+'
+' 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 Off
+Option Explicit On
+
+Imports System.Xml.Serialization
+Imports System.ComponentModel
+Imports System.CodeDom.Compiler
+
+'
+'This source code was auto-generated by xsd, Version=4.6.1586.0.
+'
+
+'''
+
+Partial Public Class LicenseSchema
+
+ Private modulesField() As LicenseModule
+
+ '''
+
+ Public Property Modules() As LicenseModule()
+ Get
+ Return Me.modulesField
+ End Get
+ Set
+ Me.modulesField = Value
+ End Set
+ End Property
+End Class
+
+'''
+
+Partial Public Class LicenseModule
+
+ Private usersField() As LicenseModuleUser
+
+ Private nameField As String
+
+ Private validUntilField As Date
+
+ Private validUntilFieldSpecified As Boolean
+
+ '''
+
+ Public Property Users() As LicenseModuleUser()
+ Get
+ Return Me.usersField
+ End Get
+ Set
+ Me.usersField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property Name() As String
+ Get
+ Return Me.nameField
+ End Get
+ Set
+ Me.nameField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property ValidUntil() As Date
+ Get
+ Return Me.validUntilField
+ End Get
+ Set
+ Me.validUntilField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property ValidUntilSpecified() As Boolean
+ Get
+ Return Me.validUntilFieldSpecified
+ End Get
+ Set
+ Me.validUntilFieldSpecified = Value
+ End Set
+ End Property
+End Class
+
+'''
+
+Partial Public Class LicenseModuleUser
+
+ Private typeField As UserType
+
+ Private countField As String
+
+ Private testField As Boolean
+
+ Private validUntilField As Date
+
+ Private validUntilFieldSpecified As Boolean
+
+ Public Sub New()
+ MyBase.New
+ Me.testField = True
+ End Sub
+
+ '''
+
+ Public Property Type() As UserType
+ Get
+ Return Me.typeField
+ End Get
+ Set
+ Me.typeField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property Count() As String
+ Get
+ Return Me.countField
+ End Get
+ Set
+ Me.countField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property Test() As Boolean
+ Get
+ Return Me.testField
+ End Get
+ Set
+ Me.testField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property ValidUntil() As Date
+ Get
+ Return Me.validUntilField
+ End Get
+ Set
+ Me.validUntilField = Value
+ End Set
+ End Property
+
+ '''
+
+ Public Property ValidUntilSpecified() As Boolean
+ Get
+ Return Me.validUntilFieldSpecified
+ End Get
+ Set
+ Me.validUntilFieldSpecified = Value
+ End Set
+ End Property
+End Class
+
+'''
+
+Public Enum UserType
+
+ '''
+ PowerUser
+
+ '''
+ [ReadOnly]
+
+ '''
+ [WriteOnly]
+
+ '''
+ ReadWrite
+End Enum
diff --git a/Modules.License/LicenseSchema.xsd b/Modules.License/LicenseSchema.xsd
new file mode 100644
index 00000000..34a4f742
--- /dev/null
+++ b/Modules.License/LicenseSchema.xsd
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Modules.License/My Project/Application.Designer.vb b/Modules.License/My Project/Application.Designer.vb
new file mode 100644
index 00000000..8ab460ba
--- /dev/null
+++ b/Modules.License/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/Modules.License/My Project/Application.myapp b/Modules.License/My Project/Application.myapp
new file mode 100644
index 00000000..758895de
--- /dev/null
+++ b/Modules.License/My Project/Application.myapp
@@ -0,0 +1,10 @@
+
+
+ false
+ false
+ 0
+ true
+ 0
+ 1
+ true
+
diff --git a/Modules.License/My Project/AssemblyInfo.vb b/Modules.License/My Project/AssemblyInfo.vb
new file mode 100644
index 00000000..8a2b13b6
--- /dev/null
+++ b/Modules.License/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/Modules.License/My Project/Resources.Designer.vb b/Modules.License/My Project/Resources.Designer.vb
new file mode 100644
index 00000000..56b61925
--- /dev/null
+++ b/Modules.License/My Project/Resources.Designer.vb
@@ -0,0 +1,63 @@
+'------------------------------------------------------------------------------
+'
+' 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.Modules.License.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
+ End Module
+End Namespace
diff --git a/Modules.License/My Project/Resources.resx b/Modules.License/My Project/Resources.resx
new file mode 100644
index 00000000..af7dbebb
--- /dev/null
+++ b/Modules.License/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/Modules.License/My Project/Settings.Designer.vb b/Modules.License/My Project/Settings.Designer.vb
new file mode 100644
index 00000000..de8d4535
--- /dev/null
+++ b/Modules.License/My Project/Settings.Designer.vb
@@ -0,0 +1,73 @@
+'------------------------------------------------------------------------------
+'
+' 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
+ End Class
+End Namespace
+
+Namespace My
+
+ _
+ Friend Module MySettingsProperty
+
+ _
+ Friend ReadOnly Property Settings() As Global.DigitalData.Modules.License.My.MySettings
+ Get
+ Return Global.DigitalData.Modules.License.My.MySettings.Default
+ End Get
+ End Property
+ End Module
+End Namespace
diff --git a/Modules.License/My Project/Settings.settings b/Modules.License/My Project/Settings.settings
new file mode 100644
index 00000000..85b890b3
--- /dev/null
+++ b/Modules.License/My Project/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/Modules.License/packages.config b/Modules.License/packages.config
new file mode 100644
index 00000000..f89fa324
--- /dev/null
+++ b/Modules.License/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/Modules.Logging/LogConfig.vb b/Modules.Logging/LogConfig.vb
index 9faa6422..7c8ed6c8 100644
--- a/Modules.Logging/LogConfig.vb
+++ b/Modules.Logging/LogConfig.vb
@@ -4,7 +4,7 @@ Imports NLog.Config
Imports NLog.Targets
''' LogConfig
-''' 0.0.0.5
+''' 0.0.0.6
''' 02.10.2018
'''
''' Module that writes file-logs to different locations:
@@ -173,7 +173,6 @@ Public Class LogConfig
basePath = Path.Combine(appDataDir, companyName, productName, FOLDER_NAME_LOG)
ElseIf logPath = PathType.CurrentDirectory Then
Dim currentDirectory As String = My.Application.Info.DirectoryPath
-
basePath = Path.Combine(currentDirectory, FOLDER_NAME_LOG)
Else 'Custom Path
basePath = customLogPath
@@ -197,7 +196,7 @@ Public Class LogConfig
End Using
File.Delete(fileAccessPath)
- Catch ex As UnauthorizedAccessException
+ Catch ex As Exception
' If creation fails, use failSafe path
basePath = failSafePath
End Try
diff --git a/Modules.Logging/Logging.vbproj b/Modules.Logging/Logging.vbproj
index b7982df8..037ea288 100644
--- a/Modules.Logging/Logging.vbproj
+++ b/Modules.Logging/Logging.vbproj
@@ -45,8 +45,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
- False
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
diff --git a/Modules.Logging/My Project/AssemblyInfo.vb b/Modules.Logging/My Project/AssemblyInfo.vb
index 8dccce0d..f90d3a43 100644
--- a/Modules.Logging/My Project/AssemblyInfo.vb
+++ b/Modules.Logging/My Project/AssemblyInfo.vb
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
'
-
+
diff --git a/Modules.Logging/packages.config b/Modules.Logging/packages.config
index 9764f16f..f89fa324 100644
--- a/Modules.Logging/packages.config
+++ b/Modules.Logging/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/Modules.Windream/Windream.vbproj b/Modules.Windream/Windream.vbproj
index 6d0c2317..c86a9f1a 100644
--- a/Modules.Windream/Windream.vbproj
+++ b/Modules.Windream/Windream.vbproj
@@ -65,7 +65,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
diff --git a/Modules.Windream/packages.config b/Modules.Windream/packages.config
index 9764f16f..f89fa324 100644
--- a/Modules.Windream/packages.config
+++ b/Modules.Windream/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file
diff --git a/SERVICES/DDEDM_NetworkService/App.config b/SERVICES/DDEDM_NetworkService/App.config
index 203b962c..a1581da4 100644
--- a/SERVICES/DDEDM_NetworkService/App.config
+++ b/SERVICES/DDEDM_NetworkService/App.config
@@ -1,4 +1,4 @@
-
+
@@ -18,20 +18,19 @@
-
+
-
-
-
-
-
-
+
+
+
+
+
+
@@ -39,27 +38,19 @@
-
+
-
+
-
+
@@ -76,4 +67,9 @@
-
\ No newline at end of file
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SERVICES/DDEDM_NetworkService/DDEDMService.vbproj b/SERVICES/DDEDM_NetworkService/DDEDMService.vbproj
index f2c98f78..5594f0b6 100644
--- a/SERVICES/DDEDM_NetworkService/DDEDMService.vbproj
+++ b/SERVICES/DDEDM_NetworkService/DDEDMService.vbproj
@@ -6,7 +6,7 @@
AnyCPU
{A8C3F298-76AB-4359-AB3C-986E313B4336}
Exe
- DigitalData.Services.EDMService.EDMWindowsService
+ DigitalData.Services.EDMService.WindowsService
DigitalData.Services.EDMService
EDMService
512
@@ -47,29 +47,23 @@
On
-
- ..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll
+
+ ..\..\packages\FirebirdSql.Data.FirebirdClient.6.4.0\lib\net452\FirebirdSql.Data.FirebirdClient.dll
-
- ..\..\DDMonorepo\Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll
-
-
- ..\..\DDMonorepo\Modules.Logging\bin\Debug\DigitalData.Modules.Logging.dll
-
-
- ..\..\DDMonorepo\Modules.Database\bin\Debug\FirebirdSql.Data.FirebirdClient.dll
-
-
- ..\..\DDMonorepo\Modules.Logging\bin\Debug\NLog.dll
+
+
+ ..\..\packages\NLog.4.5.11\lib\net45\NLog.dll
+
+
@@ -92,10 +86,9 @@
-
-
+
Component
@@ -145,6 +138,21 @@
PreserveNewest
Designer
+
+
+
+
+ {991d0231-4623-496d-8bd0-9ca906029cbc}
+ Filesystem
+
+
+ {EAF0EA75-5FA7-485D-89C7-B2D843B03A96}
+ Database
+
+
+ {903B2D7D-3B80-4BE9-8713-7447B704E1B0}
+ Logging
+
\ No newline at end of file
diff --git a/SERVICES/DDEDM_NetworkService/EDMService.vb b/SERVICES/DDEDM_NetworkService/EDMService.vb
index 84d6cf13..5c670a1e 100644
--- a/SERVICES/DDEDM_NetworkService/EDMService.vb
+++ b/SERVICES/DDEDM_NetworkService/EDMService.vb
@@ -8,39 +8,34 @@ Imports DigitalData.Services.EDMService
Public Class EDMService
Implements IEDMService
- Implements IDisposable
-
- Public Shared Event ClientConnectedEvent As EventHandler(Of Session)
- Public Shared Event ClientDisconnectedEvent As EventHandler(Of Session)
Public Shared LogConfig As LogConfig
Public Shared Database As Firebird
Public Shared AppConfig As AppConfig
- Private ReadOnly _session As Session
Private ReadOnly _logger As Logger
Private _request As Request = Nothing
Private _debug As Boolean = False
+ Private _username As String
Public Sub New()
Dim oOperationContext As OperationContext = OperationContext.Current
Dim oInstanceContext As InstanceContext = oOperationContext.InstanceContext
Dim oUsername = oOperationContext.ServiceSecurityContext.WindowsIdentity.Name
+ _username = oUsername
_logger = LogConfig.GetLogger()
- _session = New Session(oUsername)
-
- RaiseEvent ClientConnectedEvent(Me, _session)
- End Sub
-
- Public Sub Dispose() Implements IDisposable.Dispose
- RaiseEvent ClientDisconnectedEvent(Me, _session)
End Sub
+#Region "Heartbeat"
+ Public Function Heartbeat() As Boolean Implements IEDMService.Heartbeat
+ Return True
+ End Function
+#End Region
#Region "Request"
Public Function CreateDatabaseRequest(Name As String, Optional Debug As Boolean = False) As String Implements IEDMService.CreateDatabaseRequest
- _request = New Request(Name, _session.Username, Database, Debug)
+ _request = New Request(Name, _username, Database, Debug)
_debug = Debug
_logger.Info("Creating request {0}/{1}", _request.Name, _request.RequestId)
diff --git a/SERVICES/DDEDM_NetworkService/IEDMService.vb b/SERVICES/DDEDM_NetworkService/IEDMService.vb
index 00aecbae..afc90e45 100644
--- a/SERVICES/DDEDM_NetworkService/IEDMService.vb
+++ b/SERVICES/DDEDM_NetworkService/IEDMService.vb
@@ -4,6 +4,11 @@ Imports DigitalData.Modules.Filesystem
Interface IEDMService
+#Region "Heartbeat"
+
+ Function Heartbeat() As Boolean
+#End Region
+
#Region "Database"
Function CreateDatabaseRequest(Name As String, Optional Debug As Boolean = False) As String
diff --git a/SERVICES/DDEDM_NetworkService/EDMWindowsService.vb b/SERVICES/DDEDM_NetworkService/WindowsService.vb
similarity index 72%
rename from SERVICES/DDEDM_NetworkService/EDMWindowsService.vb
rename to SERVICES/DDEDM_NetworkService/WindowsService.vb
index 67b30681..c6d2eb51 100644
--- a/SERVICES/DDEDM_NetworkService/EDMWindowsService.vb
+++ b/SERVICES/DDEDM_NetworkService/WindowsService.vb
@@ -5,7 +5,7 @@ Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Database.Exceptions
-Public Class EDMWindowsService
+Public Class WindowsService
Inherits ServiceBase
Private _serviceHost As ServiceHost = Nothing
@@ -15,7 +15,6 @@ Public Class EDMWindowsService
Private _logger As Logger
Private _db As Firebird
Private _clientsConnected As Integer = 0
- Private _clients As New List(Of Session)
Private _config As AppConfig
Public Sub New()
@@ -23,7 +22,7 @@ Public Class EDMWindowsService
End Sub
Public Shared Sub Main()
- Run(New EDMWindowsService())
+ Run(New WindowsService())
End Sub
Protected Overrides Sub OnStart(ByVal args As String())
@@ -46,9 +45,6 @@ Public Class EDMWindowsService
_logger.Info("Successfully connected to database!")
- AddHandler EDMService.ClientConnectedEvent, AddressOf EDMService_ClientConnected
- AddHandler EDMService.ClientDisconnectedEvent, AddressOf EDMService_ClientDisonnected
-
EDMService.Database = _db
EDMService.LogConfig = _logConfig
EDMService.AppConfig = _config
@@ -66,18 +62,6 @@ Public Class EDMWindowsService
End Try
End Sub
- Private Sub EDMService_ClientDisonnected(sender As Object, e As Session)
- _clientsConnected -= 1
- _clients.Remove(e)
- _logger.Info("Client {0}/{1} disconnected! Total {2}", e.Username, e.SessionId, _clientsConnected)
- End Sub
-
- Private Sub EDMService_ClientConnected(sender As Object, e As Session)
- _clientsConnected += 1
- _clients.Add(e)
- _logger.Info("Client {0}/{1} connected! Total {2}", e.Username, e.SessionId, _clientsConnected)
- End Sub
-
Protected Overrides Sub OnStop()
If _serviceHost IsNot Nothing Then
_serviceHost.Close()
diff --git a/SERVICES/DDEDM_NetworkService/packages.config b/SERVICES/DDEDM_NetworkService/packages.config
new file mode 100644
index 00000000..9204b8da
--- /dev/null
+++ b/SERVICES/DDEDM_NetworkService/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/TestGUI/ConfigTest.Designer.vb b/TestGUI/ConfigTest.Designer.vb
new file mode 100644
index 00000000..5d46d129
--- /dev/null
+++ b/TestGUI/ConfigTest.Designer.vb
@@ -0,0 +1,62 @@
+ _
+Partial Class ConfigTest
+ 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.Button2 = New System.Windows.Forms.Button()
+ Me.SuspendLayout()
+ '
+ 'Button1
+ '
+ Me.Button1.Location = New System.Drawing.Point(119, 76)
+ Me.Button1.Name = "Button1"
+ Me.Button1.Size = New System.Drawing.Size(149, 45)
+ Me.Button1.TabIndex = 0
+ Me.Button1.Text = "LoadConfig"
+ Me.Button1.UseVisualStyleBackColor = True
+ '
+ 'Button2
+ '
+ Me.Button2.Location = New System.Drawing.Point(429, 86)
+ Me.Button2.Name = "Button2"
+ Me.Button2.Size = New System.Drawing.Size(75, 23)
+ Me.Button2.TabIndex = 1
+ Me.Button2.Text = "SaveConfig"
+ Me.Button2.UseVisualStyleBackColor = True
+ '
+ 'ConfigTest
+ '
+ 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.Button2)
+ Me.Controls.Add(Me.Button1)
+ Me.Name = "ConfigTest"
+ Me.Text = "ConfigTest"
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Friend WithEvents Button1 As Button
+ Friend WithEvents Button2 As Button
+End Class
diff --git a/TestGUI/ConfigTest.resx b/TestGUI/ConfigTest.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/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/TestGUI/ConfigTest.vb
new file mode 100644
index 00000000..8e0dbbc7
--- /dev/null
+++ b/TestGUI/ConfigTest.vb
@@ -0,0 +1,25 @@
+Imports DigitalData.Modules.Config
+Imports DigitalData.Modules.Logging
+
+Public Class ConfigTest
+ Private _LogConfig As LogConfig
+ Private _config As ConfigManager(Of Config)
+ Private _FilePath As String = IO.Path.Combine(Application.LocalUserAppDataPath, "UserConfig.xml")
+
+ Private Sub ConfigTest_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ _LogConfig = New LogConfig(LogConfig.PathType.AppData)
+ _config = New ConfigManager(Of Config)(_LogConfig, Application.UserAppDataPath, Application.CommonAppDataPath)
+ End Sub
+
+ Public Class Config
+
+ Public Property StringEntry As String = "TEST"
+ Public Property BoolEntry As Boolean = True
+ Public Property IntEntry As Integer = 123
+ End Class
+
+ Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
+ _config.Config.IntEntry = 999
+ _config.Save()
+ End Sub
+End Class
\ No newline at end of file
diff --git a/TestGUI/FolderWatcher.Designer.vb b/TestGUI/FolderWatcher.Designer.vb
new file mode 100644
index 00000000..a0c1cbba
--- /dev/null
+++ b/TestGUI/FolderWatcher.Designer.vb
@@ -0,0 +1,49 @@
+
+Partial Class FolderWatcher
+ 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.ListBox1 = New System.Windows.Forms.ListBox()
+ Me.SuspendLayout()
+ '
+ 'ListBox1
+ '
+ Me.ListBox1.FormattingEnabled = True
+ Me.ListBox1.Location = New System.Drawing.Point(12, 12)
+ Me.ListBox1.Name = "ListBox1"
+ Me.ListBox1.Size = New System.Drawing.Size(388, 420)
+ Me.ListBox1.TabIndex = 0
+ '
+ 'FolderWatcher
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(413, 450)
+ Me.Controls.Add(Me.ListBox1)
+ Me.Name = "FolderWatcher"
+ Me.Text = "FolderWatcher"
+ Me.ResumeLayout(False)
+
+ End Sub
+
+ Friend WithEvents ListBox1 As ListBox
+End Class
diff --git a/TestGUI/FolderWatcher.resx b/TestGUI/FolderWatcher.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/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/TestGUI/FolderWatcher.vb
new file mode 100644
index 00000000..aa1dc9c3
--- /dev/null
+++ b/TestGUI/FolderWatcher.vb
@@ -0,0 +1,38 @@
+Imports System.ComponentModel
+Imports System.IO
+Imports DigitalData.Modules.Filesystem
+Imports DigitalData.Modules.Filesystem.FileWatcherFilters
+Imports DigitalData.Modules.Logging
+
+Public Class FolderWatcher
+
+ Private _LogConfig As LogConfig
+ Private _Logger As Logger
+ Private _Watcher As FileWatcher
+
+
+ Private Sub FolderWatcher_Load(sender As Object, e As EventArgs) Handles Me.Load
+ _LogConfig = New LogConfig(LogConfig.PathType.CurrentDirectory, Nothing, "MAIN")
+ _LogConfig.Debug = True
+ _Logger = _LogConfig.GetLogger()
+ Dim oFilters As New List(Of BaseFileFilter) From {
+ New TempFileFilter,
+ New OfficeFileFilter
+ }
+ _Watcher = New FileWatcher(_LogConfig, "E:\Watcher", oFilters)
+
+ _Watcher.Add("*.*")
+
+ AddHandler _Watcher.FileSaved, AddressOf HandleFileSaved
+
+ _Watcher.Start()
+ End Sub
+
+ Private Sub HandleFileSaved(FullName As String, IsSpecial As Boolean)
+ _Logger.Info("{1}File Saved: {0}", FullName, IIf(IsSpecial, "Special ", ""))
+ End Sub
+
+ Private Sub FolderWatcher_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
+ _Watcher.Stop()
+ End Sub
+End Class
\ No newline at end of file
diff --git a/TestGUI/Form1.Designer.vb b/TestGUI/Form1.Designer.vb
index ece45d55..f4812171 100644
--- a/TestGUI/Form1.Designer.vb
+++ b/TestGUI/Form1.Designer.vb
@@ -45,6 +45,7 @@ Partial Class Form1
Me.Label6 = New System.Windows.Forms.Label()
Me.Button4 = New System.Windows.Forms.Button()
Me.LookupControl1 = New DigitalData.Controls.LookupGrid.LookupControl()
+ Me.Button6 = New System.Windows.Forms.Button()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
@@ -242,11 +243,21 @@ Partial Class Form1
Me.LookupControl1.Size = New System.Drawing.Size(270, 23)
Me.LookupControl1.TabIndex = 23
'
+ 'Button6
+ '
+ Me.Button6.Location = New System.Drawing.Point(764, 308)
+ Me.Button6.Name = "Button6"
+ Me.Button6.Size = New System.Drawing.Size(75, 23)
+ Me.Button6.TabIndex = 24
+ Me.Button6.Text = "Button6"
+ Me.Button6.UseVisualStyleBackColor = True
+ '
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1050, 487)
+ Me.Controls.Add(Me.Button6)
Me.Controls.Add(Me.LookupControl1)
Me.Controls.Add(Me.Button4)
Me.Controls.Add(Me.Label6)
@@ -300,4 +311,5 @@ Partial Class Form1
Friend WithEvents Label6 As Label
Friend WithEvents Button4 As Button
Friend WithEvents LookupControl1 As DigitalData.Controls.LookupGrid.LookupControl
+ Friend WithEvents Button6 As Button
End Class
diff --git a/TestGUI/Form1.vb b/TestGUI/Form1.vb
index 1103eed8..7b2dcde6 100644
--- a/TestGUI/Form1.vb
+++ b/TestGUI/Form1.vb
@@ -169,4 +169,5 @@ Public Class Form1
bw1.RunWorkerAsync()
End Sub
+
End Class
diff --git a/TestGUI/My Project/Application.Designer.vb b/TestGUI/My Project/Application.Designer.vb
index abde74e4..716d1571 100644
--- a/TestGUI/My Project/Application.Designer.vb
+++ b/TestGUI/My Project/Application.Designer.vb
@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------
'
-' This code was generated by a tool.
-' Runtime Version:4.0.30319.42000
+' Dieser Code wurde von einem Tool generiert.
+' Laufzeitversion:4.0.30319.42000
'
-' Changes to this file may cause incorrect behavior and will be lost if
-' the code is regenerated.
+' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
+' der Code erneut generiert wird.
'
'------------------------------------------------------------------------------
@@ -13,15 +13,15 @@ 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.
+
+ 'HINWEIS: Diese Datei wird automatisch generiert und darf nicht direkt bearbeitet werden. Wenn Sie Änderungen vornehmen möchten
+ ' oder in dieser Datei Buildfehler auftreten, wechseln Sie zum Projekt-Designer.
+ ' (Wechseln Sie dazu zu den Projekteigenschaften, oder doppelklicken Sie auf den Knoten "Mein Projekt" im
+ ' Projektmappen-Explorer). Nehmen Sie auf der Registerkarte "Anwendung" entsprechende Änderungen vor.
'
Partial Friend Class MyApplication
-
- _
+
+ _
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = false
@@ -29,10 +29,10 @@ Namespace My
Me.SaveMySettingsOnExit = true
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub
-
- _
+
+ _
Protected Overrides Sub OnCreateMainForm()
- Me.MainForm = Global.TestGUI.Form1
+ Me.MainForm = Global.TestGUI.ConfigTest
End Sub
End Class
End Namespace
diff --git a/TestGUI/My Project/Application.myapp b/TestGUI/My Project/Application.myapp
index 1243847f..75bf29f8 100644
--- a/TestGUI/My Project/Application.myapp
+++ b/TestGUI/My Project/Application.myapp
@@ -1,11 +1,10 @@
true
- Form1
+ ConfigTest
false
0
true
0
- 0
true
-
+
\ No newline at end of file
diff --git a/TestGUI/My Project/app.manifest b/TestGUI/My Project/app.manifest
new file mode 100644
index 00000000..ef881eb8
--- /dev/null
+++ b/TestGUI/My Project/app.manifest
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/TestGUI/TestGUI.vbproj b/TestGUI/TestGUI.vbproj
index 5c07f2f3..4a719fb0 100644
--- a/TestGUI/TestGUI.vbproj
+++ b/TestGUI/TestGUI.vbproj
@@ -46,6 +46,9 @@
On
+
+ My Project\app.manifest
+
@@ -60,7 +63,7 @@
- ..\packages\NLog.4.5.10\lib\net45\NLog.dll
+ ..\packages\NLog.4.5.11\lib\net45\NLog.dll
@@ -93,6 +96,18 @@
+
+ ConfigTest.vb
+
+
+ Form
+
+
+ FolderWatcher.vb
+
+
+ Form
+
Form
@@ -117,6 +132,12 @@
+
+ ConfigTest.vb
+
+
+ FolderWatcher.vb
+
Form1.vb
@@ -129,6 +150,7 @@
+
MyApplicationCodeGenerator
Application.Designer.vb
@@ -139,14 +161,20 @@
Settings.Designer.vb
-
- Designer
-
+
+
+ {44982f9b-6116-44e2-85d0-f39650b1ef99}
+ Config
+
+
+ {991d0231-4623-496d-8bd0-9ca906029cbc}
+ Filesystem
+
{3dcd6d1a-c830-4241-b7e4-27430e7ea483}
LookupControl
diff --git a/TestGUI/packages.config b/TestGUI/packages.config
index 9764f16f..f89fa324 100644
--- a/TestGUI/packages.config
+++ b/TestGUI/packages.config
@@ -1,4 +1,4 @@
-
+
\ No newline at end of file