@Override public boolean onKeyboardEvent(KeyboardEvent event) { if (event == null) throw new NullPointerException("event may not be null"); 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); // FIXME:case KeyboardEvent.ALTERNATIVE_ARROW_RIGHT: // FIXME:case KeyboardEvent.ALTERNATIVE_ARROW_LEFT: case HOME: return onHome(event); case END: return onEnd(event); case ALTERNATIVE_HOME: return onLineHome(event); case ALTERNATIVE_END: return onLineEnd(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 ENTER: if (noProperContent() || clickHandler == null || hotPointY < 0 || hotPointY >= model.getRowCount() || getColUnderPos(hotPointX) < 0) return false; return clickHandler.onClick( model, getColUnderPos(hotPointX), hotPointY, model.getCell(getColUnderPos(hotPointX), hotPointY)); default: return false; } }