Ejemplo n.º 1
0
        /// <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);
        }