From 4c18762f47712c499f55fa33656410564c2d1835 Mon Sep 17 00:00:00 2001 From: Robert McIntosh <261477+rwmcintosh@users.noreply.github.com> Date: Tue, 13 Feb 2024 12:40:19 -0500 Subject: [PATCH] Fixes #2203 Instantiate a single observed data simple chart and update that single instance each time the user selects an observed data (#2204) --- src/OSPSuite.Assets/UIConstants.cs | 1 + .../Presenters/Charts/SimpleChartPresenter.cs | 38 ++-- ...terIdentificationDataSelectionPresenter.cs | 58 ++---- ...terIdentificationOutputMappingPresenter.cs | 43 ++--- ...nWeightedObservedDataCollectorPresenter.cs | 151 --------------- ...tificationWeightedObservedDataPresenter.cs | 40 ++-- .../WeightedDataRepositoryDataPresenter.cs | 18 +- ...cationWeightedObservedDataCollectorView.cs | 13 -- ...rIdentificationWeightedObservedDataView.cs | 1 + .../IWeightedDataRepositoryDataView.cs | 1 + ...arameterIdentificationOutputMappingView.cs | 39 ++-- ...ghtedObservedDataCollectorView.Designer.cs | 59 ------ ...cationWeightedObservedDataCollectorView.cs | 97 ---------- ...tionWeightedObservedDataCollectorView.resx | 123 ------------- ...cationWeightedObservedDataView.Designer.cs | 24 ++- ...rIdentificationWeightedObservedDataView.cs | 28 ++- .../WeightedDataRepositoryDataView.cs | 24 +-- ...entificationDataSelectionPresenterSpecs.cs | 32 +--- ...htedObservedDataCollectorPresenterSpecs.cs | 174 ------------------ 19 files changed, 135 insertions(+), 829 deletions(-) delete mode 100644 src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorPresenter.cs delete mode 100644 src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataCollectorView.cs delete mode 100644 src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.Designer.cs delete mode 100644 src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.cs delete mode 100644 src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.resx delete mode 100644 tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationWeightedObservedDataCollectorPresenterSpecs.cs diff --git a/src/OSPSuite.Assets/UIConstants.cs b/src/OSPSuite.Assets/UIConstants.cs index 580859162..4ca4edd45 100644 --- a/src/OSPSuite.Assets/UIConstants.cs +++ b/src/OSPSuite.Assets/UIConstants.cs @@ -222,6 +222,7 @@ public static class Captions public static readonly string Yes = "Yes"; public static readonly string ReallyRemoveObservedDataFromSimulation = $"Really remove {ObjectTypes.ObservedData} from the simulation?\nHint: {ObjectTypes.ObservedData} will not be deleted from the project"; public static readonly string SimulationWasCanceled = "Simulation was canceled"; + public static readonly string SelectMappingToShowObservedData = "Select mapping to show observed data"; public static string ShouldWatermarkBeUsedForChartExportToClipboard(string applicationName, string optionLocation) { diff --git a/src/OSPSuite.Presentation/Presenters/Charts/SimpleChartPresenter.cs b/src/OSPSuite.Presentation/Presenters/Charts/SimpleChartPresenter.cs index 2f983faef..bc748e629 100644 --- a/src/OSPSuite.Presentation/Presenters/Charts/SimpleChartPresenter.cs +++ b/src/OSPSuite.Presentation/Presenters/Charts/SimpleChartPresenter.cs @@ -66,9 +66,11 @@ public interface ISimpleChartPresenter : IPresenter void Refresh(); /// - /// Hook that can be executed on the dataColumn to modify them, reorder them etc.. + /// Hook that can be executed on the dataColumn to modify them, reorder them etc.. /// Func, IEnumerable> PreExportHook { get; set; } + + void Clear(); } public class SimpleChartPresenter : AbstractCommandCollectorPresenter, ISimpleChartPresenter @@ -103,6 +105,8 @@ public Func, IEnumerable> PreExportHook set => _chartDisplayPresenter.PreExportHook = value; } + public void Clear() => _chartDisplayPresenter.Clear(); + public Action HotTracked { set => _chartDisplayPresenter.HotTracked = value; @@ -146,15 +150,12 @@ private void bindToChart() public CurveChart Plot(DataRepository dataRepository, Scalings scale) { Chart = _chartFactory.CreateChartFor(dataRepository, scale); - setChartScalingForObservedData(new[] {dataRepository}); + setChartScalingForObservedData(new[] { dataRepository }); bindToChart(); return Chart; } - public CurveChart Plot(DataRepository dataRepository) - { - return Plot(dataRepository, _presentationUserSettings.DefaultChartYScaling); - } + public CurveChart Plot(DataRepository dataRepository) => Plot(dataRepository, _presentationUserSettings.DefaultChartYScaling); public CurveChart PlotObservedData(IEnumerable observedData) { @@ -175,20 +176,11 @@ private void setChartScalingForObservedData(IReadOnlyList observ Chart.DefaultYAxisScaling = Scalings.Linear; } - private bool shouldUseLinearScaling(IReadOnlyList observedData) - { - return observedData.Any(dataRepositoryHasFraction); - } + private bool shouldUseLinearScaling(IReadOnlyList observedData) => observedData.Any(dataRepositoryHasFraction); - private bool dataRepositoryHasFraction(DataRepository dataRepository) - { - return dataRepository.AllButBaseGrid().Any(x => x.IsFraction()); - } + private bool dataRepositoryHasFraction(DataRepository dataRepository) => dataRepository.AllButBaseGrid().Any(x => x.IsFraction()); - public CurveChart PlotObservedData(DataRepository observedData) - { - return PlotObservedData(new[] {observedData}).WithName(observedData.Name); - } + public CurveChart PlotObservedData(DataRepository observedData) => PlotObservedData(new[] { observedData }).WithName(observedData.Name); private void setScaleInView(CurveChart chart) { @@ -198,15 +190,9 @@ private void setScaleInView(CurveChart chart) _view.SetChartScale(yAxis.Scaling); } - private Axis getXAxis(CurveChart chart) - { - return chart.XAxis; - } + private Axis getXAxis(CurveChart chart) => chart.XAxis; - private Axis getYAxis(CurveChart chart) - { - return chart.YAxis; - } + private Axis getYAxis(CurveChart chart) => chart.YAxis; private void setAxesCaptions(DataRepository observedData) { diff --git a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationDataSelectionPresenter.cs b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationDataSelectionPresenter.cs index a7255eb0d..fc7e88606 100644 --- a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationDataSelectionPresenter.cs +++ b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationDataSelectionPresenter.cs @@ -1,17 +1,17 @@ using System; -using OSPSuite.Utility.Events; using OSPSuite.Core.Domain; using OSPSuite.Core.Domain.ParameterIdentifications; using OSPSuite.Core.Events; using OSPSuite.Presentation.Views.ParameterIdentifications; +using OSPSuite.Utility.Events; namespace OSPSuite.Presentation.Presenters.ParameterIdentifications { public interface IParameterIdentificationDataSelectionPresenter : IParameterIdentificationItemPresenter, - IListener, - IListener, - IListener, - IListener, + IListener, + IListener, + IListener, + IListener, IListener { event EventHandler SimulationAdded; @@ -22,7 +22,7 @@ public class ParameterIdentificationDataSelectionPresenter : AbstractSubPresente { private readonly IParameterIdentificationSimulationSelectionPresenter _simulationSelectionPresenter; private readonly IParameterIdentificationOutputMappingPresenter _outputMappingPresenter; - private readonly IParameterIdentificationWeightedObservedDataCollectorPresenter _weightedObservedDataCollectorPresenter; + private readonly IParameterIdentificationWeightedObservedDataPresenter _weightedObservedDataPresenter; private ParameterIdentification _parameterIdentification; public event EventHandler SimulationAdded = delegate { }; public event EventHandler SimulationRemoved = delegate { }; @@ -30,15 +30,15 @@ public class ParameterIdentificationDataSelectionPresenter : AbstractSubPresente public ParameterIdentificationDataSelectionPresenter(IParameterIdentificationDataSelectionView view, IParameterIdentificationSimulationSelectionPresenter simulationSelectionPresenter, IParameterIdentificationOutputMappingPresenter outputMappingPresenter, - IParameterIdentificationWeightedObservedDataCollectorPresenter weightedObservedDataCollectorPresenter) : base(view) + IParameterIdentificationWeightedObservedDataPresenter weightedObservedDataPresenter) : base(view) { _simulationSelectionPresenter = simulationSelectionPresenter; _outputMappingPresenter = outputMappingPresenter; - _weightedObservedDataCollectorPresenter = weightedObservedDataCollectorPresenter; + _weightedObservedDataPresenter = weightedObservedDataPresenter; view.AddSimulationSelectionView(_simulationSelectionPresenter.BaseView); view.AddOutputMappingView(_outputMappingPresenter.BaseView); - view.AddWeightedObservedDataCollectorView(_weightedObservedDataCollectorPresenter.BaseView); - AddSubPresenters(_simulationSelectionPresenter, _outputMappingPresenter, _weightedObservedDataCollectorPresenter); + view.AddWeightedObservedDataCollectorView(_weightedObservedDataPresenter.BaseView); + AddSubPresenters(_simulationSelectionPresenter, _outputMappingPresenter, _weightedObservedDataPresenter); _simulationSelectionPresenter.SimulationAdded += (o, e) => simulationAdded(e); _simulationSelectionPresenter.SimulationRemoved += (o, e) => simulationRemoved(e); @@ -48,20 +48,11 @@ public ParameterIdentificationDataSelectionPresenter(IParameterIdentificationDat _outputMappingPresenter.ObservedDataSelected += (o, e) => observedDataSelected(e.WeightedObservedData); } - private void observedDataUnmapped(WeightedObservedData weightedObservedData) - { - _weightedObservedDataCollectorPresenter.RemoveObservedData(weightedObservedData); - } + private void observedDataUnmapped(WeightedObservedData weightedObservedData) => _weightedObservedDataPresenter.Clear(weightedObservedData); - private void observedDataSelected(WeightedObservedData weightedObservedData) - { - _weightedObservedDataCollectorPresenter.SelectObservedData(weightedObservedData); - } + private void observedDataSelected(WeightedObservedData weightedObservedData) => _weightedObservedDataPresenter.Edit(weightedObservedData); - private void observedDataMapped(WeightedObservedData weightedObservedData) - { - _weightedObservedDataCollectorPresenter.AddObservedData(weightedObservedData); - } + private void observedDataMapped(WeightedObservedData weightedObservedData) => _weightedObservedDataPresenter.Edit(weightedObservedData); private void simulationAdded(SimulationEventArgs e) { @@ -72,7 +63,6 @@ private void simulationAdded(SimulationEventArgs e) private void updateOutputAndWeightsPresenters() { _outputMappingPresenter.Refresh(); - _weightedObservedDataCollectorPresenter.Refresh(); ViewChanged(); } @@ -87,7 +77,6 @@ public void EditParameterIdentification(ParameterIdentification parameterIdentif _parameterIdentification = parameterIdentification; _simulationSelectionPresenter.EditParameterIdentification(_parameterIdentification); _outputMappingPresenter.EditParameterIdentification(_parameterIdentification); - _weightedObservedDataCollectorPresenter.EditParameterIdentification(_parameterIdentification); } public void Handle(ObservedDataAddedToAnalysableEvent eventToHandle) @@ -104,10 +93,7 @@ private bool canHandle(AnalysableEvent analysableEvent) return identificationUsesSimulation(analysableEvent.Analysable as ISimulation); } - private bool identificationUsesSimulation(ISimulation simulation) - { - return _parameterIdentification.UsesSimulation(simulation); - } + private bool identificationUsesSimulation(ISimulation simulation) => _parameterIdentification.UsesSimulation(simulation); public void Handle(ObservedDataRemovedFromAnalysableEvent eventToHandle) { @@ -124,21 +110,14 @@ public void Handle(RenamedEvent eventToHandle) _outputMappingPresenter.Refresh(); } - private bool canHandle(RenamedEvent eventToHandle) - { - return identificationUsesSimulation(eventToHandle.RenamedObject as ISimulation); - } + private bool canHandle(RenamedEvent eventToHandle) => identificationUsesSimulation(eventToHandle.RenamedObject as ISimulation); - public void Handle(SimulationRemovedEvent eventToHandle) - { - refreshSubPresenters(); - } + public void Handle(SimulationRemovedEvent eventToHandle) => refreshSubPresenters(); private void refreshSubPresenters() { _simulationSelectionPresenter.Refresh(); _outputMappingPresenter.Refresh(); - _weightedObservedDataCollectorPresenter.Refresh(); } public void Handle(SimulationReplacedInParameterAnalyzableEvent eventToHandle) @@ -147,9 +126,6 @@ public void Handle(SimulationReplacedInParameterAnalyzableEvent eventToHandle) refreshSubPresenters(); } - private bool canHandle(SimulationReplacedInParameterAnalyzableEvent eventToHandle) - { - return Equals(eventToHandle.ParameterAnalysable, _parameterIdentification); - } + private bool canHandle(SimulationReplacedInParameterAnalyzableEvent eventToHandle) => Equals(eventToHandle.ParameterAnalysable, _parameterIdentification); } } \ No newline at end of file diff --git a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationOutputMappingPresenter.cs b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationOutputMappingPresenter.cs index 136e2434d..f0e5fa63a 100644 --- a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationOutputMappingPresenter.cs +++ b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationOutputMappingPresenter.cs @@ -96,15 +96,12 @@ public void Refresh() this.DoWithinLatch(() => { UpdateCache(); - updateOutputMapppingList(); - _view.BindTo(_allOutputMappingDTOs); + updateOutputMappingList(); }); + _view.BindTo(_allOutputMappingDTOs); } - public void UpdateCache() - { - _allAvailableOutputs.Clear(); - } + public void UpdateCache() => _allAvailableOutputs.Clear(); public void AddOutputMapping() { @@ -114,7 +111,7 @@ public void AddOutputMapping() OnStatusChanged(); } - private void updateOutputMapppingList() + private void updateOutputMappingList() { _allOutputMappingDTOs.Clear(); _parameterIdentification.AllOutputMappings.Each(x => _allOutputMappingDTOs.Add(mapFrom(x))); @@ -137,20 +134,11 @@ public IEnumerable AllAvailableOutputs } } - private SimulationQuantitySelectionDTO mapFrom(ISimulation simulation, IQuantity quantity) - { - return _simulationQuantitySelectionDTOMapper.MapFrom(simulation, quantity); - } + private SimulationQuantitySelectionDTO mapFrom(ISimulation simulation, IQuantity quantity) => _simulationQuantitySelectionDTOMapper.MapFrom(simulation, quantity); - private OutputMappingDTO mapFrom(OutputMapping outputMapping) - { - return _outputMappingDTOMapper.MapFrom(outputMapping, AllAvailableOutputs); - } + private OutputMappingDTO mapFrom(OutputMapping outputMapping) => _outputMappingDTOMapper.MapFrom(outputMapping, AllAvailableOutputs); - public IEnumerable AllObservedDataFor(OutputMappingDTO outputMappingDTO) - { - return allPossibleObservedDataForOutput(outputMappingDTO.Output); - } + public IEnumerable AllObservedDataFor(OutputMappingDTO outputMappingDTO) => allPossibleObservedDataForOutput(outputMappingDTO.Output); private IEnumerable allPossibleObservedDataForOutput(SimulationQuantitySelectionDTO outputSelectionDTO) { @@ -165,7 +153,7 @@ private IEnumerable allPossibleObservedDataForOutput(SimulationQ public void ObservedDataSelectionChanged(OutputMappingDTO dto, DataRepository newObservedData, DataRepository oldObservedData) { - var allOutputsUsingObservedData = _allOutputMappingDTOs.Where(x => Equals(x.ObservedData, newObservedData)).Except(new[] {dto}).ToList(); + var allOutputsUsingObservedData = _allOutputMappingDTOs.Where(x => Equals(x.ObservedData, newObservedData)).Except(new[] { dto }).ToList(); if (observedDataAlreadySelectedForSameOutput(dto.Output, newObservedData)) { @@ -197,10 +185,7 @@ public void ObservedDataSelectionChanged(OutputMappingDTO dto, DataRepository ne return allIds.Max() + 1; } - private bool observedDataAlreadySelectedForSameOutput(SimulationQuantitySelectionDTO outputDTO, DataRepository observedData) - { - return _allOutputMappingDTOs.Count(x => Equals(x.Output, outputDTO) && Equals(x.ObservedData, observedData)) > 1; - } + private bool observedDataAlreadySelectedForSameOutput(SimulationQuantitySelectionDTO outputDTO, DataRepository observedData) => _allOutputMappingDTOs.Count(x => Equals(x.Output, outputDTO) && Equals(x.ObservedData, observedData)) > 1; public void OutputSelectionChanged(OutputMappingDTO dto, SimulationQuantitySelectionDTO newOutput, SimulationQuantitySelectionDTO oldOutput) { @@ -214,10 +199,7 @@ public void OutputSelectionChanged(OutputMappingDTO dto, SimulationQuantitySelec dto.Scaling = _parameterIdentificationTask.DefaultScalingFor(newOutput.Quantity); } - public void Select(OutputMappingDTO outputMappingDTO) - { - this.DoWithinLatch(() => ObservedDataSelected(this, new ObservedDataEventArgs(outputMappingDTO.WeightedObservedData))); - } + public void Select(OutputMappingDTO outputMappingDTO) => this.DoWithinLatch(() => ObservedDataSelected(this, new ObservedDataEventArgs(outputMappingDTO.WeightedObservedData))); public void RemoveOutputMapping(OutputMappingDTO outputMappingDTO) { @@ -234,9 +216,6 @@ private void raiseObservedDataUnmappedFor(WeightedObservedData weightedObservedD ObservedDataUnmapped(this, new ObservedDataEventArgs(weightedObservedData)); } - private void raiseObservedDataMappedFor(WeightedObservedData weightedObservedData) - { - ObservedDataMapped(this, new ObservedDataEventArgs(weightedObservedData)); - } + private void raiseObservedDataMappedFor(WeightedObservedData weightedObservedData) => ObservedDataMapped(this, new ObservedDataEventArgs(weightedObservedData)); } } \ No newline at end of file diff --git a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorPresenter.cs b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorPresenter.cs deleted file mode 100644 index f8f16e7e4..000000000 --- a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorPresenter.cs +++ /dev/null @@ -1,151 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using OSPSuite.Core.Domain; -using OSPSuite.Core.Domain.ParameterIdentifications; -using OSPSuite.Presentation.Core; -using OSPSuite.Presentation.Views; -using OSPSuite.Presentation.Views.ParameterIdentifications; -using OSPSuite.Utility; -using OSPSuite.Utility.Collections; -using OSPSuite.Utility.Events; -using OSPSuite.Utility.Extensions; - -namespace OSPSuite.Presentation.Presenters.ParameterIdentifications -{ - public interface IParameterIdentificationWeightedObservedDataCollectorPresenter : IPresenter, IParameterIdentificationPresenter, ILatchable - { - void AddObservedData(WeightedObservedData weightedObservedData); - void SelectObservedData(WeightedObservedData weightedObservedData); - void RemoveObservedData(WeightedObservedData weightedObservedData); - void Refresh(); - void ObservedDataViewSelected(IView view); - } - - public class ParameterIdentificationWeightedObservedDataCollectorPresenter : AbstractPresenter, IParameterIdentificationWeightedObservedDataCollectorPresenter - { - private readonly IApplicationController _applicationController; - private readonly IEventPublisher _eventPublisher; - private ParameterIdentification _parameterIdentification; - public bool IsLatched { get; set; } - - private readonly Cache _allObservedDataPresenters; - - public ParameterIdentificationWeightedObservedDataCollectorPresenter(IParameterIdentificationWeightedObservedDataCollectorView view, IApplicationController applicationController, IEventPublisher eventPublisher) : base(view) - { - _applicationController = applicationController; - _eventPublisher = eventPublisher; - _allObservedDataPresenters = new Cache(onMissingKey: x => null); - } - - public void EditParameterIdentification(ParameterIdentification parameterIdentification) - { - _parameterIdentification = parameterIdentification; - clear(); - var allWeightedObservedData = _parameterIdentification.AllOutputMappings.Select(x => x.WeightedObservedData).ToList(); - addWeightedObservedDataToView(allWeightedObservedData); - SelectObservedData(allWeightedObservedData.FirstOrDefault()); - } - - private void addWeightedObservedDataToView(List allWeightedObservedData) - { - this.DoWithinLatch(() => - { - using (new BatchUpdate(View)) - { - allWeightedObservedData.Each(AddObservedData); - } - }); - } - - public void AddObservedData(WeightedObservedData weightedObservedData) - { - // You can get a null weighted observed data when a mapping has not been assigned observed data yet or if mapping is corrupted - if (weightedObservedData?.ObservedData == null) - return; - - if (_allObservedDataPresenters.Contains(weightedObservedData)) - return; - - var presenter = _applicationController.Start(); - _allObservedDataPresenters.Add(weightedObservedData, presenter); - edit(weightedObservedData); - _view.AddObservedDataView(presenter.View); - SelectObservedData(weightedObservedData); - } - - public void SelectObservedData(WeightedObservedData weightedObservedData) - { - if (IsLatched) return; - - var observedDataPresenter = edit(weightedObservedData); - if (observedDataPresenter == null) return; - - _view.SelectObservedDataView(observedDataPresenter.View); - } - - public void RemoveObservedData(WeightedObservedData weightedObservedData) - { - var presenter = _allObservedDataPresenters[weightedObservedData]; - if (presenter == null) - return; - - _allObservedDataPresenters.Remove(weightedObservedData); - removeObservedDataPresenter(presenter); - } - - private void removeObservedDataPresenter(IParameterIdentificationWeightedObservedDataPresenter presenter) - { - presenter.ReleaseFrom(_eventPublisher); - _view.RemoveObservedDataView(presenter.View); - } - - public void Refresh() - { - EditParameterIdentification(_parameterIdentification); - } - - public void ObservedDataViewSelected(IView view) - { - this.DoWithinLatch(() => - { - var weightedObservedData = findObservedDataEditedBy(view); - edit(weightedObservedData); - }); - } - - private IParameterIdentificationWeightedObservedDataPresenter edit(WeightedObservedData weightedObservedData) - { - var observedDataPresenter = _allObservedDataPresenters[weightedObservedData]; - observedDataPresenter?.Edit(weightedObservedData); - - return observedDataPresenter; - } - - private WeightedObservedData findObservedDataEditedBy(IView view) - { - return _allObservedDataPresenters.KeyValues.Where(x => Equals(x.Value.View, view)).Select(x => x.Key).FirstOrDefault(); - } - - private void clear() - { - using (new BatchUpdate(View)) - { - _view.Clear(); - _allObservedDataPresenters.Each(p => p.ReleaseFrom(_eventPublisher)); - _allObservedDataPresenters.Clear(); - } - } - - public override void ReleaseFrom(IEventPublisher eventPublisher) - { - try - { - clear(); - } - finally - { - base.ReleaseFrom(eventPublisher); - } - } - } -} \ No newline at end of file diff --git a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataPresenter.cs b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataPresenter.cs index 0b8e626bc..6bf6c8513 100644 --- a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataPresenter.cs +++ b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/ParameterIdentificationWeightedObservedDataPresenter.cs @@ -1,6 +1,5 @@ -using OSPSuite.Core.Domain; -using OSPSuite.Core.Domain.Data; -using OSPSuite.Core.Domain.ParameterIdentifications; +using OSPSuite.Assets; +using OSPSuite.Core.Domain; using OSPSuite.Core.Events; using OSPSuite.Presentation.Presenters.Charts; using OSPSuite.Presentation.Views.ParameterIdentifications; @@ -13,13 +12,17 @@ public interface IParameterIdentificationWeightedObservedDataPresenter : IPresen void Edit(WeightedObservedData weightedObservedData); string Caption { get; set; } + + /// + /// Clears the display if the is the same as the one being displayed + /// + void Clear(WeightedObservedData weightedObservedData); } public class ParameterIdentificationWeightedObservedDataPresenter : AbstractPresenter, IParameterIdentificationWeightedObservedDataPresenter { private readonly IWeightedDataRepositoryDataPresenter _dataPresenter; private readonly ISimpleChartPresenter _chartPresenter; - private bool _alreadyEditing; private WeightedObservedData _observedData; public ParameterIdentificationWeightedObservedDataPresenter(IParameterIdentificationWeightedObservedDataView view, IWeightedDataRepositoryDataPresenter dataPresenter, ISimpleChartPresenter chartPresenter) : base(view) @@ -31,11 +34,15 @@ public ParameterIdentificationWeightedObservedDataPresenter(IParameterIdentifica view.AddDataView(_dataPresenter.BaseView); view.AddChartView(_chartPresenter.BaseView); + clear(); } public void Edit(WeightedObservedData weightedObservedData) { - if (_alreadyEditing) return; + if (_observedData == weightedObservedData || weightedObservedData == null) + return; + + _view.SetTitle(weightedObservedData.DisplayName); _observedData = weightedObservedData; _dataPresenter.EditObservedData(weightedObservedData); @@ -43,7 +50,22 @@ public void Edit(WeightedObservedData weightedObservedData) _chartPresenter.LogLinSelectionEnabled = true; _chartPresenter.HotTracked = hotTracked; Caption = weightedObservedData.DisplayName; - _alreadyEditing = true; + } + + public void Clear(WeightedObservedData weightedObservedData) + { + if (_observedData != weightedObservedData) + return; + + clear(); + } + + private void clear() + { + _view.SetTitle(Captions.SelectMappingToShowObservedData); + _observedData = null; + _chartPresenter.Clear(); + _dataPresenter.Clear(); } public string Caption @@ -54,17 +76,13 @@ public string Caption private void hotTracked(int rowIndex) => _dataPresenter.SelectRow(rowIndex); - private bool shouldHandleEvent(ObservedDataEvent eventToHandle) - { - return Equals(eventToHandle.ObservedData, _observedData.ObservedData); - } + private bool shouldHandleEvent(ObservedDataEvent eventToHandle) => Equals(eventToHandle.ObservedData, _observedData.ObservedData); public void Handle(ObservedDataValueChangedEvent eventToHandle) { if (!shouldHandleEvent(eventToHandle)) return; - _alreadyEditing = false; Edit(_observedData); } } diff --git a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/WeightedDataRepositoryDataPresenter.cs b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/WeightedDataRepositoryDataPresenter.cs index 998ac0644..e5376e47b 100644 --- a/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/WeightedDataRepositoryDataPresenter.cs +++ b/src/OSPSuite.Presentation/Presenters/ParameterIdentifications/WeightedDataRepositoryDataPresenter.cs @@ -3,7 +3,6 @@ using System.Linq; using OSPSuite.Assets; using OSPSuite.Core.Domain; -using OSPSuite.Core.Domain.ParameterIdentifications; using OSPSuite.Presentation.Mappers.ParameterIdentifications; using OSPSuite.Presentation.Presenters.ObservedData; using OSPSuite.Presentation.Views.ParameterIdentifications; @@ -18,6 +17,7 @@ public interface IWeightedDataRepositoryDataPresenter : IBaseDataRepositoryDataP void DisableRepositoryColumns(); void SelectRow(int rowIndex); IEnumerable GetValidationMessagesForWeight(string weightValue); + void Clear(); } public class WeightedDataRepositoryDataPresenter : BaseDataRepositoryDataPresenter, IWeightedDataRepositoryDataPresenter @@ -30,10 +30,7 @@ public WeightedDataRepositoryDataPresenter(IWeightedDataRepositoryDataView view, _weightedDataRepositoryToDataTableMapper = weightedDataRepositoryToDataTableMapper; } - protected override DataTable MapDataTableFromColumns() - { - return _weightedDataRepositoryToDataTableMapper.MapFrom(_weightedObservedData); - } + protected override DataTable MapDataTableFromColumns() => _weightedDataRepositoryToDataTableMapper.MapFrom(_weightedObservedData); public void EditObservedData(WeightedObservedData weightedObservedData) { @@ -41,11 +38,14 @@ public void EditObservedData(WeightedObservedData weightedObservedData) EditObservedData(weightedObservedData.ObservedData); } - public void ChangeWeight(int weightIndex, float newWeight) + public void Clear() { - _weightedObservedData.Weights[weightIndex] = newWeight; + _weightedObservedData = null; + _view.Clear(); } + public void ChangeWeight(int weightIndex, float newWeight) => _weightedObservedData.Weights[weightIndex] = newWeight; + public bool ColumnIsInDataRepository(DataColumn column) { var columnId = GetColumnIdFromColumnIndex(_dataTable.Columns.IndexOf(column)); @@ -68,9 +68,9 @@ public void DisableRepositoryColumns() public IEnumerable GetValidationMessagesForWeight(string weightValue) { if (!float.TryParse(weightValue, out var proposedValue)) - return new[] {Error.ValueIsRequired}; + return new[] { Error.ValueIsRequired }; - return isValidWeight(proposedValue) ? Enumerable.Empty() : new[] {Error.WeightValueCannotBeNegative}; + return isValidWeight(proposedValue) ? Enumerable.Empty() : new[] { Error.WeightValueCannotBeNegative }; } private bool isValidWeight(float value) => value >= 0; diff --git a/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataCollectorView.cs b/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataCollectorView.cs deleted file mode 100644 index 67d8d1c6e..000000000 --- a/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataCollectorView.cs +++ /dev/null @@ -1,13 +0,0 @@ -using OSPSuite.Presentation.Core; -using OSPSuite.Presentation.Presenters.ParameterIdentifications; - -namespace OSPSuite.Presentation.Views.ParameterIdentifications -{ - public interface IParameterIdentificationWeightedObservedDataCollectorView : IView, IBatchUpdatable - { - void AddObservedDataView(IView view); - void RemoveObservedDataView(IView view); - void SelectObservedDataView(IView view); - void Clear(); - } -} \ No newline at end of file diff --git a/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataView.cs b/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataView.cs index d36196216..0ac457592 100644 --- a/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataView.cs +++ b/src/OSPSuite.Presentation/Views/ParameterIdentifications/IParameterIdentificationWeightedObservedDataView.cs @@ -6,5 +6,6 @@ public interface IParameterIdentificationWeightedObservedDataView : IView outputMappingList) { _gridViewBinder.BindToSource(outputMappingList); + selectFocusedElement(); } public override void InitializeBinding() @@ -77,30 +78,35 @@ public override void InitializeBinding() _gridViewBinder.Changed += NotifyViewChanged; btnAddOutput.Click += (o, e) => OnEvent(_presenter.AddOutputMapping); - _removeButtonRepository.ButtonClick += (o, e) => OnEvent(() => _presenter.RemoveOutputMapping(_gridViewBinder.FocusedElement)); + _removeButtonRepository.ButtonClick += (o, e) => OnEvent(removeMapping); gridView.FocusedRowChanged += (o, e) => OnEvent(gridViewRowChanged, e); + } + private void removeMapping() + { + _presenter.RemoveOutputMapping(_gridViewBinder.FocusedElement); + // The focused element could have changed after removing the mapping + selectFocusedElement(); } private IFormatter observedDataDisplay(OutputMappingDTO outputMappingDTO) => new WeightedObservedDataFormatter(outputMappingDTO); - private void gridViewRowChanged(FocusedRowChangedEventArgs e) + private void gridViewRowChanged(FocusedRowChangedEventArgs e) => selectFocusedElement(); + + private void selectFocusedElement() => selectItem(_gridViewBinder.FocusedElement); + + private void selectItem(OutputMappingDTO selectedItem) { - var selectedItem = _gridViewBinder.ElementAt(e.FocusedRowHandle); - if (selectedItem == null) return; + if (selectedItem == null) + return; + _presenter.Select(selectedItem); } - private RepositoryItem allOutputsRepository(OutputMappingDTO dto) - { - return RepositoryItemFor(_presenter.AllAvailableOutputs, _outputRepository); - } + private RepositoryItem allOutputsRepository(OutputMappingDTO dto) => RepositoryItemFor(_presenter.AllAvailableOutputs, _outputRepository); - private RepositoryItem allObservedDataRepository(OutputMappingDTO dto) - { - return RepositoryItemFor(_presenter.AllObservedDataFor(dto), _observedDataRepository); - } + private RepositoryItem allObservedDataRepository(OutputMappingDTO dto) => RepositoryItemFor(_presenter.AllObservedDataFor(dto), _observedDataRepository); protected RepositoryItem RepositoryItemFor(IEnumerable allItems, UxRepositoryItemComboBox listRepositoryItems) { @@ -118,9 +124,6 @@ public override void InitializeResources() public override bool HasError => _gridViewBinder.HasError; - public void CloseEditor() - { - gridView.CloseEditor(); - } + public void CloseEditor() => gridView.CloseEditor(); } } \ No newline at end of file diff --git a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.Designer.cs b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.Designer.cs deleted file mode 100644 index 8e0b602dd..000000000 --- a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.Designer.cs +++ /dev/null @@ -1,59 +0,0 @@ -namespace OSPSuite.UI.Views.ParameterIdentifications -{ - partial class ParameterIdentificationWeightedObservedDataCollectorView - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Component Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.TabControl = new DevExpress.XtraTab.XtraTabControl(); - ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.TabControl)).BeginInit(); - this.SuspendLayout(); - // - // tabObservedData - // - this.TabControl.Dock = System.Windows.Forms.DockStyle.Fill; - this.TabControl.Location = new System.Drawing.Point(0, 0); - this.TabControl.Name = "TabControl"; - this.TabControl.Size = new System.Drawing.Size(436, 415); - this.TabControl.TabIndex = 0; - // - // ParameterIdentificationWeightedObservedDataCollectorView - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.Controls.Add(this.TabControl); - this.Name = "ParameterIdentificationWeightedObservedDataCollectorView"; - this.Size = new System.Drawing.Size(436, 415); - ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.TabControl)).EndInit(); - this.ResumeLayout(false); - - } - - #endregion - } -} diff --git a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.cs b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.cs deleted file mode 100644 index 0a3911d4d..000000000 --- a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.cs +++ /dev/null @@ -1,97 +0,0 @@ -using System.Linq; -using DevExpress.Utils; -using DevExpress.XtraTab; -using OSPSuite.Presentation.Presenters.ParameterIdentifications; -using OSPSuite.Presentation.Views; -using OSPSuite.Presentation.Views.ParameterIdentifications; -using OSPSuite.UI.Controls; -using OSPSuite.UI.Extensions; - -namespace OSPSuite.UI.Views.ParameterIdentifications -{ - public partial class ParameterIdentificationWeightedObservedDataCollectorView : BaseUserControl, IParameterIdentificationWeightedObservedDataCollectorView, ITabbedView - { - private IParameterIdentificationWeightedObservedDataCollectorPresenter _presenter; - public bool Updating { get; protected set; } - - public ParameterIdentificationWeightedObservedDataCollectorView() - { - InitializeComponent(); - } - - public void AttachPresenter(IParameterIdentificationWeightedObservedDataCollectorPresenter presenter) - { - _presenter = presenter; - TabControl.SelectedPageChanging += onSelectedPageChanging; - } - - private void onSelectedPageChanging(object sender, TabPageChangingEventArgs e) - { - OnEvent(() => _presenter.ObservedDataViewSelected(e.Page.Tag as IView)); - } - - public void AddObservedDataView(IView view) - { - try - { - TabControl.SelectedPageChanging -= onSelectedPageChanging; - var page = this.AddTabbedView(TabControl.TabPages.Count, view); - page.Tag = view; - page.ShowCloseButton = DefaultBoolean.False; - } - finally - { - TabControl.SelectedPageChanging += onSelectedPageChanging; - } - } - - public void RemoveObservedDataView(IView view) - { - var tab = pageFor(view); - removeTab(tab); - } - - private XtraTabPage pageFor(IView view) - { - return TabControl.TabPages.FirstOrDefault(x => Equals(x.Tag, view)); - } - - public void SelectObservedDataView(IView view) - { - var page = pageFor(view); - selectPage(page); - } - - public void Clear() - { - TabControl.TabPages.Clear(); - } - - private void selectPage(XtraTabPage page) - { - if (page == null) return; - TabControl.SelectedTabPage = page; - } - - private void removeTab(XtraTabPage page) - { - if (page == null) return; - TabControl.TabPages.Remove(page); - } - - public void BeginUpdate() - { - TabControl.BeginUpdate(); - Updating = true; - } - - public void EndUpdate() - { - TabControl.EndUpdate(); - Updating = false; - } - - public XtraTabControl TabControl { get; private set; } - - } -} \ No newline at end of file diff --git a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.resx b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.resx deleted file mode 100644 index b38e0ff0c..000000000 --- a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataCollectorView.resx +++ /dev/null @@ -1,123 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - 17, 17 - - \ No newline at end of file diff --git a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.Designer.cs b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.Designer.cs index a391065c7..d750d16ff 100644 --- a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.Designer.cs +++ b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.Designer.cs @@ -30,7 +30,7 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.layoutControl = new UxLayoutControl(); + this.layoutControl = new OSPSuite.UI.Controls.UxLayoutControl(); this.panelChart = new DevExpress.XtraEditors.PanelControl(); this.panelData = new DevExpress.XtraEditors.PanelControl(); this.layoutControlGroup = new DevExpress.XtraLayout.LayoutControlGroup(); @@ -50,6 +50,7 @@ private void InitializeComponent() // // layoutControl // + this.layoutControl.AllowCustomization = false; this.layoutControl.Controls.Add(this.panelChart); this.layoutControl.Controls.Add(this.panelData); this.layoutControl.Dock = System.Windows.Forms.DockStyle.Fill; @@ -63,55 +64,52 @@ private void InitializeComponent() // // panelChart // - this.panelChart.Location = new System.Drawing.Point(12, 267); + this.panelChart.Location = new System.Drawing.Point(12, 284); this.panelChart.Name = "panelChart"; - this.panelChart.Size = new System.Drawing.Size(857, 327); + this.panelChart.Size = new System.Drawing.Size(857, 310); this.panelChart.TabIndex = 5; // // panelData // - this.panelData.Location = new System.Drawing.Point(12, 12); + this.panelData.Location = new System.Drawing.Point(12, 33); this.panelData.Name = "panelData"; - this.panelData.Size = new System.Drawing.Size(857, 246); + this.panelData.Size = new System.Drawing.Size(857, 237); this.panelData.TabIndex = 4; // // layoutControlGroup // this.layoutControlGroup.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.True; - this.layoutControlGroup.GroupBordersVisible = false; this.layoutControlGroup.Items.AddRange(new DevExpress.XtraLayout.BaseLayoutItem[] { this.layoutPanelChart, this.layoutPanelData, this.splitterItem1}); - this.layoutControlGroup.Location = new System.Drawing.Point(0, 0); this.layoutControlGroup.Name = "Root"; this.layoutControlGroup.Size = new System.Drawing.Size(881, 606); - this.layoutControlGroup.TextVisible = false; // // layoutPanelChart // this.layoutPanelChart.Control = this.panelData; this.layoutPanelChart.Location = new System.Drawing.Point(0, 0); this.layoutPanelChart.Name = "layoutPanelChart"; - this.layoutPanelChart.Size = new System.Drawing.Size(861, 250); + this.layoutPanelChart.Size = new System.Drawing.Size(861, 241); this.layoutPanelChart.TextSize = new System.Drawing.Size(0, 0); this.layoutPanelChart.TextVisible = false; // // layoutPanelData // this.layoutPanelData.Control = this.panelChart; - this.layoutPanelData.Location = new System.Drawing.Point(0, 255); + this.layoutPanelData.Location = new System.Drawing.Point(0, 251); this.layoutPanelData.Name = "layoutPanelData"; - this.layoutPanelData.Size = new System.Drawing.Size(861, 331); + this.layoutPanelData.Size = new System.Drawing.Size(861, 314); this.layoutPanelData.TextSize = new System.Drawing.Size(0, 0); this.layoutPanelData.TextVisible = false; // // splitterItem1 // this.splitterItem1.AllowHotTrack = true; - this.splitterItem1.Location = new System.Drawing.Point(0, 250); + this.splitterItem1.Location = new System.Drawing.Point(0, 241); this.splitterItem1.Name = "splitterItem1"; - this.splitterItem1.Size = new System.Drawing.Size(861, 5); + this.splitterItem1.Size = new System.Drawing.Size(861, 10); // // ParameterIdentificationWeightedObservedDataView // diff --git a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.cs b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.cs index f4fa895c8..088c60304 100644 --- a/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.cs +++ b/src/OSPSuite.UI/Views/ParameterIdentifications/ParameterIdentificationWeightedObservedDataView.cs @@ -1,4 +1,5 @@ -using OSPSuite.Assets; +using DevExpress.Utils; +using OSPSuite.Assets; using OSPSuite.Presentation.Presenters.ParameterIdentifications; using OSPSuite.Presentation.Views; using OSPSuite.Presentation.Views.ParameterIdentifications; @@ -17,22 +18,20 @@ public ParameterIdentificationWeightedObservedDataView() InitializeComponent(); layoutControl.Resize += (o, e) => OnEvent(layoutControlResized); - VisibleChanged+= (o, e) =>OnEvent(ResizeView); + VisibleChanged += (o, e) => OnEvent(ResizeView); } - public void AttachPresenter(IParameterIdentificationWeightedObservedDataPresenter presenter) - { - _presenter = presenter; - } + public void AttachPresenter(IParameterIdentificationWeightedObservedDataPresenter presenter) => _presenter = presenter; - public void AddDataView(IView view) - { - panelData.FillWith(view); - } + public void AddDataView(IView view) => panelData.FillWith(view); - public void AddChartView(IView view) + public void AddChartView(IView view) => panelChart.FillWith(view); + + public void SetTitle(string displayName) { - panelChart.FillWith(view); + layoutControlGroup.TextVisible = true; + layoutControlGroup.TextLocation = Locations.Top; + layoutControlGroup.Text = displayName; } public void ResizeView() @@ -41,9 +40,6 @@ public void ResizeView() layoutControl.Refresh(); } - private void layoutControlResized() - { - ResizeView(); - } + private void layoutControlResized() => ResizeView(); } } \ No newline at end of file diff --git a/src/OSPSuite.UI/Views/ParameterIdentifications/WeightedDataRepositoryDataView.cs b/src/OSPSuite.UI/Views/ParameterIdentifications/WeightedDataRepositoryDataView.cs index 3baae1dbf..204e04850 100644 --- a/src/OSPSuite.UI/Views/ParameterIdentifications/WeightedDataRepositoryDataView.cs +++ b/src/OSPSuite.UI/Views/ParameterIdentifications/WeightedDataRepositoryDataView.cs @@ -4,8 +4,6 @@ using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Grid; -using DevExpress.XtraLayout.Utils; -using OSPSuite.Assets; using OSPSuite.Presentation.Presenters.ParameterIdentifications; using OSPSuite.Presentation.Views.ParameterIdentifications; using OSPSuite.UI.Services; @@ -38,10 +36,7 @@ private void validateEditor(BaseContainerValidateEditorEventArgs e) e.ErrorText = validationMessages.First(); } - private void gridViewOnCellValueChanged(CellValueChangedEventArgs e) - { - _presenter.ChangeWeight(gridView.GetDataSourceRowIndex(e.RowHandle), e.Value.ConvertedTo()); - } + private void gridViewOnCellValueChanged(CellValueChangedEventArgs e) => _presenter.ChangeWeight(gridView.GetDataSourceRowIndex(e.RowHandle), e.Value.ConvertedTo()); public override void InitializeResources() { @@ -56,10 +51,7 @@ public override void BindTo(DataTable dataTable) disableRepositoryColumns(); } - public void DisplayColumnReadOnly(DataColumn column) - { - displayColumnReadOnly(column); - } + public void DisplayColumnReadOnly(DataColumn column) => displayColumnReadOnly(column); public void SelectRow(int rowIndex) { @@ -67,10 +59,9 @@ public void SelectRow(int rowIndex) gridView.FocusedRowHandle = gridView.GetRowHandle(rowIndex); } - private void disableRepositoryColumns() - { - _presenter.DisableRepositoryColumns(); - } + public void Clear() => gridControl.DataSource = null; + + private void disableRepositoryColumns() => _presenter.DisableRepositoryColumns(); private void displayColumnReadOnly(DataColumn column) { @@ -82,9 +73,6 @@ private void displayColumnReadOnly(DataColumn column) gridViewColumn.AppearanceCell.BackColor = UIConstants.Colors.Disabled; } - private GridColumn gridViewColumnFromDataColumn(DataColumn column) - { - return gridView.Columns[column.ColumnName]; - } + private GridColumn gridViewColumnFromDataColumn(DataColumn column) => gridView.Columns[column.ColumnName]; } } \ No newline at end of file diff --git a/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationDataSelectionPresenterSpecs.cs b/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationDataSelectionPresenterSpecs.cs index 599c1f02d..98c6b1a93 100644 --- a/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationDataSelectionPresenterSpecs.cs +++ b/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationDataSelectionPresenterSpecs.cs @@ -16,15 +16,15 @@ public abstract class concern_for_ParameterIdentificationDataSelectionPresenter protected ParameterIdentification _parameterIdentification; protected ISimulation _simulation; protected IParameterIdentificationOutputMappingPresenter _outputMappingPresenter; - protected IParameterIdentificationWeightedObservedDataCollectorPresenter _weightedObservedDataCollectorPresenter; + protected IParameterIdentificationWeightedObservedDataPresenter _weightedObservedDataPresenter; protected override void Context() { _view = A.Fake(); _simulationSelectionPresenter = A.Fake(); _outputMappingPresenter = A.Fake(); - _weightedObservedDataCollectorPresenter= A.Fake(); - sut = new ParameterIdentificationDataSelectionPresenter(_view, _simulationSelectionPresenter, _outputMappingPresenter, _weightedObservedDataCollectorPresenter); + _weightedObservedDataPresenter= A.Fake(); + sut = new ParameterIdentificationDataSelectionPresenter(_view, _simulationSelectionPresenter, _outputMappingPresenter, _weightedObservedDataPresenter); _simulation = A.Fake().WithId("Sim"); _parameterIdentification = new ParameterIdentification(); @@ -47,12 +47,6 @@ public void should_initialize_the_output_mapping_presenter_with_the_parameter_id { A.CallTo(() => _outputMappingPresenter.EditParameterIdentification(_parameterIdentification)).MustHaveHappened(); } - - [Observation] - public void should_initialize_the_weighted_observed_data_collector_presenter_with_the_parameter_identification() - { - A.CallTo(() => _weightedObservedDataCollectorPresenter.EditParameterIdentification(_parameterIdentification)).MustHaveHappened(); - } } public class When_the_parameter_identification_data_presenter_is_being_notified_that_a_simulation_was_added_to_the_parameter_identification : concern_for_ParameterIdentificationDataSelectionPresenter @@ -67,12 +61,6 @@ public void should_refresh_the_output_mapping() { A.CallTo(() => _outputMappingPresenter.Refresh()).MustHaveHappened(); } - - [Observation] - public void should_refresh_the_simulation_selection_presenter() - { - A.CallTo(() => _weightedObservedDataCollectorPresenter.Refresh()).MustHaveHappened(); - } } public class When_the_parameter_identification_data_presenter_is_notified_that_a_weighted_observed_data_was_selected : concern_for_ParameterIdentificationDataSelectionPresenter @@ -93,7 +81,7 @@ protected override void Because() [Observation] public void should_select_the_corresponding_observed_data() { - A.CallTo(() => _weightedObservedDataCollectorPresenter.SelectObservedData(_weightedObservedData)).MustHaveHappened(); + A.CallTo(() => _weightedObservedDataPresenter.Edit(_weightedObservedData)).MustHaveHappened(); } } @@ -104,12 +92,6 @@ protected override void Because() sut.Handle(new SimulationReplacedInParameterAnalyzableEvent(_parameterIdentification, _simulation, A.Fake())); } - [Observation] - public void should_refresh_the_observed_data_presenter() - { - A.CallTo(() => _weightedObservedDataCollectorPresenter.Refresh()).MustHaveHappened(); - } - [Observation] public void should_refresh_the_simulation_selection_presenter() { @@ -130,12 +112,6 @@ protected override void Because() sut.Handle(new SimulationRemovedEvent(_simulation)); } - [Observation] - public void should_refresh_the_observed_data_presenter() - { - A.CallTo(() => _weightedObservedDataCollectorPresenter.Refresh()).MustHaveHappened(); - } - [Observation] public void should_refresh_the_simulation_selection_presenter() { diff --git a/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationWeightedObservedDataCollectorPresenterSpecs.cs b/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationWeightedObservedDataCollectorPresenterSpecs.cs deleted file mode 100644 index ec5873078..000000000 --- a/tests/OSPSuite.Presentation.Tests/Presentation/ParameterIdentificationWeightedObservedDataCollectorPresenterSpecs.cs +++ /dev/null @@ -1,174 +0,0 @@ -using FakeItEasy; -using OSPSuite.BDDHelper; -using OSPSuite.Core.Domain; -using OSPSuite.Core.Domain.ParameterIdentifications; -using OSPSuite.Helpers; -using OSPSuite.Presentation.Core; -using OSPSuite.Presentation.Presenters.ParameterIdentifications; -using OSPSuite.Presentation.Views.ParameterIdentifications; -using OSPSuite.Utility.Events; - -namespace OSPSuite.Presentation.Presentation -{ - public abstract class concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter : ContextSpecification - { - protected IEventPublisher _eventPublisher; - protected IParameterIdentificationWeightedObservedDataCollectorView _view; - protected IApplicationController _applicationController; - protected ParameterIdentification _parameterIdentification; - protected OutputMapping _outputMapping; - protected WeightedObservedData _weightedObservedData; - protected IParameterIdentificationWeightedObservedDataPresenter _presenter; - - protected override void Context() - { - _eventPublisher = A.Fake(); - _view = A.Fake(); - _applicationController = A.Fake(); - sut = new ParameterIdentificationWeightedObservedDataCollectorPresenter(_view, _applicationController, _eventPublisher); - - _parameterIdentification = new ParameterIdentification(); - _weightedObservedData = new WeightedObservedData(DomainHelperForSpecs.ObservedData()); - _outputMapping = new OutputMapping {WeightedObservedData = _weightedObservedData}; - _parameterIdentification.AddOutputMapping(_outputMapping); - - _presenter = A.Fake(); - A.CallTo(() => _applicationController.Start()).Returns(_presenter); - } - } - - public class When_the_weighted_observed_data_collector_presenter_is_edtiting_a_parameter_identification : concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter - { - protected override void Because() - { - sut.EditParameterIdentification(_parameterIdentification); - } - - [Observation] - public void should_add_a_sub_view_for_each_mapped_observed_data() - { - A.CallTo(() => _view.AddObservedDataView(_presenter.View)).MustHaveHappened(); - } - - [Observation] - public void should_edit_the_weighted_observed_data() - { - A.CallTo(() => _presenter.Edit(_weightedObservedData)).MustHaveHappened(); - } - } - - public class When_the_weighted_observed_data_collector_presenter_is_editing_a_parmaeter_identification_with_an_output_using_an_invalid_weighted_observed_data : concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter - { - protected override void Context() - { - base.Context(); -#pragma warning disable 618 - _weightedObservedData = new WeightedObservedData(); -#pragma warning restore 618 - _outputMapping.WeightedObservedData = _weightedObservedData; - } - - protected override void Because() - { - sut.EditParameterIdentification(_parameterIdentification); - } - - [Observation] - public void should_not_add_a_view_for_this_observed_data() - { - A.CallTo(() => _presenter.Edit(_weightedObservedData)).MustNotHaveHappened(); - } - } - - public class When_the_weighted_observed_data_collector_presenter_is_told_to_remove_some_observed_data_from_its_view : concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter - { - protected override void Context() - { - base.Context(); - sut.EditParameterIdentification(_parameterIdentification); - } - - protected override void Because() - { - sut.RemoveObservedData(_weightedObservedData); - } - - [Observation] - public void should_remove_the_underlying_presenter_from_the_view() - { - A.CallTo(() => _view.RemoveObservedDataView(_presenter.View)).MustHaveHappened(); - } - - [Observation] - public void should_release_the_presenter_from_the_event_publisher() - { - A.CallTo(() => _presenter.ReleaseFrom(_eventPublisher)).MustHaveHappened(); - } - } - - public class When_the_observed_data_collector_is_told_that_a_view_displayed_weighted_observed_data_was_selected : concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter - { - protected override void Context() - { - base.Context(); - sut.EditParameterIdentification(_parameterIdentification); - } - - protected override void Because() - { - sut.ObservedDataViewSelected(_presenter.View); - } - - [Observation] - public void should_edit_the_corresponding_presenter() - { - A.CallTo(() => _presenter.Edit(_weightedObservedData)).MustHaveHappened(); - } - } - - public class When_the_weighted_observed_data_collector_presenter_is_told_to_select_some_given_weighted_observed_data : concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter - { - protected override void Context() - { - base.Context(); - sut.EditParameterIdentification(_parameterIdentification); - } - - protected override void Because() - { - sut.SelectObservedData(_weightedObservedData); - } - - [Observation] - public void should_activate_the_view_registered_for_those_observed_data() - { - A.CallTo(() => _view.SelectObservedDataView(_presenter.View)).MustHaveHappened(); - } - - [Observation] - public void should_edit_the_corresponding_presenter() - { - A.CallTo(() => _presenter.Edit(_weightedObservedData)).MustHaveHappened(); - } - } - - public class When_the_weighted_observed_data_presenter_is_being_released : concern_for_ParameterIdentificationWeightedObservedDataCollectorPresenter - { - protected override void Context() - { - base.Context(); - sut.EditParameterIdentification(_parameterIdentification); - } - - protected override void Because() - { - sut.ReleaseFrom(_eventPublisher); - } - - [Observation] - public void should_also_release_all_sub_presenters() - { - A.CallTo(() => _presenter.ReleaseFrom(_eventPublisher)).MustHaveHappened(); - } - } -} \ No newline at end of file