package com.niklim.clicktrace.capture.mouse;
import org.jnativehook.GlobalScreen;
import org.jnativehook.NativeHookException;
import org.jnativehook.mouse.NativeMouseEvent;
import org.jnativehook.mouse.NativeMouseInputListener;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.inject.Inject;
import com.niklim.clicktrace.ErrorNotifier;
import com.niklim.clicktrace.controller.ActiveSession;
import com.niklim.clicktrace.msg.ErrorMsgs;
/**
* Abstract class for mouse clicks capturing. Initializes JNativeHook.
*/
public abstract class MouseCapture implements NativeMouseInputListener {
private static Logger log = LoggerFactory.getLogger(MouseCapture.class);
@Inject
protected ActiveSession activeSession;
public MouseCapture() {
try {
if (!GlobalScreen.isNativeHookRegistered()) {
GlobalScreen.registerNativeHook();
log.info("Native hook registered");
}
} catch (NativeHookException e) {
log.error("Unable to register JNativeHook", e);
ErrorNotifier.interrupt(ErrorMsgs.UNABLE_TO_REGISTER_NATIVE_HOOK_ERROR);
}
GlobalScreen.getInstance().addNativeMouseListener(this);
}
public abstract void nativeMouseReleased(NativeMouseEvent e);
public void nativeMouseClicked(NativeMouseEvent e) {
}
public void nativeMousePressed(NativeMouseEvent e) {
}
public void nativeMouseMoved(NativeMouseEvent e) {
}
public void nativeMouseDragged(NativeMouseEvent e) {
}
}