Files
better-genshin-impact/Common/MouseKeyHook/Implementation/EventFacade.cs
2024-12-18 23:17:52 +08:00

174 lines
5.6 KiB
C#

// This code is distributed under MIT license.
// Copyright (c) 2015 George Mamaladze
// See license.txt or https://mit-license.org/
using System;
using System.Windows.Forms;
namespace Gma.System.MouseKeyHook.Implementation
{
internal abstract class EventFacade : IKeyboardMouseEvents
{
private KeyListener m_KeyListenerCache;
private MouseListener m_MouseListenerCache;
public event KeyEventHandler KeyDown
{
add { GetKeyListener().KeyDown += value; }
remove { GetKeyListener().KeyDown -= value; }
}
public event KeyPressEventHandler KeyPress
{
add { GetKeyListener().KeyPress += value; }
remove { GetKeyListener().KeyPress -= value; }
}
public event EventHandler<KeyDownTxtEventArgs> KeyDownTxt
{
add { GetKeyListener().KeyDownTxt += value; }
remove { GetKeyListener().KeyDownTxt -= value; }
}
public event KeyEventHandler KeyUp
{
add { GetKeyListener().KeyUp += value; }
remove { GetKeyListener().KeyUp -= value; }
}
public event EventHandler<KeyEventArgsExt> KeyDownExt
{
add { GetKeyListener().KeyDownExt += value; }
remove { GetKeyListener().KeyDownExt -= value; }
}
public event EventHandler<KeyEventArgsExt> KeyUpExt
{
add { GetKeyListener().KeyUpExt += value; }
remove { GetKeyListener().KeyUpExt -= value; }
}
public event MouseEventHandler MouseMove
{
add { GetMouseListener().MouseMove += value; }
remove { GetMouseListener().MouseMove -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseMoveExt
{
add { GetMouseListener().MouseMoveExt += value; }
remove { GetMouseListener().MouseMoveExt -= value; }
}
public event MouseEventHandler MouseClick
{
add { GetMouseListener().MouseClick += value; }
remove { GetMouseListener().MouseClick -= value; }
}
public event MouseEventHandler MouseDown
{
add { GetMouseListener().MouseDown += value; }
remove { GetMouseListener().MouseDown -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseDownExt
{
add { GetMouseListener().MouseDownExt += value; }
remove { GetMouseListener().MouseDownExt -= value; }
}
public event MouseEventHandler MouseUp
{
add { GetMouseListener().MouseUp += value; }
remove { GetMouseListener().MouseUp -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseUpExt
{
add { GetMouseListener().MouseUpExt += value; }
remove { GetMouseListener().MouseUpExt -= value; }
}
public event MouseEventHandler MouseWheel
{
add { GetMouseListener().MouseWheel += value; }
remove { GetMouseListener().MouseWheel -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseWheelExt
{
add { GetMouseListener().MouseWheelExt += value; }
remove { GetMouseListener().MouseWheelExt -= value; }
}
public event MouseEventHandler MouseHWheel
{
add { GetMouseListener().MouseHWheel += value; }
remove { GetMouseListener().MouseHWheel -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseHWheelExt
{
add { GetMouseListener().MouseHWheelExt += value; }
remove { GetMouseListener().MouseHWheelExt -= value; }
}
public event MouseEventHandler MouseDoubleClick
{
add { GetMouseListener().MouseDoubleClick += value; }
remove { GetMouseListener().MouseDoubleClick -= value; }
}
public event MouseEventHandler MouseDragStarted
{
add { GetMouseListener().MouseDragStarted += value; }
remove { GetMouseListener().MouseDragStarted -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseDragStartedExt
{
add { GetMouseListener().MouseDragStartedExt += value; }
remove { GetMouseListener().MouseDragStartedExt -= value; }
}
public event MouseEventHandler MouseDragFinished
{
add { GetMouseListener().MouseDragFinished += value; }
remove { GetMouseListener().MouseDragFinished -= value; }
}
public event EventHandler<MouseEventExtArgs> MouseDragFinishedExt
{
add { GetMouseListener().MouseDragFinishedExt += value; }
remove { GetMouseListener().MouseDragFinishedExt -= value; }
}
public void Dispose()
{
if (m_MouseListenerCache != null) m_MouseListenerCache.Dispose();
if (m_KeyListenerCache != null) m_KeyListenerCache.Dispose();
}
private KeyListener GetKeyListener()
{
var target = m_KeyListenerCache;
if (target != null) return target;
target = CreateKeyListener();
m_KeyListenerCache = target;
return target;
}
private MouseListener GetMouseListener()
{
var target = m_MouseListenerCache;
if (target != null) return target;
target = CreateMouseListener();
m_MouseListenerCache = target;
return target;
}
protected abstract MouseListener CreateMouseListener();
protected abstract KeyListener CreateKeyListener();
}
}