diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-06-12 15:47:10 +0300 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-06-12 15:47:10 +0300 |
| commit | 8a59643571080bfff715f0b0e4bb03e2dee4961a (patch) | |
| tree | 4a5301065eaa0d62dfc74cf2aa29c525d359dbca /Software/Visual_Studio/PPC/Tango.PPC.Common/PPCModuleBase.cs | |
| parent | aa42a768788aa4c90600b45d29f6ad8d78d9334d (diff) | |
| download | Tango-8a59643571080bfff715f0b0e4bb03e2dee4961a.tar.gz Tango-8a59643571080bfff715f0b0e4bb03e2dee4961a.zip | |
Starting splitting PPC to modules.
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.Common/PPCModuleBase.cs')
| -rw-r--r-- | Software/Visual_Studio/PPC/Tango.PPC.Common/PPCModuleBase.cs | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCModuleBase.cs b/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCModuleBase.cs new file mode 100644 index 000000000..31c3218db --- /dev/null +++ b/Software/Visual_Studio/PPC/Tango.PPC.Common/PPCModuleBase.cs @@ -0,0 +1,125 @@ +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 +{ + /// <summary> + /// Represents a base class for studio modules. + /// </summary> + /// <seealso cref="Tango.MachineStudio.Common.IStudioModule" /> + public abstract class PPCModuleBase : ExtendedObject, IPPCModule + { + private bool _isInitialized; + private bool _isLoaded; + + /// <summary> + /// Occurs when the user has navigated into or out of this module. + /// </summary> + public event EventHandler<bool> IsLoadedChanged; + + /// <summary> + /// Gets the module name. + /// </summary> + public abstract string Name { get; } + + /// <summary> + /// Gets the module description. + /// </summary> + public abstract string Description { get; } + + /// <summary> + /// Gets the module cover image. + /// </summary> + public abstract BitmapSource Image { get; } + + /// <summary> + /// Gets the module entry point view type. + /// </summary> + public abstract Type MainViewType { get; } + + /// <summary> + /// Gets the permission required to see and load this module. + /// </summary> + public abstract Permissions Permission { get; } + + /// <summary> + /// Gets a value indicating whether this module has been initialized. + /// </summary> + public bool IsInitialized + { + get + { + return _isInitialized; + } + private set + { + _isInitialized = value; + } + } + + /// <summary> + /// Sets a value indicating whether this module is loaded. + /// </summary> + public bool IsLoaded + { + get + { + return _isLoaded; + } + set + { + _isLoaded = value; + IsLoadedChanged?.Invoke(this, value); + } + } + + private bool _inNewWindow; + /// <summary> + /// Gets or sets a value indicating whether this module is shown under a new window. + /// </summary> + public bool InNewWindow + { + get { return _inNewWindow; } + set { _inNewWindow = value; RaisePropertyChangedAuto(); } + } + + /// <summary> + /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + /// </summary> + public abstract void Dispose(); + + /// <summary> + /// Perform any operations required to initialize this module. + /// </summary> + public void Initialize() + { + OnInitialized(); + IsInitialized = true; + } + + /// <summary> + /// Called when machine studio initializes this module. + /// </summary> + protected virtual void OnInitialized() + { + + } + + /// <summary> + /// Raises the <see cref="IsLoadedChanged"/> event. + /// </summary> + /// <param name="loaded">if set to <c>true</c> the module is loaded.</param> + protected virtual void OnLoadedChanged(bool loaded) + { + + } + } +} |
