using System.Windows.Input;
namespace Developpez.Dotnet.Windows.Input
{
///
/// Définit un mouvement de la molette de la souris qui peut être utilisé pour appeler une commande.
///
public class MouseWheelGesture : MouseGesture
{
private static readonly MouseWheelGesture _wheelDown;
private static readonly MouseWheelGesture _wheelUp;
private static readonly MouseWheelGesture _wheelMove;
static MouseWheelGesture()
{
_wheelDown = new MouseWheelGesture(MouseWheelAction.WheelDown);
_wheelUp = new MouseWheelGesture(MouseWheelAction.WheelUp);
_wheelMove = new MouseWheelGesture(MouseWheelAction.WheelMove);
}
///
/// Obtient ou définit le MouseWheelAction associé à ce mouvement
///
public MouseWheelAction MouseWheelAction { get; set; }
///
/// Initialise une nouvelle instance de la classe MouseWheelGesture.
///
public MouseWheelGesture()
: this(MouseWheelAction.WheelMove, ModifierKeys.None)
{
}
///
/// Initialise une nouvelle instance de la classe MouseWheelGesture avec le MouseWheelAction spécifié.
///
/// Action de la molette associée à ce mouvement
public MouseWheelGesture(MouseWheelAction action)
: this(action, ModifierKeys.None)
{
}
///
/// Initialise une nouvelle instance de la classe MouseWheelGesture avec les MouseWheelAction et ModifierKeys spécifiés.
///
/// Action de la molette associée à ce mouvement
/// Modificateurs associés à ce mouvement
public MouseWheelGesture(MouseWheelAction action, ModifierKeys modifiers)
: base(MouseAction.WheelClick, modifiers)
{
MouseWheelAction = action;
}
///
/// Détermine si le MouseWheelGesture correspond à l'entrée associée à l'objet InputEventArgs spécifié.
///
/// Cible
/// Données d'événement d'entrée à comparer à ce mouvement
/// true si le MouseWheelGesture correspond à l'entrée associée à l'objet InputEventArgs spécifié, sinon false
public override bool Matches(object targetElement, InputEventArgs inputEventArgs)
{
if (base.Matches(targetElement, inputEventArgs))
{
MouseWheelEventArgs wheelArgs = inputEventArgs as MouseWheelEventArgs;
if (wheelArgs != null)
{
if (MouseWheelAction == MouseWheelAction.WheelMove
|| MouseWheelAction == MouseWheelAction.WheelDown && wheelArgs.Delta < 0
|| MouseWheelAction == MouseWheelAction.WheelUp && wheelArgs.Delta > 0)
{
return true;
}
}
}
return false;
}
///
/// Obtient le mouvement de rotation de la molette vers le bas
///
public static MouseWheelGesture WheelDown
{
get { return _wheelDown; }
}
///
/// Obtient le mouvement de rotation de la molette vers le haut
///
public static MouseWheelGesture WheelUp
{
get { return _wheelUp; }
}
///
/// Obtient le mouvement de rotation de la molette dans n'importe quel sens
///
public static MouseWheelGesture WheelMove
{
get { return _wheelMove; }
}
}
///
/// Spécifie des constantes qui définissent les actions de la molette de la souris.
///
public enum MouseWheelAction
{
///
/// Rotation de la molette dans n'importe quel sens
///
WheelMove,
///
/// Rotation de la molette vers le haut
///
WheelUp,
///
/// Rotation de la molette vers le bas
///
WheelDown
}
}