package org.geogebra.web.html5.event;
import java.util.LinkedList;
import org.geogebra.common.util.debug.Log;
public final class KeyEventW
extends org.geogebra.common.euclidian.event.KeyEvent {
private static final LinkedList<KeyEventW> pool = new LinkedList<KeyEventW>();
private com.google.gwt.event.dom.client.KeyPressEvent event;
private KeyEventW(com.google.gwt.event.dom.client.KeyPressEvent e) {
Log.debug("possible missing release()");
this.event = e;
}
public static KeyEventW wrapEvent(
com.google.gwt.event.dom.client.KeyPressEvent e) {
if (!pool.isEmpty()) {
KeyEventW wrap = pool.getLast();
wrap.event = e;
pool.removeLast();
return wrap;
}
return new KeyEventW(e);
}
public void release() {
KeyEventW.pool.add(this);
}
@Override
public boolean isEnterKey() {
return event.getNativeEvent().getKeyCode() == 13
|| event.getNativeEvent().getKeyCode() == 10
|| (event.getNativeEvent().getKeyCode() == 0 && event
.getNativeEvent().getCharCode() == 13);
}
@Override
public boolean isCtrlDown() {
return event.isControlKeyDown();
}
@Override
public boolean isAltDown() {
return event.isAltKeyDown();
}
@Override
public char getCharCode() {
return event.getCharCode();
}
@Override
public void preventDefault() {
event.preventDefault();
}
}