Ejemplo n.º 1
0
        //-------------------------------------------------------------------
        private void GraphContextMenu_Opening(object sender, CancelEventArgs e)
        {
            // remove previously added menu
            int index = GraphContextMenu.Items.IndexOf(toolStripMenuItemAdvanced) + 1;

            while (GraphContextMenu.Items.Count > index)
            {
                GraphContextMenu.Items.RemoveAt(index);
            }
            Localization.Manager.DoMenu(GraphContextMenu);

            _MenuTaxonTreeNode = BelowMouse;

            bool fullMenu = true;
            ToolStripMenuItem advanced = BuildAdvancedMenu();

            if (ModifierKeys == Keys.Shift && advanced != null)
            {
                fullMenu = false;
            }

            foreach (ToolStripItem item in GraphContextMenu.Items)
            {
                item.Visible = fullMenu;
            }

            if (fullMenu)
            {
                GraphContextMenu.Enabled = (Root != null);

                collapseAllToolStripMenuItem.Visible = false;
                expandAllToolStripMenuItem.Visible   = false;

                setAsNewRootToolStripMenuItem.Visible = TaxonUtils.CanPushSubRoot(_MenuTaxonTreeNode);

                bool gotoSelected = TaxonUtils.SelectedTaxon() != null && TaxonUtils.SelectedTaxon() != _MenuTaxonTreeNode;
                gotoSelectedToolStripMenuItem.Visible = gotoSelected;
                if (gotoSelected)
                {
                    gotoSelectedToolStripMenuItem.Text = Localization.Manager.Get("_GotoTaxon", "Goto {0}", TaxonUtils.SelectedTaxon().Desc.RefMainName);
                }

                restoreRootToolStripMenuItem.Visible     = TaxonUtils.HasSubRoots();
                toolStripMenuItem1.Visible               = _MenuTaxonTreeNode != null;
                selectAscendantToolStripMenuItem.Visible = _MenuTaxonTreeNode != null;
                collapseTaxonToolStripMenuItem.Visible   = _MenuTaxonTreeNode != null;
                expandTaxonToolStripMenuItem.Visible     = _MenuTaxonTreeNode != null;
                favoritesToolStripMenuItem.Visible       = _MenuTaxonTreeNode != null;

                if (_MenuTaxonTreeNode != null)
                {
                    selectAscendantToolStripMenuItem.Text = Localization.Manager.Get("_SelectAscendant", "Select ascendant");
                    List <TaxonTreeNode> Ascendants = new List <TaxonTreeNode>();
                    _MenuTaxonTreeNode.GetAllParents(Ascendants, false, false, false);
                    if (Ascendants.Count == 0)
                    {
                        selectAscendantToolStripMenuItem.Enabled = false;
                    }
                    else
                    {
                        selectAscendantToolStripMenuItem.Enabled = true;
                        selectAscendantToolStripMenuItem.DropDownItems.Clear();
                        foreach (TaxonTreeNode node in Ascendants)
                        {
                            ToolStripMenuItem subMenuItem = new ToolStripMenuItem(node.Desc.RefMainName, null, new System.EventHandler(OnSelect))
                            {
                                Tag = node
                            };
                            selectAscendantToolStripMenuItem.DropDownItems.Add(subMenuItem);
                        }
                    }

                    collapseTaxonToolStripMenuItem.Text    = Localization.Manager.Get("_CollapseTaxon", "Collapse {0}", _MenuTaxonTreeNode.Desc.RefMainName);
                    collapseTaxonToolStripMenuItem.Enabled = _MenuTaxonTreeNode.HasAllChildVisible;
                    expandTaxonToolStripMenuItem.Text      = Localization.Manager.Get("_ExpandTaxon", "Expand {0}", _MenuTaxonTreeNode.Desc.RefMainName);
                    string favoritesMenuItemText = TaxonUtils.FavoritesMenuItemText(_MenuTaxonTreeNode);
                    favoritesToolStripMenuItem.Visible = favoritesMenuItemText != null;
                    if (favoritesMenuItemText != null)
                    {
                        favoritesToolStripMenuItem.Text = favoritesMenuItemText;
                    }
                }
            }

            if (advanced == null)
            {
                toolStripMenuItemAdvanced.Visible = false;
            }
            else if (fullMenu)
            {
                toolStripMenuItemAdvanced.Visible = true;
                GraphContextMenu.Items.Add(advanced);
            }
            else
            {
                while (advanced.DropDownItems.Count > 0)
                {
                    GraphContextMenu.Items.Add(advanced.DropDownItems[0]);
                }
            }
        }