// Copyright (C) Stichting Deltares 2017. All rights reserved.
//
// This file is part of Ringtoets.
//
// Ringtoets is free software: you can redistribute it and/or modify
// it under the terms of the GNU 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 General Public License for more details.
//
// You should have received a copy of the GNU 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.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Windows.Forms;
using Core.Common.Base;
using Core.Common.Base.Data;
using Core.Common.Base.IO;
using Core.Common.Controls.TreeView;
using Core.Common.Gui;
using Core.Common.Gui.ContextMenu;
using Core.Common.Gui.Forms;
using Core.Common.Gui.Forms.ProgressDialog;
using Core.Common.Gui.Plugin;
using Core.Common.Util;
using Core.Common.Util.Extensions;
using Core.Components.Gis.Data;
using log4net;
using Ringtoets.ClosingStructures.Data;
using Ringtoets.ClosingStructures.Forms.PresentationObjects;
using Ringtoets.Common.Data;
using Ringtoets.Common.Data.AssessmentSection;
using Ringtoets.Common.Data.Calculation;
using Ringtoets.Common.Data.Contribution;
using Ringtoets.Common.Data.DikeProfiles;
using Ringtoets.Common.Data.FailureMechanism;
using Ringtoets.Common.Data.Hydraulics;
using Ringtoets.Common.Data.IllustrationPoints;
using Ringtoets.Common.Data.Probability;
using Ringtoets.Common.Data.Structures;
using Ringtoets.Common.Forms.ChangeHandlers;
using Ringtoets.Common.Forms.Controls;
using Ringtoets.Common.Forms.GuiServices;
using Ringtoets.Common.Forms.PresentationObjects;
using Ringtoets.Common.Forms.PropertyClasses;
using Ringtoets.Common.Forms.TreeNodeInfos;
using Ringtoets.Common.Forms.UpdateInfos;
using Ringtoets.Common.Forms.Views;
using Ringtoets.Common.IO.FileImporters;
using Ringtoets.Common.IO.FileImporters.MessageProviders;
using Ringtoets.Common.IO.HydraRing;
using Ringtoets.Common.IO.ReferenceLines;
using Ringtoets.Common.Plugin;
using Ringtoets.Common.Service;
using Ringtoets.Common.Util.TypeConverters;
using Ringtoets.DuneErosion.Data;
using Ringtoets.DuneErosion.Forms.PresentationObjects;
using Ringtoets.DuneErosion.Plugin.Handlers;
using Ringtoets.GrassCoverErosionInwards.Data;
using Ringtoets.GrassCoverErosionInwards.Forms.PresentationObjects;
using Ringtoets.GrassCoverErosionOutwards.Data;
using Ringtoets.GrassCoverErosionOutwards.Forms.PresentationObjects;
using Ringtoets.HeightStructures.Data;
using Ringtoets.HeightStructures.Forms.PresentationObjects;
using Ringtoets.Integration.Data;
using Ringtoets.Integration.Data.StandAlone;
using Ringtoets.Integration.Data.StandAlone.Input;
using Ringtoets.Integration.Data.StandAlone.SectionResults;
using Ringtoets.Integration.Forms.Commands;
using Ringtoets.Integration.Forms.Dialogs;
using Ringtoets.Integration.Forms.Merge;
using Ringtoets.Integration.Forms.PresentationObjects;
using Ringtoets.Integration.Forms.PresentationObjects.StandAlone;
using Ringtoets.Integration.Forms.PropertyClasses;
using Ringtoets.Integration.Forms.PropertyClasses.StandAlone;
using Ringtoets.Integration.Forms.Views;
using Ringtoets.Integration.Forms.Views.SectionResultRows;
using Ringtoets.Integration.Forms.Views.SectionResultViews;
using Ringtoets.Integration.IO.Exporters;
using Ringtoets.Integration.Plugin.FileImporters;
using Ringtoets.Integration.Plugin.Handlers;
using Ringtoets.Integration.Plugin.Merge;
using Ringtoets.Integration.Plugin.Properties;
using Ringtoets.Integration.Service;
using Ringtoets.Integration.Service.Comparers;
using Ringtoets.MacroStabilityInwards.Data;
using Ringtoets.MacroStabilityInwards.Forms.PresentationObjects;
using Ringtoets.Piping.Data;
using Ringtoets.Piping.Forms.PresentationObjects;
using Ringtoets.StabilityPointStructures.Data;
using Ringtoets.StabilityPointStructures.Forms.PresentationObjects;
using Ringtoets.StabilityStoneCover.Data;
using Ringtoets.StabilityStoneCover.Forms.PresentationObjects;
using Ringtoets.WaveImpactAsphaltCover.Data;
using Ringtoets.WaveImpactAsphaltCover.Forms.PresentationObjects;
using RingtoetsDataResources = Ringtoets.Integration.Data.Properties.Resources;
using RingtoetsFormsResources = Ringtoets.Integration.Forms.Properties.Resources;
using RingtoetsCommonDataResources = Ringtoets.Common.Data.Properties.Resources;
using RingtoetsCommonIOResources = Ringtoets.Common.IO.Properties.Resources;
using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
using RingtoetsCommonServiceResources = Ringtoets.Common.Service.Properties.Resources;
using BaseResources = Core.Common.Base.Properties.Resources;
using GuiResources = Core.Common.Gui.Properties.Resources;
namespace Ringtoets.Integration.Plugin
{
///
/// The plug-in for the Ringtoets application.
///
public class RingtoetsPlugin : PluginBase
{
private static readonly ILog log = LogManager.GetLogger(typeof(PluginBase));
#region Failure mechanism associations
private static readonly IEnumerable failureMechanismAssociations = new[]
{
new FailureMechanismContextAssociation(
typeof(PipingFailureMechanism),
(mechanism, assessmentSection) => new PipingFailureMechanismContext(
(PipingFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(GrassCoverErosionInwardsFailureMechanism),
(mechanism, assessmentSection) => new GrassCoverErosionInwardsFailureMechanismContext(
(GrassCoverErosionInwardsFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(HeightStructuresFailureMechanism),
(mechanism, assessmentSection) => new HeightStructuresFailureMechanismContext(
(HeightStructuresFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(DuneErosionFailureMechanism),
(mechanism, assessmentSection) => new DuneErosionFailureMechanismContext(
(DuneErosionFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(GrassCoverErosionOutwardsFailureMechanism),
(mechanism, assessmentSection) => new GrassCoverErosionOutwardsFailureMechanismContext(
(GrassCoverErosionOutwardsFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(GrassCoverSlipOffInwardsFailureMechanism),
(mechanism, assessmentSection) => new GrassCoverSlipOffInwardsFailureMechanismContext(
(GrassCoverSlipOffInwardsFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(GrassCoverSlipOffOutwardsFailureMechanism),
(mechanism, assessmentSection) => new GrassCoverSlipOffOutwardsFailureMechanismContext(
(GrassCoverSlipOffOutwardsFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(MicrostabilityFailureMechanism),
(mechanism, assessmentSection) => new MicrostabilityFailureMechanismContext(
(MicrostabilityFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(PipingStructureFailureMechanism),
(mechanism, assessmentSection) => new PipingStructureFailureMechanismContext(
(PipingStructureFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(StabilityStoneCoverFailureMechanism),
(mechanism, assessmentSection) => new StabilityStoneCoverFailureMechanismContext(
(StabilityStoneCoverFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(TechnicalInnovationFailureMechanism),
(mechanism, assessmentSection) => new TechnicalInnovationFailureMechanismContext(
(TechnicalInnovationFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(StrengthStabilityLengthwiseConstructionFailureMechanism),
(mechanism, assessmentSection) => new StrengthStabilityLengthwiseConstructionFailureMechanismContext(
(StrengthStabilityLengthwiseConstructionFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(WaveImpactAsphaltCoverFailureMechanism),
(mechanism, assessmentSection) => new WaveImpactAsphaltCoverFailureMechanismContext(
(WaveImpactAsphaltCoverFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(WaterPressureAsphaltCoverFailureMechanism),
(mechanism, assessmentSection) => new WaterPressureAsphaltCoverFailureMechanismContext(
(WaterPressureAsphaltCoverFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(ClosingStructuresFailureMechanism),
(mechanism, assessmentSection) => new ClosingStructuresFailureMechanismContext(
(ClosingStructuresFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(MacroStabilityInwardsFailureMechanism),
(mechanism, assessmentSection) => new MacroStabilityInwardsFailureMechanismContext(
(MacroStabilityInwardsFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(MacroStabilityOutwardsFailureMechanism),
(mechanism, assessmentSection) => new MacroStabilityOutwardsFailureMechanismContext(
(MacroStabilityOutwardsFailureMechanism) mechanism,
assessmentSection)
),
new FailureMechanismContextAssociation(
typeof(StabilityPointStructuresFailureMechanism),
(mechanism, assessmentSection) => new StabilityPointStructuresFailureMechanismContext(
(StabilityPointStructuresFailureMechanism) mechanism,
assessmentSection)
)
};
#endregion
private RingtoetsRibbon ribbonCommandHandler;
private IAssessmentSectionFromFileCommandHandler assessmentSectionFromFileCommandHandler;
private IHydraulicBoundaryLocationCalculationGuiService hydraulicBoundaryLocationCalculationGuiService;
private AssessmentSectionMerger assessmentSectionMerger;
public override IRibbonCommandHandler RibbonCommandHandler
{
get
{
return ribbonCommandHandler;
}
}
public override IGui Gui
{
get
{
return base.Gui;
}
set
{
RemoveOnOpenProjectListener(base.Gui);
base.Gui = value;
AddOnOpenProjectListener(value);
}
}
public override void Activate()
{
base.Activate();
if (Gui == null)
{
throw new InvalidOperationException("Gui cannot be null");
}
assessmentSectionFromFileCommandHandler = new AssessmentSectionFromFileCommandHandler(Gui.MainWindow, Gui, Gui.DocumentViewController);
hydraulicBoundaryLocationCalculationGuiService = new HydraulicBoundaryLocationCalculationGuiService(Gui.MainWindow);
assessmentSectionMerger = new AssessmentSectionMerger(new AssessmentSectionMergeFilePathProvider(new DialogBasedInquiryHelper(Gui.MainWindow)),
new AssessmentSectionProvider(Gui.MainWindow),
new AssessmentSectionMergeComparer(),
new AssessmentSectionMergeDataProviderDialog(Gui.MainWindow),
new AssessmentSectionMergeHandler(Gui.ViewCommands));
ribbonCommandHandler = new RingtoetsRibbon
{
AddAssessmentSectionButtonCommand = new AddAssessmentSectionCommand(assessmentSectionFromFileCommandHandler)
};
}
///
/// Returns all instances provided for data of .
///
public override IEnumerable GetPropertyInfos()
{
yield return new PropertyInfo();
yield return new PropertyInfo();
yield return new PropertyInfo
{
CreateInstance = data => new BackgroundDataProperties(data)
};
yield return new PropertyInfo
{
CreateInstance = context => new HydraulicBoundaryDatabaseProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new AssessmentSectionCompositionProperties(
context.Parent,
new AssessmentSectionCompositionChangeHandler(Gui.ViewCommands))
};
yield return new PropertyInfo
{
CreateInstance = context => new NormProperties(
context.WrappedData,
new FailureMechanismContributionNormChangeHandler(context.AssessmentSection))
};
yield return new PropertyInfo, StandAloneFailureMechanismProperties>
{
CreateInstance = context => new StandAloneFailureMechanismProperties(context.WrappedData, context.Parent)
};
yield return new PropertyInfo
{
CreateInstance = context => new MacroStabilityOutwardsFailureMechanismProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new PipingStructureFailureMechanismProperties(context.WrappedData)
};
yield return new PropertyInfo, CalculationGroupContextProperties>
{
CreateInstance = context => new CalculationGroupContextProperties(context)
};
yield return new PropertyInfo, CalculationContextProperties>();
yield return new PropertyInfo
{
CreateInstance = context => new DesignWaterLevelCalculationsProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new DesignWaterLevelCalculationProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new WaveHeightCalculationsProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new WaveHeightCalculationProperties(context.WrappedData)
};
yield return new PropertyInfo();
yield return new PropertyInfo
{
CreateInstance = context => new ForeshoreProfileCollectionProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = selected => new TopLevelSubMechanismIllustrationPointProperties(selected.TopLevelSubMechanismIllustrationPoint,
selected.ClosingSituations)
};
yield return new PropertyInfo
{
CreateInstance = CreateTopLevelFaultTreeIllustrationPointProperties
};
yield return new PropertyInfo, FaultTreeIllustrationPointProperties>
{
CreateInstance = context => new FaultTreeIllustrationPointProperties(context.IllustrationPoint,
context.IllustrationPointNode.Children,
context.WindDirectionName,
context.ClosingSituation)
};
yield return new PropertyInfo, SubMechanismIllustrationPointProperties>
{
CreateInstance = context => new SubMechanismIllustrationPointProperties(context.IllustrationPoint,
context.WindDirectionName,
context.ClosingSituation)
};
yield return new PropertyInfo
{
CreateInstance = context => new FailureMechanismSectionsProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new ReferenceLineProperties(context.WrappedData)
};
yield return new PropertyInfo
{
CreateInstance = context => new FailureMechanismAssemblyCategoriesProperties(context.GetFailureMechanismCategoriesFunc(),
context.GetFailureMechanismSectionAssemblyCategoriesFunc())
};
yield return new PropertyInfo
{
CreateInstance = context => new FailureMechanismSectionAssemblyCategoriesProperties(context.GetFailureMechanismSectionAssemblyCategoriesFunc())
};
yield return new PropertyInfo
{
CreateInstance = context =>
{
IEnumerable>> calculationsPerCategoryBoundary =
DesignWaterLevelCalculationsGroupContextChildNodeObjects(context)
.Cast()
.Select(childContext => new Tuple>(childContext.CategoryBoundaryName,
childContext.WrappedData));
return new DesignWaterLevelCalculationsGroupProperties(context.WrappedData, calculationsPerCategoryBoundary);
}
};
yield return new PropertyInfo
{
CreateInstance = context =>
{
IEnumerable>> calculationsPerCategoryBoundary =
WaveHeightCalculationsGroupContextChildNodeObjects(context)
.Cast()
.Select(childContext => new Tuple>(childContext.CategoryBoundaryName,
childContext.WrappedData));
return new WaveHeightCalculationsGroupProperties(context.WrappedData, calculationsPerCategoryBoundary);
}
};
yield return new PropertyInfo
{
CreateInstance = context => new AssemblyResultCategoriesProperties(context.GetAssemblyCategoriesFunc(), context.WrappedData)
};
}
///
/// Returns all instances provided for data of .
///
public override IEnumerable GetViewInfos()
{
yield return new ViewInfo
{
GetViewName = (view, context) => RingtoetsDataResources.FailureMechanismContribution_DisplayName,
GetViewData = context => context.WrappedData,
Image = RingtoetsCommonFormsResources.FailureMechanismContributionIcon,
CloseForData = CloseFailureMechanismContributionViewForData,
CreateInstance = context => new FailureMechanismContributionView(context.Parent, Gui.ViewCommands)
};
yield return new ViewInfo
{
GetViewName = (view, context) => RingtoetsCommonFormsResources.Norms_DisplayName,
Image = RingtoetsCommonFormsResources.NormsIcon,
CloseForData = CloseAssessmentSectionCategoriesViewForData,
CreateInstance = context => new AssessmentSectionAssemblyCategoriesView(context.AssessmentSection.FailureMechanismContribution)
};
yield return new ViewInfo, DesignWaterLevelCalculationsView>
{
GetViewName = (view, context) => $"{RingtoetsCommonFormsResources.WaterLevelCalculations_DisplayName} - " +
$"{RingtoetsPluginHelper.FormatCategoryBoundaryName(context.CategoryBoundaryName)}",
GetViewData = context => context.WrappedData,
Image = RingtoetsCommonFormsResources.GenericInputOutputIcon,
CloseForData = CloseHydraulicBoundaryCalculationsViewForData,
CreateInstance = context => new DesignWaterLevelCalculationsView(context.WrappedData,
context.AssessmentSection,
context.GetNormFunc,
context.CategoryBoundaryName),
AfterCreate = (view, context) => { view.CalculationGuiService = hydraulicBoundaryLocationCalculationGuiService; }
};
yield return new ViewInfo, WaveHeightCalculationsView>
{
GetViewName = (view, context) => $"{RingtoetsCommonFormsResources.WaveHeightCalculations_DisplayName} - " +
$"{RingtoetsPluginHelper.FormatCategoryBoundaryName(context.CategoryBoundaryName)}",
GetViewData = context => context.WrappedData,
Image = RingtoetsCommonFormsResources.GenericInputOutputIcon,
CloseForData = CloseHydraulicBoundaryCalculationsViewForData,
CreateInstance = context => new WaveHeightCalculationsView(context.WrappedData,
context.AssessmentSection,
context.GetNormFunc,
context.CategoryBoundaryName),
AfterCreate = (view, context) => { view.CalculationGuiService = hydraulicBoundaryLocationCalculationGuiService; }
};
yield return new ViewInfo
{
GetViewName = (view, section) => RingtoetsFormsResources.AssessmentSectionMap_DisplayName,
Image = RingtoetsFormsResources.Map,
CreateInstance = section => new AssessmentSectionView(section)
};
yield return new ViewInfo, FailureMechanismView>
{
GetViewName = (view, context) => context.WrappedData.Name,
Image = RingtoetsCommonFormsResources.CalculationIcon,
CloseForData = CloseFailureMechanismViewForData,
AdditionalDataCheck = context => context.WrappedData.IsRelevant,
CreateInstance = context => new FailureMechanismView(context.WrappedData, context.Parent)
};
yield return CreateFailureMechanismResultViewInfo<
GrassCoverSlipOffInwardsFailureMechanism,
GrassCoverSlipOffInwardsFailureMechanismSectionResult,
GrassCoverSlipOffInwardsResultView,
GrassCoverSlipOffInwardsSectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new GrassCoverSlipOffInwardsResultView(
context.WrappedData,
(GrassCoverSlipOffInwardsFailureMechanism) context.FailureMechanism));
yield return CreateFailureMechanismResultViewInfo<
GrassCoverSlipOffOutwardsFailureMechanism,
GrassCoverSlipOffOutwardsFailureMechanismSectionResult,
GrassCoverSlipOffOutwardsResultView,
GrassCoverSlipOffOutwardsSectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new GrassCoverSlipOffOutwardsResultView(
context.WrappedData,
(GrassCoverSlipOffOutwardsFailureMechanism) context.FailureMechanism));
yield return CreateFailureMechanismResultViewInfo<
MicrostabilityFailureMechanism,
MicrostabilityFailureMechanismSectionResult,
MicrostabilityResultView,
MicrostabilitySectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new MicrostabilityResultView(
context.WrappedData,
(MicrostabilityFailureMechanism) context.FailureMechanism));
yield return CreateFailureMechanismResultViewInfo<
PipingStructureFailureMechanism,
PipingStructureFailureMechanismSectionResult,
PipingStructureResultView,
PipingStructureSectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new PipingStructureResultView(
context.WrappedData,
(PipingStructureFailureMechanism) context.FailureMechanism));
yield return CreateFailureMechanismResultViewInfo<
TechnicalInnovationFailureMechanism,
TechnicalInnovationFailureMechanismSectionResult,
TechnicalInnovationResultView,
TechnicalInnovationSectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new TechnicalInnovationResultView(
context.WrappedData,
(TechnicalInnovationFailureMechanism) context.FailureMechanism));
yield return CreateFailureMechanismResultViewInfo<
StrengthStabilityLengthwiseConstructionFailureMechanism,
StrengthStabilityLengthwiseConstructionFailureMechanismSectionResult,
StrengthStabilityLengthwiseConstructionResultView,
StrengthStabilityLengthwiseConstructionSectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new StrengthStabilityLengthwiseConstructionResultView(
context.WrappedData,
(StrengthStabilityLengthwiseConstructionFailureMechanism) context.FailureMechanism));
yield return CreateFailureMechanismResultViewInfo<
WaterPressureAsphaltCoverFailureMechanism,
WaterPressureAsphaltCoverFailureMechanismSectionResult,
WaterPressureAsphaltCoverResultView,
WaterPressureAsphaltCoverSectionResultRow,
FailureMechanismAssemblyCategoryGroupControl>(
context => new WaterPressureAsphaltCoverResultView(
context.WrappedData,
(WaterPressureAsphaltCoverFailureMechanism) context.FailureMechanism));
yield return new ViewInfo<
ProbabilityFailureMechanismSectionResultContext,
IObservableEnumerable,
MacroStabilityOutwardsResultView>
{
GetViewName = (view, context) => RingtoetsCommonFormsResources.FailureMechanism_AssessmentResult_DisplayName,
Image = RingtoetsCommonFormsResources.FailureMechanismSectionResultIcon,
CloseForData = CloseFailureMechanismResultViewForData,
GetViewData = context => context.WrappedData,
CreateInstance = context => new MacroStabilityOutwardsResultView(
context.WrappedData,
(MacroStabilityOutwardsFailureMechanism) context.FailureMechanism,
context.AssessmentSection)
};
yield return new ViewInfo
{
GetViewName = (view, comment) => Resources.Comment_DisplayName,
GetViewData = comment => comment,
Image = RingtoetsCommonFormsResources.EditDocumentIcon,
CloseForData = CloseCommentViewForData
};
yield return new ViewInfo, FailureMechanismSectionsView>
{
GetViewName = (view, context) => RingtoetsCommonFormsResources.FailureMechanismSections_DisplayName,
Image = RingtoetsCommonFormsResources.SectionsIcon,
CloseForData = RingtoetsPluginHelper.ShouldCloseForFailureMechanismView,
CreateInstance = context => new FailureMechanismSectionsView(context.WrappedData.Sections, context.WrappedData),
GetViewData = context => context.WrappedData.Sections
};
yield return new ViewInfo
{
Image = RingtoetsCommonFormsResources.GeneralOutputIcon,
GetViewName = (view, context) => RingtoetsCommonFormsResources.CalculationOutput_DisplayName,
GetViewData = context => context.WrappedData,
CloseForData = RingtoetsPluginHelper.ShouldCloseViewWithCalculationData,
CreateInstance = context => new GeneralResultFaultTreeIllustrationPointView(() => context.WrappedData.Output?.GeneralResult)
};
yield return new ViewInfo
{
GetViewName = (view, context) => Resources.AssemblyResultTotal_DisplayName,
Image = Resources.AssemblyResultTotal,
CloseForData = CloseAssemblyResultTotalViewForData,
CreateInstance = context => new AssemblyResultTotalView(context.WrappedData)
};
yield return new ViewInfo
{
GetViewName = (view, context) => RingtoetsFormsResources.AssemblyResultPerSection_DisplayName,
Image = Resources.AssemblyResultPerSection,
CloseForData = CloseAssemblyResultPerSectionViewForData,
CreateInstance = context => new AssemblyResultPerSectionView(context.WrappedData)
};
yield return new ViewInfo
{
GetViewName = (view, context) => RingtoetsCommonFormsResources.AssemblyCategories_DisplayName,
Image = RingtoetsCommonFormsResources.NormsIcon,
CloseForData = RingtoetsPluginHelper.ShouldCloseForFailureMechanismView,
CreateInstance = context => new FailureMechanismAssemblyCategoriesView(context.WrappedData,
context.AssessmentSection,
context.GetFailureMechanismCategoriesFunc,
context.GetFailureMechanismSectionAssemblyCategoriesFunc)
};
yield return new ViewInfo
{
GetViewName = (view, context) => RingtoetsCommonFormsResources.AssemblyCategories_DisplayName,
Image = RingtoetsCommonFormsResources.NormsIcon,
CloseForData = RingtoetsPluginHelper.ShouldCloseForFailureMechanismView,
CreateInstance = context => new MacroStabilityOutwardsAssemblyCategoriesView((MacroStabilityOutwardsFailureMechanism) context.WrappedData,
context.AssessmentSection,
context.GetFailureMechanismSectionAssemblyCategoriesFunc)
};
yield return new ViewInfo
{
GetViewName = (view, context) => RingtoetsCommonFormsResources.AssemblyCategories_DisplayName,
Image = RingtoetsCommonFormsResources.NormsIcon,
CloseForData = CloseAssemblyResultCategoriesViewForData,
CreateInstance = context => new AssemblyResultCategoriesView(context.WrappedData,
context.GetAssemblyCategoriesFunc)
};
}
public override IEnumerable GetImportInfos()
{
yield return new ImportInfo
{
Name = RingtoetsCommonDataResources.ReferenceLine_DisplayName,
Category = RingtoetsCommonFormsResources.Ringtoets_Category,
Image = RingtoetsCommonFormsResources.ReferenceLineIcon,
FileFilterGenerator = new FileFilterGenerator(RingtoetsCommonIOResources.Shape_file_filter_Extension,
RingtoetsCommonIOResources.Shape_file_filter_Description),
CreateFileImporter = (context, filePath) => new ReferenceLineImporter(context.WrappedData,
new ReferenceLineReplacementHandler(Gui.ViewCommands),
filePath)
};
yield return new ImportInfo
{
Name = RingtoetsCommonFormsResources.FailureMechanismSections_DisplayName,
Category = RingtoetsCommonFormsResources.Ringtoets_Category,
Image = RingtoetsCommonFormsResources.SectionsIcon,
FileFilterGenerator = new FileFilterGenerator(RingtoetsCommonIOResources.Shape_file_filter_Extension,
RingtoetsCommonIOResources.Shape_file_filter_Description),
IsEnabled = context => context.AssessmentSection.ReferenceLine != null,
CreateFileImporter = (context, filePath) => new FailureMechanismSectionsImporter(context.WrappedData,
context.AssessmentSection.ReferenceLine,
filePath,
new FailureMechanismSectionReplaceStrategy(context.WrappedData),
new ImportMessageProvider())
};
yield return new ImportInfo
{
CreateFileImporter = (context, filePath) =>
new ForeshoreProfilesImporter(context.WrappedData,
context.ParentAssessmentSection.ReferenceLine,
filePath,
new ForeshoreProfileReplaceDataStrategy(context.ParentFailureMechanism,
context.WrappedData),
new ImportMessageProvider()),
Name = Resources.ForeshoreProfilesImporter_DisplayName,
Category = RingtoetsCommonFormsResources.Ringtoets_Category,
Image = Resources.Foreshore,
FileFilterGenerator = CreateForeshoreProfileFileFilterGenerator,
IsEnabled = context => context.ParentAssessmentSection.ReferenceLine != null,
VerifyUpdates = context => VerifyForeshoreProfileUpdates(context, Resources.RingtoetsPlugin_VerifyForeshoreProfileUpdates_When_importing_ForeshoreProfile_definitions_assigned_to_calculations_output_will_be_cleared_confirm)
};
}
public override IEnumerable GetExportInfos()
{
yield return new ExportInfo
{
Name = RingtoetsCommonDataResources.ReferenceLine_DisplayName,
CreateFileExporter = (context, filePath) => new ReferenceLineExporter(context.WrappedData.ReferenceLine, context.WrappedData.Id, filePath),
IsEnabled = context => context.WrappedData.ReferenceLine != null,
FileFilterGenerator = new FileFilterGenerator(RingtoetsCommonIOResources.Shape_file_filter_Extension,
RingtoetsCommonIOResources.Shape_file_filter_Description)
};
yield return new ExportInfo
{
Name = RingtoetsCommonDataResources.HydraulicBoundaryConditions_DisplayName,
CreateFileExporter = (context, filePath) => new HydraulicBoundaryLocationsExporter(context.AssessmentSection, filePath),
IsEnabled = context => context.WrappedData.IsLinked(),
FileFilterGenerator = new FileFilterGenerator(RingtoetsCommonIOResources.Shape_file_filter_Extension,
RingtoetsCommonIOResources.Shape_file_filter_Description)
};
yield return new ExportInfo
{
Name = Resources.AssemblyResult_DisplayName,
CreateFileExporter = (context, filePath) => new AssemblyExporter(context.WrappedData, filePath),
IsEnabled = context => context.WrappedData.ReferenceLine != null,
FileFilterGenerator = new FileFilterGenerator(Resources.AssemblyResult_file_filter_Extension,
Resources.AssemblyResult_file_filter_Description)
};
}
public override IEnumerable GetUpdateInfos()
{
yield return new UpdateInfo
{
CreateFileImporter = (context, filePath) =>
new ForeshoreProfilesImporter(context.WrappedData,
context.ParentAssessmentSection.ReferenceLine,
filePath,
new ForeshoreProfileUpdateDataStrategy(context.ParentFailureMechanism, context.WrappedData),
new UpdateMessageProvider()),
Name = Resources.ForeshoreProfilesImporter_DisplayName,
Category = RingtoetsCommonFormsResources.Ringtoets_Category,
Image = Resources.Foreshore,
FileFilterGenerator = CreateForeshoreProfileFileFilterGenerator,
CurrentPath = context => context.WrappedData.SourcePath,
IsEnabled = context => context.WrappedData.SourcePath != null,
VerifyUpdates = context => VerifyForeshoreProfileUpdates(context, Resources.RingtoetsPlugin_VerifyForeshoreProfileUpdates_When_updating_ForeshoreProfile_definitions_assigned_to_calculations_output_will_be_cleared_confirm)
};
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
GrassCoverSlipOffInwardsFailureMechanismSectionsContext, GrassCoverSlipOffInwardsFailureMechanism, GrassCoverSlipOffInwardsFailureMechanismSectionResult>(
new GrassCoverSlipOffInwardsFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
GrassCoverSlipOffOutwardsFailureMechanismSectionsContext, GrassCoverSlipOffOutwardsFailureMechanism, GrassCoverSlipOffOutwardsFailureMechanismSectionResult>(
new GrassCoverSlipOffOutwardsFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
MacroStabilityOutwardsFailureMechanismSectionsContext, MacroStabilityOutwardsFailureMechanism, MacroStabilityOutwardsFailureMechanismSectionResult>(
new MacroStabilityOutwardsFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
MicrostabilityFailureMechanismSectionsContext, MicrostabilityFailureMechanism, MicrostabilityFailureMechanismSectionResult>(
new MicrostabilityFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
PipingStructureFailureMechanismSectionsContext, PipingStructureFailureMechanism, PipingStructureFailureMechanismSectionResult>(
new PipingStructureFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
StrengthStabilityLengthwiseConstructionFailureMechanismSectionsContext, StrengthStabilityLengthwiseConstructionFailureMechanism, StrengthStabilityLengthwiseConstructionFailureMechanismSectionResult>(
new StrengthStabilityLengthwiseConstructionFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
TechnicalInnovationFailureMechanismSectionsContext, TechnicalInnovationFailureMechanism, TechnicalInnovationFailureMechanismSectionResult>(
new TechnicalInnovationFailureMechanismSectionResultUpdateStrategy());
yield return RingtoetsUpdateInfoFactory.CreateFailureMechanismSectionsUpdateInfo<
WaterPressureAsphaltCoverFailureMechanismSectionsContext, WaterPressureAsphaltCoverFailureMechanism, WaterPressureAsphaltCoverFailureMechanismSectionResult>(
new WaterPressureAsphaltCoverFailureMechanismSectionResultUpdateStrategy());
}
///
/// Gets the child data instances that have definitions of some parent data object.
///
/// The parent data object.
/// Sequence of child data.
public override IEnumerable