/// <summary> /// protected method to handle the popup context menu in the <see cref="ZedGraphControl"/>. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void contextMenuStrip1_Opening(object sender, CancelEventArgs e) { // disable context menu by default e.Cancel = true; var menuStrip = sender as ContextMenuStrip; //Revision: JCarpenter 10/06 var objState = GetObjectState(); if (_masterPane == null || menuStrip == null) { return; } menuStrip.Items.Clear(); _isZooming = false; _isPanning = false; Cursor.Current = Cursors.Default; _menuClickPt = this.PointToClient(Control.MousePosition); var paneBase = _masterPane.FindPane(_menuClickPt); if (!IsShowContextMenu || !(paneBase is GraphPane)) { return; } var pane = (GraphPane)paneBase; var menuStr = string.Empty; var item = new ToolStripMenuItem { Name = "unzoom", Tag = "unzoom" }; if (pane == null || pane.ZoomStack.IsEmpty) { menuStr = ZedGraphLocale.unzoom; } else { switch (pane.ZoomStack.Top.Type) { case ZoomState.StateType.Zoom: case ZoomState.StateType.WheelZoom: menuStr = ZedGraphLocale.unzoom; break; case ZoomState.StateType.Pan: menuStr = ZedGraphLocale.unpan; break; case ZoomState.StateType.Scroll: menuStr = ZedGraphLocale.unscroll; break; } } //menuItem.Text = "Un-" + ( ( pane == null || pane.zoomStack.IsEmpty ) ? // "Zoom" : pane.zoomStack.Top.TypeString ); item.Text = menuStr; item.Click += new EventHandler(this.MenuClick_ZoomOut); if (pane.ZoomStack.IsEmpty) { item.Enabled = false; } menuStrip.Items.Add(item); item = new ToolStripMenuItem { Name = "undo_all", Tag = "undo_all" }; menuStr = ZedGraphLocale.undo_all; item.Text = menuStr; item.Click += new EventHandler(this.MenuClick_ZoomOutAll); if (pane == null || pane.ZoomStack.IsEmpty) { item.Enabled = false; } menuStrip.Items.Add(item); item = new ToolStripMenuItem { Name = "set_default", Tag = "set_default" }; menuStr = ZedGraphLocale.set_default; item.Text = menuStr; item.Click += MenuClick_RestoreScale; menuStrip.Items.Add(item); // separator menuStrip.Items.Add(new ToolStripSeparator()); item = new ToolStripMenuItem { Name = "copy", Tag = "copy", Text = ZedGraphLocale.copy }; item.Click += MenuClick_Copy; menuStrip.Items.Add(item); item = new ToolStripMenuItem { Name = "save_as", Tag = "save_as", Text = ZedGraphLocale.save_as }; item.Click += MenuClick_SaveAs; menuStrip.Items.Add(item); item = new ToolStripMenuItem { Name = "page_setup", Tag = "page_setup", Text = ZedGraphLocale.page_setup }; item.Click += MenuClick_PageSetup; menuStrip.Items.Add(item); item = new ToolStripMenuItem { Name = "print", Tag = "print", Text = ZedGraphLocale.print }; item.Click += MenuClick_Print; menuStrip.Items.Add(item); // separator menuStrip.Items.Add(new ToolStripSeparator()); item = new ToolStripMenuItem { Name = "show_val", Tag = "show_val", Text = ZedGraphLocale.show_val }; item.Click += MenuClick_ShowValues; item.Checked = IsShowPointValues; menuStrip.Items.Add(item); // if e.Cancel is set to false, the context menu does not display // it is initially set to false because the context menu has no items e.Cancel = false; // Provide Callback for User to edit the context menu //Revision: JCarpenter 10/06 - add ContextMenuObjectState objState ContextMenuBuilder?.Invoke(this, menuStrip, _menuClickPt, objState); }