GetContextMenuList() public méthode

public GetContextMenuList ( ) : List
Résultat List
Exemple #1
0
        public void SetSubitem(int subitem)
        {
            if (Subitem == subitem)
            {
                return;
            }

            int index = ConfigWindow.GetContextMenuList().IndexOf(this);

            // Exit out if trying to indent too far, or indent the first item
            if (subitem > Subitem && (index <= 0 || (index > 0 && ConfigWindow.GetContextMenuList()[index - 1].Subitem < Subitem)))
            {
                return;
            }

            // If submenu, reset to normal item for now
            bool wasSubmenu = false;

            if (Submenu)
            {
                SetSubmenu(false);
                wasSubmenu = true;
            }

            // Indent
            int indent     = SUB_ITEM_INDENT * (subitem - Subitem);
            int indentHalf = indent / 2;

            textBox_Name.Location      = new System.Drawing.Point(textBox_Name.Location.X + indent, textBox_Name.Location.Y);
            comboBox_Function.Location = new System.Drawing.Point(comboBox_Function.Location.X + indentHalf, comboBox_Function.Location.Y);
            textBox_Name.Width        -= indentHalf;
            comboBox_Function.Width   -= indentHalf;

            if (wasSubmenu)
            {
                SetSubmenu(true);
            }

            if (subitem > Subitem)
            {
                // Move right

                // Make item above a submenu if it's not already
                if (index > 0 && !ConfigWindow.GetContextMenuList()[index - 1].Submenu && ConfigWindow.GetContextMenuList()[index - 1].Subitem < subitem)
                {
                    ConfigWindow.GetContextMenuList()[index - 1].SetSubmenu(true);
                }
            }
            else
            {
                // Move left

                // If item directly above is a submenu, change it to a normal item
                if (index > 0 && ConfigWindow.GetContextMenuList()[index - 1].Submenu && ConfigWindow.GetContextMenuList()[index - 1].Subitem >= subitem)
                {
                    ConfigWindow.GetContextMenuList()[index - 1].SetSubmenu(false);
                }
                // If item below is subitem, change to submenu
                if (!Submenu && index < ConfigWindow.GetContextMenuList().Count - 1 && ConfigWindow.GetContextMenuList()[index + 1].Subitem == subitem + 1)
                {
                    SetSubmenu(true);
                }
            }

            comboBox_Function.Select(0, 0);

            int originalDepth = Subitem;

            Subitem = subitem;

            // Indent subitems
            if (Submenu && wasSubmenu)
            {
                for (int i = index + 1; i < ConfigWindow.GetContextMenuList().Count - 1; i++)
                {
                    if (ConfigWindow.GetContextMenuList()[i].Subitem != originalDepth + 1)
                    {
                        break;
                    }
                    wasSubmenu = ConfigWindow.GetContextMenuList()[i].Submenu;
                    ConfigWindow.GetContextMenuList()[i].SetSubitem(Subitem + 1);
                    if (wasSubmenu)
                    {
                        break;
                    }
                }
            }
        }