Index: src/Deltares.DSoilModel.Forms/DSoilModelPlugin.cs =================================================================== diff -u -r405 -r417 --- src/Deltares.DSoilModel.Forms/DSoilModelPlugin.cs (.../DSoilModelPlugin.cs) (revision 405) +++ src/Deltares.DSoilModel.Forms/DSoilModelPlugin.cs (.../DSoilModelPlugin.cs) (revision 417) @@ -971,6 +971,7 @@ }; mainForm.RegisterTableControl(typeof(Soil), materialsTable, "Materials"); BindSupport.Bind(projectPanel, materialsTable, typeof(DSoilModelProject), "Soils.Soils"); + materialsTable.CanDelete += CanDelete; var cptsTable = new GridViewControl { @@ -1077,6 +1078,33 @@ mainForm.DynamicOutputControl.LogMessagesGridViewControl.ShowToolbar = true; } + private void LogErrorCannotDelete(IName objToDelete, IName objUses) + { + var formattedErrorStr = LocalizationManager.GetTranslatedText(this, "CannotDeleteObjectThatInUse"); + // Cannot delete {0} [{1}] because it's used in {2} [{3}]" + var msg = string.Format(formattedErrorStr, objToDelete.Name, objToDelete.GetType().Name, objUses.Name, objUses.GetType().Name); + LogManager.Add(new LogMessage(LogMessageType.Error, objUses, msg)); + } + + private bool CanDelete(object o) + { + var result = true; + var soil = o as Soil; + if (soil != null) + { + foreach (var sp1d in project.SoilProfiles1D) + { + if (sp1d.Layers.Any(l => l.Soil == o)) + { + LogErrorCannotDelete(soil, sp1d); + result = false; + } + } + } + + return result; + } + private void RemoveBarButtonItem(GridViewControl gridViewTable, string buttonName) { var manager = gridViewTable.Toolbar.Manager; Index: src/Deltares.DSoilModel.Forms/Translations.xml =================================================================== diff -u -r342 -r417 --- src/Deltares.DSoilModel.Forms/Translations.xml (.../Translations.xml) (revision 342) +++ src/Deltares.DSoilModel.Forms/Translations.xml (.../Translations.xml) (revision 417) @@ -92,4 +92,6 @@ + +