public void onKeyDown(KeyDownEvent e) { // stopping propagation is needed to prevent duplicate events e.stopPropagation(); checkCursorKeys(e); int keyCode = e.getNativeKeyCode(); switch (keyCode) { case KeyCodes.KEY_ESCAPE: e.preventDefault(); GeoElement oldGeo = kernel.getGeoAt(column, row); cancelCellEditing(); // restore old text in spreadsheet table.getModel().setValueAt(oldGeo, row, column); // stopCellEditing(0,0); // force nice redraw table.setSelection(column, row); // update the formula bar after escape // ?//table.getView().updateFormulaBar(); break; } }
@Override public void onKeyDown(KeyDownEvent event) { int key = event.getNativeKeyCode(); if (event.isControlKeyDown()) { if (key == KEY_PLUS || key == KEY_MINUS) { app.getToolbar().zoomChangeClicked(key == KEY_PLUS ? 1 : -1); event.preventDefault(); } } else if (!event.isShiftKeyDown()) { boolean handled = true; switch (key) { case KeyCodes.KEY_UP: if (!tryPan(0, -PAN_STEP)) changePage(page - 1, 0, 1); break; case KeyCodes.KEY_DOWN: if (!tryPan(0, PAN_STEP)) changePage(page + 1, 0, -1); break; case KeyCodes.KEY_LEFT: if (!tryPan(-PAN_STEP, 0)) changePage(page - 1, 1, 0); break; case KeyCodes.KEY_RIGHT: if (!tryPan(PAN_STEP, 0)) changePage(page + 1, -1, 0); break; case KeyCodes.KEY_PAGEUP: if (!tryPan(0, -canvas.getCoordinateSpaceHeight() + PAN_STEP)) changePage(page - 1, 0, 1); break; case KeyCodes.KEY_PAGEDOWN: case KeyCodes.KEY_SPACE: if (!tryPan(0, canvas.getCoordinateSpaceHeight() - PAN_STEP)) changePage(page + 1, 0, -1); break; case KeyCodes.KEY_HOME: changePage(0, -1, -1); break; case KeyCodes.KEY_END: changePage(app.getPageCache().getPageCount() - 1, 1, 1); break; default: handled = false; } if (handled) event.preventDefault(); } }
private void handleKeyDown(KeyDownEvent event) { int modifiers = KeyboardShortcut.getModifierValue(event.getNativeEvent()); switch (event.getNativeKeyCode()) { case KeyCodes.KEY_UP: case KeyCodes.KEY_DOWN: break; default: return; } if (!allowMultiSelect_) modifiers = KeyboardShortcut.NONE; event.preventDefault(); event.stopPropagation(); switch (modifiers) { case 0: case KeyboardShortcut.SHIFT: break; default: return; } sortSelectedRows(); int min = table_.getRows().getLength(); int max = -1; if (selectedRows_.size() > 0) { min = selectedRows_.get(0).getRowIndex(); max = selectedRows_.get(selectedRows_.size() - 1).getRowIndex(); } switch (event.getNativeKeyCode()) { case KeyCodes.KEY_UP: { Integer row = findNextValueRow(min, true); if (row != null) { if (modifiers != KeyboardShortcut.SHIFT) clearSelection(); setSelectedPhysical(row, 1, true); ensureRowVisible(row); } break; } case KeyCodes.KEY_DOWN: { Integer row = findNextValueRow(max, false); if (row != null) { if (modifiers != KeyboardShortcut.SHIFT) clearSelection(); setSelectedPhysical(row, 1, true); ensureRowVisible(row); } break; } } }
public void onKeyDown(KeyDownEvent event) { int keyCode = event.getNativeKeyCode(); for (KeyDownPreviewHandler handler : keyDownPreviewHandlers_) { if (handler.previewKeyDown(event.getNativeEvent())) { event.preventDefault(); event.stopPropagation(); return; } } if (event.getNativeKeyCode() == KeyCodes.KEY_TAB) event.preventDefault(); int modifiers = KeyboardShortcut.getModifierValue(event.getNativeEvent()); if (event.isUpArrow() && modifiers == 0) { if ((input_.getCurrentLineNum() == 0) || input_.isCursorAtEnd()) { event.preventDefault(); event.stopPropagation(); navigateHistory(-1); } } else if (event.isDownArrow() && modifiers == 0) { if ((input_.getCurrentLineNum() == input_.getCurrentLineCount() - 1) || input_.isCursorAtEnd()) { event.preventDefault(); event.stopPropagation(); navigateHistory(1); } } else if (keyCode == KeyCodes.KEY_ENTER && modifiers == 0) { event.preventDefault(); event.stopPropagation(); restoreFocus_ = true; processCommandEntry(); } else if (keyCode == KeyCodes.KEY_ESCAPE && modifiers == 0) { event.preventDefault(); if (input_.getText().length() == 0) { // view_.isPromptEmpty() is to check for cases where the // server is prompting but not at the top level. Escape // needs to send null in those cases. // For example, try "scan()" function if (view_.isPromptEmpty()) { // interrupt server server_.interrupt( new VoidServerRequestCallback() { @Override public void onError(ServerError error) { super.onError(error); globalDisplay_.showErrorMessage( "Error Interrupting Server", error.getUserMessage()); } }); } else { // if the input is already empty then send a console reset // which will jump us back to the main prompt eventBus_.fireEvent(new ConsoleInputEvent(null)); } } input_.clear(); } else { int mod = KeyboardShortcut.getModifierValue(event.getNativeEvent()); if (mod == KeyboardShortcut.CTRL) { switch (keyCode) { case 'L': Shell.this.onConsoleClear(); event.preventDefault(); break; } } else if (mod == KeyboardShortcut.ALT) { switch (keyCode) { case 189: // hyphen event.preventDefault(); event.stopPropagation(); input_.replaceSelection(" <- ", true); break; } } else if ((BrowseCap.hasMetaKey() && (mod == (KeyboardShortcut.META + KeyboardShortcut.SHIFT))) || (!BrowseCap.hasMetaKey() && (mod == (KeyboardShortcut.CTRL + KeyboardShortcut.SHIFT)))) { switch (keyCode) { case KeyCodes.KEY_M: event.preventDefault(); event.stopPropagation(); input_.replaceSelection(" %>% ", true); break; } } } }
public void checkCursorKeys(KeyDownEvent e) { String text = autoCompleteTextField.getText(); // ?// (String) // delegate.getCellEditorValue(); int keyCode = e.getNativeKeyCode(); // Application.debug(e+""); switch (keyCode) { case KeyCodes.KEY_UP: if (isSuggesting()) { return; } if (isFormulaBarListener) return; // Application.debug("UP"); stopCellEditing(0, -1, false); // ?//e.consume(); tabReturnCol = -1; break; case KeyCodes.KEY_TAB: if (isFormulaBarListener) return; App.debug(" tab"); // Application.debug("RIGHT"); // shift-tab moves left // tab moves right if (tabReturnCol == -1) tabReturnCol = column; stopCellEditing(e.isShiftKeyDown() ? -1 : 1, 0, false); e.preventDefault(); break; case KeyCodes.KEY_ENTER: if (isSuggesting()) { return; } // if incomplete command entered, want to move the cursor to // between [] int bracketsIndex = text.indexOf("[]"); if (bracketsIndex == -1) { if (tabReturnCol != -1) { int colOffset = tabReturnCol - column; stopCellEditing(colOffset, 1, true); } else { // TODO: in desktop this works with column, row + 1 String cellBelowStr = GeoElementSpreadsheet.getSpreadsheetCellName(column, row + 1); GeoElement cellBelow = kernel.getConstruction().lookupLabel(cellBelowStr); boolean moveDown = cellBelow == null || !cellBelow.isFixed(); // don't move down to cell below after <Enter> if it's // fixed stopCellEditing(0, moveDown ? 1 : 0, moveDown); } } else { autoCompleteTextField.setCaretPosition(bracketsIndex + 1); // ?//e.consume(); } tabReturnCol = -1; break; case KeyCodes.KEY_DOWN: if (isSuggesting()) { return; } if (isFormulaBarListener) { // ?//e.consume(); return; } // Application.debug("DOWN"); stopCellEditing(0, 1, false); tabReturnCol = -1; break; case KeyCodes.KEY_LEFT: if (isFormulaBarListener) return; // Application.debug("LEFT"); // Allow left/right keys to exit cell for easier data entry if (getCaretPosition() == 0) { stopCellEditing(-1, 0, false); } tabReturnCol = -1; break; case KeyCodes.KEY_RIGHT: if (isFormulaBarListener) return; // Application.debug("RIGHT"); // Allow left/right keys to exit cell for easier data entry if (getCaretPosition() == text.length()) { stopCellEditing(1, 0, false); } tabReturnCol = -1; break; case KeyCodes.KEY_PAGEDOWN: case KeyCodes.KEY_PAGEUP: e.preventDefault(); // ?//e.consume(); tabReturnCol = -1; break; // An F1 keypress causes the focus to be lost, so we // need to set 'editing' to false to prevent the focusLost() // method from calling stopCellEditing() // ?//case KeyEvent.VK_F1: // ?// editing = false; // ?// break; } }