// Copyright (C) Stichting Deltares 2025. All rights reserved. // // This file is part of the application DAM - UI. // // DAM - UI 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.Windows.Forms; using Deltares.Dam.Data; using Deltares.Standard; using Deltares.Standard.Calculate; using Deltares.Standard.EventPublisher; using Deltares.Standard.Forms; using Deltares.Standard.Forms.DExpress; using ProgressDelegate = Deltares.DamEngine.Data.Standard.Calculation.ProgressDelegate; namespace Deltares.Dam.Forms { public partial class DikePropertyControl : UserControl, IPropertyControl { private Dike dike; public DikePropertyControl() { InitializeComponent(); Name = "Dike"; BindSupport.BindTextAndValue(this, NameLabel, NameTextEdit, typeof(Dike), "Name"); BindSupport.BindTextAndValue(this, DescriptionLabel, DescriptionTextEdit, typeof(Dike), "Description"); DataEventPublisher.OnAfterChange += DataEventPublisher_OnAfterChange; LocalizationSupport.Register(typeof(Dike), CalculationGroup, groupControl1); FormsSupport.RepairRightAnchoredControls(this); } public void DoProgress(double progress) { if (InvokeRequired) { Invoke(new ProgressDelegate(DoProgress), progress); } else { CalculationProgressBar.EditValue = Math.Round(100 * progress); if (!CalculationGroup.Visible && progress < 1) { CalculationGroup.Visible = true; } Refresh(); } } private void DataEventPublisher_OnAfterChange(object sender, PublishEventArgs e) { if (InvokeRequired) { Invoke(new DataEventPublisherEventDelegate(DataEventPublisher_OnAfterChange), sender, e); } else { if (sender is CalculationManager) { bool running = ((CalculationManager) sender).IsRunning; CalculationGroup.Visible = running; if (!running) { CalculationProgressBar.EditValue = 0; } } else if (sender == dike) { DataEventPublisher.AfterChange(this); } } } public object SelectedObject { get { return dike; } set { var dike1 = value as Dike; if (dike1 != null) { if (dike != value) { dike = dike1; } } else { var dikeJob = value as DikeJob; if ((dikeJob != null) && (dike != value)) { dike = dikeJob.Dike; } } CalculationGroup.Visible = false; BindSupport.Assign(this, dike); NameTextEdit.Enabled = false; } } public bool IsVisible { get { return true; } } } }