jogamp.newt.driver.android.event.AndroidNewtEventTranslator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jogl Show documentation
Show all versions of jogl Show documentation
Java™ Binding for the OpenGL® API (Atomic Jar files)
package jogamp.newt.driver.android.event;
import jogamp.newt.driver.android.WindowDriver;
import android.view.View;
public class AndroidNewtEventTranslator implements View.OnKeyListener, View.OnTouchListener, View.OnFocusChangeListener, View.OnGenericMotionListener {
private final WindowDriver newtWindow;
private final AndroidNewtEventFactory factory;
public AndroidNewtEventTranslator(final WindowDriver newtWindow, final android.content.Context context, final android.os.Handler handler) {
this.newtWindow = newtWindow;
this.factory = new AndroidNewtEventFactory(context, handler);
}
private final boolean processTouchMotionEvents(final View v, final android.view.MotionEvent event, final boolean isOnTouchEvent) {
final boolean eventSent = factory.sendPointerEvent(true /*enqueue*/, false /*wait*/, true /*setFocusOnDown*/,
isOnTouchEvent, event, newtWindow);
if( eventSent ) {
try { Thread.sleep((long) (100.0F/3.0F)); } // 33 ms - FIXME ??
catch(final InterruptedException e) { }
return true; // consumed/handled, further interest in events
}
return false; // no mapping, no further interest in the event!
}
@Override
public boolean onTouch(final View v, final android.view.MotionEvent event) {
return processTouchMotionEvents(v, event, true);
}
@Override
public boolean onGenericMotion(final View v, final android.view.MotionEvent event) {
return processTouchMotionEvents(v, event, false);
}
@Override
public boolean onKey(final View v, final int keyCode, final android.view.KeyEvent event) {
final com.jogamp.newt.event.KeyEvent newtEvent = AndroidNewtEventFactory.createKeyEvent(event, newtWindow, false /* no system keys */);
if(null != newtEvent) {
newtWindow.enqueueEvent(false, newtEvent);
return true;
}
return false;
}
@Override
public void onFocusChange(final View v, final boolean hasFocus) {
newtWindow.focusChanged(false, hasFocus);
}
}