From b934b152eea671fa06678baa0cdf7f8811e6d2d9 Mon Sep 17 00:00:00 2001 From: Roy Date: Wed, 14 Feb 2018 22:51:52 +0200 Subject: MERGE. --- .../Tango.MachineStudio.Common/StudioModuleBase.cs | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs new file mode 100644 index 000000000..5c594ab70 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/StudioModuleBase.cs @@ -0,0 +1,113 @@ +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.Integration.Observables; + +namespace Tango.MachineStudio.Common +{ + /// + /// Represents a base class for studio modules. + /// + /// + public abstract class StudioModuleBase : IStudioModule + { + private bool _isInitialized; + private bool _isLoaded; + + /// + /// Occurs when the user has navigated into or out of this module. + /// + public event EventHandler IsLoadedChanged; + + /// + /// 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. + /// + public abstract FrameworkElement MainView { 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; + } + } + + /// + /// Sets a value indicating whether this module is loaded. + /// + public bool IsLoaded + { + get + { + return _isLoaded; + } + set + { + _isLoaded = value; + IsLoadedChanged?.Invoke(this, 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() + { + OnInitialized(); + IsInitialized = true; + } + + /// + /// Called when machine studio initializes this module. + /// + protected virtual void OnInitialized() + { + + } + + /// + /// Raises the event. + /// + /// if set to true the module is loaded. + protected virtual void OnLoadedChanged(bool loaded) + { + + } + } +} -- cgit v1.3.1