public void InitializeContextMenu(NodeContextMenu nodeContextMenu) { foreach (IPlugin p in Plugins) { IPluginMapNodeContextMenu plugin = p as IPluginMapNodeContextMenu; if (plugin != null) { var menu = plugin.CreateContextMenuItemsForNode(); if (menu != null) InsertMenuItems(menu, nodeContextMenu); } } //register event to notify plugins on context menu opening nodeContextMenu.Opening += (s, evt) => this.OnMapNodeContextMenuOpening(mainCtrl.CurrentMapCtrl.MapView.SelectedNodes); }
private void InsertMenuItems(Plugins.MenuItem[] menuItems, NodeContextMenu nodeContextMenu) { ContextMenuStrip contextMenu = nodeContextMenu; int index = contextMenu.Items.IndexOf(nodeContextMenu.mSepPluginEnd); contextMenu.Items.Insert(index++, new ToolStripSeparator()); foreach (Plugins.MenuItem menu in menuItems) { contextMenu.Items.Insert(index++, menu.UnderlyingMenuItem); menu.UnderlyingMenuItem.Click += PluginMenuItem_Click; SetClickHandlerForSubMenu(menu); } }
public void InitMindMate(IMainForm mainForm) { this.mainForm = mainForm; MetaModel.MetaModel.Initialize(); schedular = new TaskSchedular.TaskSchedular(); PersistenceManager = new PersistenceManager(); pluginManager = new Plugins.PluginManager(this); new TabController(this, mainForm); pluginManager.Initialize(); statusBarCtrl = new WinFormsStatusBarCtrl(mainForm.StatusBar, PersistenceManager); NodeContextMenu = new NodeContextMenu(); mainForm.Load += mainForm_Load; mainForm.Shown += mainForm_AfterReady; }