using System;
using System.Drawing;
using System.Windows.Forms;
using Core.Common.Gui;
using Core.Common.Gui.ContextMenu;
using Ringtoets.Common.Forms.NodePresenters;
using Ringtoets.Common.Placeholder;
using Ringtoets.Integration.Forms.Properties;
using RingtoetsCommonFormsResources = Ringtoets.Common.Forms.Properties.Resources;
using TreeNode = Core.Common.Controls.TreeView.TreeNode;
namespace Ringtoets.Integration.Forms.NodePresenters
{
///
/// Node presenter class for
///
public class PlaceholderWithReadonlyNameNodePresenter : RingtoetsNodePresenterBase
{
///
/// 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 PlaceholderWithReadonlyNameNodePresenter(IContextMenuBuilderProvider contextMenuBuilderProvider) : base(contextMenuBuilderProvider) { }
protected override void UpdateNode(TreeNode parentNode, TreeNode node, PlaceholderWithReadonlyName nodeData)
{
node.Text = nodeData.Name;
node.ForegroundColor = Color.FromKnownColor(KnownColor.GrayText);
node.Image = GetIconForPlaceholder(nodeData);
}
protected override ContextMenuStrip GetContextMenu(TreeNode node, PlaceholderWithReadonlyName nodeData)
{
IContextMenuBuilder menuBuilder = contextMenuBuilderProvider.Get(node);
if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder)
{
menuBuilder.AddOpenItem();
}
if (nodeData is OutputPlaceholder)
{
var clearItem = new StrictContextMenuItem(
RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase,
RingtoetsCommonFormsResources.FailureMechanism_InputsOutputs_Erase_ToolTip,
RingtoetsCommonFormsResources.ClearIcon,
null)
{
Enabled = false
};
menuBuilder.AddCustomItem(clearItem);
}
if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder)
{
menuBuilder.AddSeparator();
}
return menuBuilder.AddImportItem()
.AddExportItem()
.AddSeparator()
.AddPropertiesItem()
.Build();
}
private static Bitmap GetIconForPlaceholder(PlaceholderWithReadonlyName nodeData)
{
if (nodeData is InputPlaceholder || nodeData is OutputPlaceholder)
{
return Resources.GenericInputOutputIcon;
}
return Resources.PlaceholderIcon;
}
}
}