private void TreeListMouseUp(object sender, MouseEventArgs e)
        {
            var ht = CalcHitInfo(new Point(e.X, e.Y));

            if (e.Button == MouseButtons.Right && ht != null && ht.HitInfoType == HitInfoType.Empty && CustomPopupMenu != null)
            {
                CustomPopupMenu.ShowPopup(MousePosition);
            }
        }
        /// <summary>
        /// Показать контекстное меню в точке клика правого клика мыши
        /// </summary>
        private void ShowPopupMenu(PopupMenuShowingEventArgs e)
        {
            var hitInfo = CalcHitInfo(e.Point);

            if (hitInfo.Node == null)
            {
                return;
            }
            CustomPopupMenu.ShowPopup(PointToScreen(e.Point));
        }
Beispiel #3
0
        protected virtual void CustomMenuPopupMenuShowing(object sender, PopupMenuShowingEventArgs e)
        {
            //При вызове обычного меню на клике по строке
            switch (e.MenuType)
            {
            case GridMenuType.User:
            case GridMenuType.Row:
                RepositoryItem repository = null;
                //Показать меню для выбора значения выделенных строк
                if (OptionsBehavior.Editable && OptionsCustomization.ShowSelectedRowMenu && FocusedColumn != null &&
                    FocusedColumn.OptionsColumn.ShowEditorInPopupMenu && FocusedColumn.OptionsColumn.AllowEdit &&
                    !FocusedColumn.OptionsColumn.ReadOnly && SelectedRowsCount > 1)
                {
                    repository = DXCustomMenuCreator.DXCreateBarItemByFocusedColumn(FocusedColumn);
                    var buttonRepository = repository as RepositoryItemButtonEdit;
                    if (buttonRepository != null && buttonRepository.Buttons.Count > 1)
                    {
                        buttonRepository.ButtonClick += ClearSelectedRowsFromMenu;
                    }
                }
                if (CustomPopupMenu != null)
                {
                    AddButtonInPopupMenu();
                    DeleteButtonInPopupMenu();
                    var link = CustomPopupMenu.ItemLinks
                               .OfType <BarEditItemLink>()
                               .FirstOrDefault(bei => bei.Item.Id == -1);
                    if (link != null)
                    {
                        CustomPopupMenu.RemoveLink(link);
                    }
                    if (repository != null)
                    {
                        var bei = new BarEditItem
                        {
                            Edit = repository,
                            Id   = -1,
                            Tag  = FocusedColumn
                        };
                        bei.EditValueChanged += SelectedRowEditValueChanged;
                        CustomPopupMenu.AddItem(bei);
                    }
                }
                else
                {
                    var dxmAdd    = new DXMenuItem(AddCaption, AddRow, Resources.Add);
                    var dxmRemove = new DXMenuItem(RemoveCaption, RemoveRows, Resources.Remove);
                    if (e.MenuType == GridMenuType.User && e.Menu == null)
                    {
                        e.Menu = new GridViewMenu(this);
                    }
                    if (OptionsCustomization.AllowAdd)
                    {
                        e.Menu.Items.Add(dxmAdd);
                    }
                    if (OptionsCustomization.AllowDelete)
                    {
                        e.Menu.Items.Add(dxmRemove);
                        dxmRemove.Enabled = SelectedRowsCount != 0;
                    }
                    if (repository != null)
                    {
                        var bei = new DXEditMenuItem
                        {
                            Edit = repository,
                            Tag  = FocusedColumn
                        };
                        bei.EditValueChanged += SelectedRowEditValueChanged;
                        e.Menu.Items.Add(bei);
                    }
                }
                break;

            case GridMenuType.Column:
                DXPopupMenu menu = e.Menu as GridViewColumnMenu;
                if (menu == null)
                {
                    return;
                }
                DXCustomMenuCreator.HideCustomizationColumns(menu);
                DXCustomMenuCreator.DXCreateSelectSelectionMenu(menu, CustomItemClick, RowItemClick, CheckboxColumnItemClick);
                DXCustomMenuCreator.DXCreateLayoutMenuItems(GridControl, ref menu);
                break;
            }
        }
        /**
         *   Callback method to add custom menus/submenus
         *
         */
        public int AddCustomPopupMenuCallback()
        {
            StringBuilder message = new StringBuilder();

            try
            {
                //
                // The List of object selected in the Tree  can be queried.
                //
                TreeListNode[] treeListNode;
                m_MenuHandler.GetSelectedNodes(out treeListNode);

                //
                // The selected object(s) can be queried. Following is an example of using
                // querying selected objects.
                //
                if (treeListNode != null && treeListNode.Length > 0)
                {
                    message.Append(" The Following Objects were selected :");
                    message.Append("\n");
                    for (int i = 0; i < treeListNode.Length; ++i)
                    {
                        if (treeListNode[i] is NXOpen.PDM.PdmNavigatorNode)
                        {
                            String uid = ((NXOpen.PDM.PdmNavigatorNode)treeListNode[i]).GetUid();
                            message.Append(" UID :");
                            message.Append(uid);
                            message.Append("\n");

                            String type = ((NXOpen.PDM.PdmNavigatorNode)treeListNode[i]).GetNodeType();
                            message.Append(" Type :");
                            message.Append(type);
                            message.Append("\n");
                        }
                    }
                }

                //
                // Add the Top Level Menus/Separators. Top level menus/menu items/seperators
                // must be added by calling menu handler. Subsequent sublevel menus/menu items/seperators
                // can be added by calling add methods on the corresponding parent menu/submenu.
                //
                m_MenuHandler.AddMenuSeparator();
                CustomPopupMenuItem itemMM1 = m_MenuHandler.AddMenuItem(1, "Main Menu 1");
                CustomPopupMenu     menuMM2 = m_MenuHandler.AddMenu(2, "Main Menu 2");

                CustomPopupMenuItem itemMM3 = m_MenuHandler.AddMenuItem(6, "Revise");

                if ((treeListNode.Length == 1) &&
                    (treeListNode[0] is NXOpen.PDM.PdmNavigatorNode) &&
                    ((NXOpen.PDM.PdmNavigatorNode)treeListNode[0]).GetNodeType().Equals("ItemRevision"))
                {
                    //
                    // Create an new menu only when there is 1 selection and the selection is ItemRevision
                    //
                    CustomPopupMenuItem itemMM4 = m_MenuHandler.AddMenuItem(7, "Main Menu 3");
                }
                else
                {
                    // Code below will show the number of selection objects and the object type of the
                    // first selection

                    message.Append(treeListNode.Length);
                    message.Append("\n");
                    if (treeListNode[0] is NXOpen.PDM.PdmNavigatorNode)
                    {
                        message.Append(((NXOpen.PDM.PdmNavigatorNode)treeListNode[0]).GetNodeType());
                        message.Append("\n");
                    }

                    // Disable the menu when multiple selection and for any selection object which is
                    // not item revision
                    itemMM3.SetDisabled();
                }

                //
                // Add the First Level Menus/Separators to "Main Menu 2"
                //
                CustomPopupMenuItem subMenuSM21 = menuMM2.AddMenuItem(3, "Sub Menu 2-1");
                menuMM2.AddMenuSeparator();
                CustomPopupMenu subMenuSM22 = menuMM2.AddMenu(4, "Sub Menu 2-2");

                //
                // Add Second Level Menu to "Sub Menu 2-2"
                //
                CustomPopupMenuItem subMenuSM221 = subMenuSM22.AddMenuItem(5, "Sub Menu 2-2-1");
                // Any menu/submenu/menuItem can be disabled by calling SetDisabled method
                subMenuSM221.SetDisabled();

                // m_UI.NXMessageBox.Show("MenuCreator", NXOpen.NXMessageBox.DialogType.Information, message.ToString());
            }
            catch (NXException ex)
            {
                m_UI.NXMessageBox.Show("MenuCreator", NXOpen.NXMessageBox.DialogType.Error, ex.Message);
            }
            return(0);
        }