// Copyright (C) Stichting Deltares 2021. All rights reserved. // // This file is part of Riskeer. // // Riskeer is free software: you can redistribute it and/or modify // it under the terms of the GNU Lesser General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU Lesser General Public License for more details. // // You should have received a copy of the GNU Lesser General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System; using System.Collections.Generic; using System.Linq; using Core.Common.Controls.TreeView; using Core.Common.Gui.Helpers; namespace Core.Common.Gui.Plugin { /// /// Template class for a plug-in definitions. /// public abstract class PluginBase : IDisposable { private IInquiryHelper inquiryHelper; /// /// Gets or sets the gui. /// public virtual IGui Gui { get; set; } /// /// Activates the plug-in. /// public virtual void Activate() {} /// /// Deactivates the plug-in. /// public virtual void Deactivate() {} /// /// Returns all instances provided by this plug-in. /// public virtual IEnumerable GetImportInfos() { yield break; } /// /// Returns all instances provided by this plug-in. /// public virtual IEnumerable GetUpdateInfos() { yield break; } /// /// Returns all instances provided by this plug-in. /// public virtual IEnumerable GetExportInfos() { yield break; } /// /// Returns all instances by of this plug-in. /// public virtual IEnumerable GetPropertyInfos() { return Enumerable.Empty(); } /// /// Returns all instances provided by this plug-in. /// public virtual IEnumerable GetViewInfos() { yield break; } /// /// Returns all instances provided by this plug-in. /// public virtual IEnumerable GetTreeNodeInfos() { yield break; } /// /// Gets the child data instances that have definitions of /// some parent data object. /// /// The parent data object. /// Sequence of child data. public virtual IEnumerable GetChildDataWithViewDefinitions(object viewData) { yield break; } public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (disposing) { Gui = null; } } /// /// Returns the . /// /// The . /// Thrown when /// is null. protected IInquiryHelper GetInquiryHelper() { if (Gui == null) { throw new InvalidOperationException("Gui cannot be null"); } return inquiryHelper ?? (inquiryHelper = new DialogBasedInquiryHelper(Gui.MainWindow)); } } }