using System;
using System.Collections;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
using Core.Common.Controls.TreeView;
using Core.Common.Gui;
using Ringtoets.Common.Forms.Properties;
using TreeNode = Core.Common.Controls.TreeView.TreeNode;
using TreeView = Core.Common.Controls.TreeView.TreeView;
namespace Ringtoets.Common.Forms.NodePresenters
{
///
/// Implements in a featureless way as possible,
/// to serve as a base class for all node presenters.
///
/// The data object class corresponding with the node.
public abstract class RingtoetsNodePresenterBase : ITreeNodePresenter
{
protected readonly IContextMenuBuilderProvider contextMenuBuilderProvider;
///
/// Creates a new instance of , which uses the
/// to create and bind its .
///
/// The
/// to use for building a .
/// Thrown when no was provided.
public RingtoetsNodePresenterBase(IContextMenuBuilderProvider contextMenuBuilderProvider)
{
if (contextMenuBuilderProvider == null)
{
throw new ArgumentNullException("contextMenuBuilderProvider", Core.Common.Gui.Properties.Resources.NodePresenter_ContextMenuBuilderProvider_required);
}
this.contextMenuBuilderProvider = contextMenuBuilderProvider;
}
public TreeView TreeView { get; set; }
public Type NodeTagType
{
get
{
return typeof(T);
}
}
public void UpdateNode(TreeNode parentNode, TreeNode node, object nodeData)
{
UpdateNode(parentNode, node, (T)nodeData);
}
public IEnumerable GetChildNodeObjects(object parentNodeData)
{
return GetChildNodeObjects((T)parentNodeData).Cast