public void AppendContextMenuItems(global::System.Windows.Forms.ContextMenuStrip strip, object context) { PlugInManager compMan = new PlugInManager(); List <IOrder> items = new List <IOrder>(); foreach (var toolType in compMan.GetPlugins(gView.Framework.system.Plugins.Type.IExTool)) { IContextMenuItem item = compMan.TryCreateInstance <IContextMenuItem>(toolType); if (item == null || !item.ShowWith(context) || !(item is IExTool)) { continue; } ((IExTool)item).OnCreate(_application); items.Add(item); } items.Sort(new SortByIOrder()); int l = -1; foreach (IContextMenuItem item in items) { if (Math.Abs(l - item.SortOrder / 10) != 0) { l = item.SortOrder / 10; if (strip.Items.Count > 0) { strip.Items.Add(new global::System.Windows.Forms.ToolStripSeparator()); } } ToolMenuItem toolItem = new ToolMenuItem(item as IExTool); toolItem.Click += new EventHandler(ToolButton_Click); strip.Items.Add(toolItem); } }