package org.geogebra.web.html5.util;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.event.dom.client.DomEvent;
/**
* Simple static methods helping event handling.
*/
public abstract class EventUtil {
/**
* @param event
* the event to be checked
* @return True if the event is a touch event.
*/
public static boolean isTouchEvent(DomEvent<?> event) {
return isTouchEvent(event.getNativeEvent());
}
/**
* @param event
* the event to be checked
* @return True if the event is a touch event.
*/
public static boolean isTouchEvent(NativeEvent event) {
return event.getType().contains("touch");
}
/**
* @param event
* click or touch event
* @return The x coordinate of the event (in case of touch the coordinate is
* taken from the first touch).
*/
public static int getTouchOrClickClientX(NativeEvent event) {
if (isTouchEvent(event)) {
return event.getChangedTouches().get(0).getClientX();
}
return event.getClientX();
}
/**
* @param event
* click or touch event
* @return The y coordinate of the event (in case of touch the coordinate is
* taken from the first touch).
*/
public static int getTouchOrClickClientY(NativeEvent event) {
if (isTouchEvent(event)) {
return event.getChangedTouches().get(0).getClientY();
}
return event.getClientY();
}
/**
* @param event
* click or touch event
* @return The x coordinate of the event (in case of touch the coordinate is
* taken from the first touch).
*/
public static int getTouchOrClickClientX(DomEvent<?> event) {
return getTouchOrClickClientX(event.getNativeEvent());
}
/**
* @param event
* click or touch event
* @return The y coordinate of the event (in case of touch the coordinate is
* taken from the first touch).
*/
public static int getTouchOrClickClientY(DomEvent<?> event) {
return getTouchOrClickClientY(event.getNativeEvent());
}
}