示例#1
0
        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);
            }
        }