@Override public boolean onKeyboardEvent(KeyboardEvent event) { NullCheck.notNull(event, "event"); if (!event.isSpecial() && (!event.isModified() || event.withShiftOnly())) return onChar(event); if (!event.isSpecial() || event.isModified()) return false; switch (event.getSpecial()) { case ARROW_DOWN: return onArrowDown(event, false); case ARROW_UP: return onArrowUp(event, false); case ARROW_RIGHT: return onArrowRight(event); case ARROW_LEFT: return onArrowLeft(event); case ALTERNATIVE_ARROW_DOWN: return onArrowDown(event, true); case ALTERNATIVE_ARROW_UP: return onArrowUp(event, true); case ALTERNATIVE_ARROW_RIGHT: return onAltRight(event); case ALTERNATIVE_ARROW_LEFT: return onAltLeft(event); case HOME: return onHome(event); case END: return onEnd(event); case ALTERNATIVE_HOME: return onAltHome(event); case ALTERNATIVE_END: return onAltEnd(event); case PAGE_DOWN: return onPageDown(event, false); case PAGE_UP: return onPageUp(event, false); case ALTERNATIVE_PAGE_DOWN: return onPageDown(event, true); case ALTERNATIVE_PAGE_UP: return onPageUp(event, true); case INSERT: return onInsert(event); case ENTER: return onEnter(event); default: return false; } }