using System.Collections;
using Core.Common.Base;
using Core.Common.Controls;
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
{
protected override void UpdateNode(ITreeNode parentNode, ITreeNode node, AssessmentSectionBase nodeData)
{
node.Text = nodeData.Name;
node.Image = RingtoetsFormsResources.AssessmentSectionFolderIcon;
}
protected override IEnumerable GetChildNodeObjects(AssessmentSectionBase nodeData, ITreeNode node)
{
yield return nodeData.ReferenceLine;
yield return nodeData.FailureMechanismContribution;
yield return nodeData.HydraulicBoundaryDatabase;
foreach (var failureMechanism in nodeData.GetFailureMechanisms())
{
yield return failureMechanism;
}
}
public override bool CanRenameNode(ITreeNode node)
{
return true;
}
public override bool CanRenameNodeTo(ITreeNode node, string newName)
{
return true;
}
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;
}
}
}