private void ContextMenu_Popup(object sender, EventArgs e)
        {
            AbType cbType =
                cbAbility == null ? AbType.None :
                cbAbility.IsArithmetick ? AbType.Arithmetick :
                cbAbility.IsCharging ? AbType.Charging :
                cbAbility.IsItem ? AbType.Item :
                cbAbility.IsJumping ? AbType.Jumping :
                cbAbility.IsNormal ? AbType.Normal :
                cbAbility.IsOther ? AbType.Other :
                AbType.Throwing;
            bool typesMatch = TypesMatch();

            abilitiesListBox.ContextMenu.MenuItems[pasteCommonIndex].Enabled   = cbType != AbType.None;
            abilitiesListBox.ContextMenu.MenuItems[pasteAllIndex].Enabled      = typesMatch;
            abilitiesListBox.ContextMenu.MenuItems[pasteSpecificIndex].Enabled = typesMatch;
            abilitiesListBox.ContextMenu.MenuItems[pasteSpecificIndex].Text    = string.Format("Paste {0}", cbType);
        }
        private bool TypesMatch()
        {
            Ability destinationAbility = abilitiesListBox.SelectedItem as Ability;
            AbType  cbType             =
                cbAbility == null ? AbType.None :
                cbAbility.IsArithmetick ? AbType.Arithmetick :
                cbAbility.IsCharging ? AbType.Charging :
                cbAbility.IsItem ? AbType.Item :
                cbAbility.IsJumping ? AbType.Jumping :
                cbAbility.IsNormal ? AbType.Normal :
                cbAbility.IsOther ? AbType.Other :
                AbType.Throwing;
            AbType destType =
                destinationAbility == null ? AbType.None :
                destinationAbility.IsArithmetick ? AbType.Arithmetick :
                destinationAbility.IsCharging ? AbType.Charging :
                destinationAbility.IsItem ? AbType.Item :
                destinationAbility.IsJumping ? AbType.Jumping :
                destinationAbility.IsNormal ? AbType.Normal :
                destinationAbility.IsOther ? AbType.Other :
                AbType.Throwing;

            return(cbType != AbType.None && destType != AbType.None && cbType == destType);
        }