using System.Collections; using System.Drawing; using System.Windows.Forms; using Core.Common.Base.Data; using Core.Common.Controls; using Core.Common.Gui; using Ringtoets.Common.Forms.NodePresenters; using Ringtoets.Integration.Data; using RingtoetsFormsResources = Ringtoets.Integration.Forms.Properties.Resources; namespace Ringtoets.Integration.Forms.NodePresenters { /// /// Node presenter for items in the tree view. /// public class AssessmentSectionBaseNodePresenter : RingtoetsNodePresenterBase { public AssessmentSectionBaseNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) {} public override bool CanRenameNode(ITreeNode node) { return true; } public override bool CanRenameNodeTo(ITreeNode node, string newName) { return true; } protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, AssessmentSectionBase nodeData) { node.Text = nodeData.Name; node.Image = RingtoetsFormsResources.AssessmentSectionFolderIcon; node.ForegroundColor = Color.FromKnownColor(KnownColor.ControlText); } protected override IEnumerable GetChildNodeObjects(AssessmentSectionBase nodeData) { yield return nodeData.ReferenceLine; yield return nodeData.FailureMechanismContribution; yield return nodeData.HydraulicBoundaryDatabase; foreach (var failureMechanism in nodeData.GetFailureMechanisms()) { yield return failureMechanism; } } protected override void OnNodeRenamed(AssessmentSectionBase nodeData, string newName) { nodeData.Name = newName; nodeData.NotifyObservers(); } protected override bool CanRemove(object parentNodeData, AssessmentSectionBase nodeData) { return true; } protected override bool RemoveNodeData(object parentNodeData, AssessmentSectionBase nodeData) { var parentProject = (Project) parentNodeData; parentProject.Items.Remove(nodeData); parentProject.NotifyObservers(); return true; } protected override ContextMenuStrip GetContextMenu(ITreeNode sender, AssessmentSectionBase nodeData) { return contextMenuBuilderProvider .Get(sender) .AddDeleteItem() .AddSeparator() .AddExpandAllItem() .AddCollapseAllItem() .AddSeparator() .AddImportItem() .AddExportItem() .AddSeparator() .AddPropertiesItem() .Build(); } } }