using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media.Imaging; using Tango.Core; using Tango.BL.Entities; using Tango.BL.Enumerations; namespace Tango.PPC.Common { /// /// Represents a base class for PPC modules. /// /// public abstract class PPCModuleBase : ExtendedObject, IPPCModule { private bool _isInitialized; /// /// Occurs when the module has been initialized. /// public event EventHandler Initialized; /// /// Gets the module name. /// public abstract string Name { get; } /// /// Gets the module description. /// public abstract string Description { get; } /// /// Gets the module cover image. /// public abstract BitmapSource Image { get; } /// /// Gets the module entry point view type. /// public abstract Type MainViewType { get; } /// /// Gets the permission required to see and load this module. /// public abstract Permissions Permission { get; } /// /// Gets a value indicating whether this module has been initialized. /// public bool IsInitialized { get { return _isInitialized; } private set { _isInitialized = value; } } /// /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// public abstract void Dispose(); /// /// Perform any operations required to initialize this module. /// public void Initialize() { if (!IsInitialized) { OnInitialized(); IsInitialized = true; } } /// /// Called when machine studio initializes this module. /// protected virtual void OnInitialized() { Initialized?.Invoke(this, new EventArgs()); } } }