using System.Windows.Forms;
using DelftTools.Controls;
using DelftTools.Controls.Swf;
namespace DelftTools.Shell.Gui.Swf
{
public class NodePresenterHelper
{
///
/// Queries all pluginguis for context menu items for item
///
///
///
///
///
public static IMenuItem GetContextMenuFromPluginGuis(IGui gui, object sender, object item)
{
var emptyMenu = new ContextMenuStrip();
IMenuItem menuItem = new MenuItemContextMenuStripAdapter(emptyMenu);
foreach (var plugin in gui.Plugins)
{
if (plugin != null)
{
IMenuItem mi = plugin.GetContextMenu(sender, item);
if (mi != null)
{
menuItem.Add(mi);
}
}
}
return menuItem;
}
public static void TrimSeparatorsGetContextMenu(IMenuItem menuItem)
{
if (menuItem is MenuItemContextMenuStripAdapter)
{
TrimSeparatorsGetContextMenu(
((MenuItemContextMenuStripAdapter) menuItem).ContextMenuStrip
);
}
}
public static void TrimSeparatorsGetContextMenu(ContextMenuStrip contextMenu)
{
//top
for (int i = 0; i < contextMenu.Items.Count; i++)
{
if (contextMenu.Items[i] is ToolStripSeparator)
{
contextMenu.Items[i].Available = false;
}
else
{
if (contextMenu.Items[i].Available)
{
break;
}
}
}
//bottom
for (int i = contextMenu.Items.Count - 1; i >= 0; i--)
{
if (contextMenu.Items[i] is ToolStripSeparator)
{
contextMenu.Items[i].Available = false;
}
else
{
if (contextMenu.Items[i].Available)
{
break;
}
}
}
}
public static void RemoveDoubleSeparatorsGetContextMenu(IMenuItem menuItem)
{
if (menuItem is MenuItemContextMenuStripAdapter)
{
RemoveDoubleSeparatorsGetContextMenu(
((MenuItemContextMenuStripAdapter) menuItem).ContextMenuStrip
);
}
}
public static void RemoveDoubleSeparatorsGetContextMenu(ContextMenuStrip contextMenu)
{
for (int i = 1; i < contextMenu.Items.Count; i++)
{
if (contextMenu.Items[i] is ToolStripSeparator)
{
for (int j = i - 1; j >= 0; j--)
{
if (contextMenu.Items[j] is ToolStripSeparator)
{
contextMenu.Items[j].Available = false;
break;
}
if (contextMenu.Items[j].Available)
{
break;
}
}
}
}
}
}
}