Пример #1
0
        internal void OpenMenu(int index, int sIndex = -1, MenuBarItem subMenu = null)
        {
            isMenuOpening = true;
            OnOpenMenu?.Invoke(this, null);
            int pos = 0;

            switch (subMenu)
            {
            case null:
                lastFocused = lastFocused ?? SuperView.MostFocused;
                if (openSubMenu != null)
                {
                    CloseMenu(false, true);
                }
                if (openMenu != null)
                {
                    SuperView.Remove(openMenu);
                }

                for (int i = 0; i < index; i++)
                {
                    pos += Menus [i].Title.Length + 2;
                }
                openMenu        = new Menu(this, pos, 1, Menus [index]);
                openCurrentMenu = openMenu;
                openCurrentMenu.previousSubFocused = openMenu;

                SuperView.Add(openMenu);
                SuperView.SetFocus(openMenu);
                break;

            default:
                if (openSubMenu == null)
                {
                    openSubMenu = new List <Menu> ();
                }
                if (sIndex > -1)
                {
                    RemoveSubMenu(sIndex);
                }
                else
                {
                    var last = openSubMenu.Count > 0 ? openSubMenu.Last() : openMenu;
                    openCurrentMenu = new Menu(this, last.Frame.Left + last.Frame.Width, last.Frame.Top + 1 + last.current, subMenu);
                    openCurrentMenu.previousSubFocused = last.previousSubFocused;
                    openSubMenu.Add(openCurrentMenu);
                    SuperView.Add(openCurrentMenu);
                }
                selectedSub = openSubMenu.Count - 1;
                SuperView?.SetFocus(openCurrentMenu);
                break;
            }
            isMenuOpening = false;
            isMenuClosed  = false;
            MenuOpen      = true;
        }
Пример #2
0
        void OpenMenu(int index)
        {
            if (openMenu != null)
            {
                SuperView.Remove(openMenu);
            }

            int pos = 0;

            for (int i = 0; i < index; i++)
            {
                pos += Menus [i].Title.Length + 3;
            }

            openMenu = new Menu(this, pos, 1, Menus [index]);

            SuperView.Add(openMenu);
            SuperView.SetFocus(openMenu);
        }