aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs
diff options
context:
space:
mode:
authorAvi Levkovich <avi@twine-s.com>2020-02-17 17:00:29 +0200
committerAvi Levkovich <avi@twine-s.com>2020-02-17 17:00:29 +0200
commitcbc80e71fac7d2896ac496b0fbf22051c0cdcff7 (patch)
tree9f898e565748f5581e900491ca36ce21c6462846 /Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs
parentef657b4a3ae76e99ab077d6b4fc19691c2a0da4a (diff)
downloadTango-cbc80e71fac7d2896ac496b0fbf22051c0cdcff7.tar.gz
Tango-cbc80e71fac7d2896ac496b0fbf22051c0cdcff7.zip
merge
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs152
1 files changed, 0 insertions, 152 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs
deleted file mode 100644
index 375b648d0..000000000
--- a/Software/Visual_Studio/PPC/Tango.PPC.UI/Modules/DefaultStudioModuleLoader.cs
+++ /dev/null
@@ -1,152 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Collections.ObjectModel;
-using System.IO;
-using System.Linq;
-using System.Reflection;
-using System.Text;
-using System.Threading.Tasks;
-using Tango.Core;
-using Tango.BL.Entities;
-using Tango.Logging;
-using Tango.PPC.Common.Authentication;
-using Tango.PPC.Common.Modules;
-using Tango.PPC.Common;
-using Tango.PPC.Jobs;
-using System.Windows.Data;
-using Tango.Core.DI;
-
-namespace Tango.PPC.UI.Modules
-{
- /// <summary>
- /// Represents the default PPC <see cref="IPPCModuleLoader"></see>.
- /// </summary>
- /// <seealso cref="Tango.Core.ExtendedObject" />
- /// <seealso cref="Tango.PPC.Common.Modules.IPPCModuleLoader" />
- public class DefaultPPCModuleLoader : ExtendedObject, IPPCModuleLoader
- {
- private static object _syncObject = new object();
- private IAuthenticationProvider _authenticationProvider;
- private bool _loaded;
-
- /// <summary>
- /// Occurs when the user has logged in and user modules are loaded.
- /// </summary>
- public event EventHandler ModulesLoaded;
-
- /// <summary>
- /// Initializes a new instance of the <see cref="DefaultPPCModuleLoader"/> class.
- /// </summary>
- /// <param name="authenticationProvider">The authentication provider.</param>
- public DefaultPPCModuleLoader(IAuthenticationProvider authenticationProvider)
- {
- _authenticationProvider = authenticationProvider;
- AllModules = new ObservableCollection<IPPCModule>();
- UserModules = new ObservableCollection<IPPCModule>();
-
- BindingOperations.EnableCollectionSynchronization(UserModules, _syncObject);
-
- _authenticationProvider.CurrentUserChanged += _authenticationProvider_CurrentUserChanged;
- }
-
- /// <summary>
- /// Handles the authentication provider user changed event.
- /// </summary>
- /// <param name="sender">The sender.</param>
- /// <param name="e">The e.</param>
- private void _authenticationProvider_CurrentUserChanged(object sender, User e)
- {
- LoadModules();
- }
-
- private ObservableCollection<IPPCModule> _allModules;
- /// <summary>
- /// Gets all loaded modules.
- /// </summary>
- public ObservableCollection<IPPCModule> AllModules
- {
- get { return _allModules; }
- private set { _allModules = value; RaisePropertyChangedAuto(); }
- }
-
- private ObservableCollection<IPPCModule> _userModules;
- /// <summary>
- /// Gets all the user permitted modules.
- /// </summary>
- public ObservableCollection<IPPCModule> UserModules
- {
- get { return _userModules; }
- private set { _userModules = value; RaisePropertyChangedAuto(); }
- }
-
- /// <summary>
- /// Loads all available PPC modules.
- /// </summary>
- public void LoadModules()
- {
- if (!_loaded)
- {
- //Preloaded
- LogManager.Log(String.Format("Loading module '{0}'...", nameof(JobsModule)));
- AllModules.Add(new JobsModule());
- //Preloaded
-
- AllModules.Clear();
- string assemblyFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
-
- foreach (var file in Directory.GetFiles(assemblyFolder, "*.dll").Where(x => x.Contains("Tango.PPC")))
- {
- try
- {
- Assembly moduleAssembly = null;
- moduleAssembly = Assembly.LoadFrom(file);
-
- if (moduleAssembly != null)
- {
- foreach (var moduleType in moduleAssembly.GetLoadableTypes().Where(x => !x.IsInterface && typeof(IPPCModule).IsAssignableFrom(x) && !x.IsAbstract))
- {
- if (!AllModules.ToList().Exists(x => x.GetType() == moduleType))
- {
- try
- {
- LogManager.Log(String.Format("Loading module '{0}'...", moduleType.Name));
- var module = Activator.CreateInstance(moduleType) as IPPCModule;
- AllModules.Add(module);
- }
- catch (Exception ex)
- {
- LogManager.Log(ex, "Could not load module " + moduleType.Name);
- }
- }
- }
- }
- }
- catch { }
- }
-
- _loaded = true;
- }
-
- AllModules = AllModules.OrderBy(x => x.GetType().GetCustomAttribute<PPCModuleAttribute>().Index).ToObservableCollection();
-
- UserModules.Clear();
-
- if (_authenticationProvider.CurrentUser != null)
- {
- UserModules = AllModules.Where(x => _authenticationProvider.CurrentUser.HasPermission(x.Permission)).ToObservableCollection();
- }
-
- ModulesLoaded?.Invoke(this, new EventArgs());
- }
-
- /// <summary>
- /// Gets the PPC module of type T if loaded.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <returns></returns>
- public T GetPPCModule<T>() where T : IPPCModule
- {
- return UserModules.OfType<T>().FirstOrDefault();
- }
- }
-}