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; } } } } } } }