@Override public void onMouseUp(MouseUpEvent event) { event.preventDefault(); event.stopPropagation(); if (this.activeLook) { switch (event.getNativeButton()) { case NativeEvent.BUTTON_LEFT: this.moveForward = false; break; case NativeEvent.BUTTON_RIGHT: this.moveBackward = false; break; } } }
public void onMouseUp(MouseUpEvent e) { GPoint p = table.getIndexFromPixel(e.getClientX(), e.getClientY()); if (p.getY() == 0 && p.getX() > 0) { if (table.isEditing()) editor.cancelCellEditing(); table.scc.onMouseUp(e); return; } else if (p.getX() == 0 && p.getY() > 0) { if (table.isEditing()) editor.cancelCellEditing(); table.srh.onMouseUp(e); return; } mouseIsDown = false; e.preventDefault(); boolean eConsumed = false; boolean rightClick = (e.getNativeButton() == NativeEvent.BUTTON_RIGHT); if (table.getTableMode() == MyTable.TABLE_MODE_AUTOFUNCTION) { table.stopAutoFunction(); return; } if (!rightClick) { if (editor.isEditing()) { String text = editor.getEditingValue(); if (text.startsWith("=")) { GPoint point = table.getIndexFromPixel(e.getClientX(), e.getClientY()); if (point != null) { int column = point.getX(); int row = point.getY(); if (column != editor.column || row != editor.row) { eConsumed = true; } } } selectedCellName = null; prefix0 = null; postfix0 = null; table.isDragging2 = false; table.repaint(); } if (table.isOverDot) { // prevent UI manager from changing selection when mouse // is in a neighbor cell but is still over the dot region eConsumed = true; } if (table.isDragingDot) { if (table.dragingToColumn == -1 || table.dragingToRow == -1) return; int x1 = -1; int y1 = -1; int x2 = -1; int y2 = -1; // -|1|- // 2|-|3 // -|4|- if (table.dragingToColumn < table.minSelectionColumn) { // 2 x1 = table.dragingToColumn; y1 = table.minSelectionRow; x2 = table.minSelectionColumn - 1; y2 = table.maxSelectionRow; } else if (table.dragingToRow > table.maxSelectionRow) { // 4 x1 = table.minSelectionColumn; y1 = table.maxSelectionRow + 1; x2 = table.maxSelectionColumn; y2 = table.dragingToRow; } else if (table.dragingToRow < table.minSelectionRow) { // 1 x1 = table.minSelectionColumn; y1 = table.dragingToRow; x2 = table.maxSelectionColumn; y2 = table.minSelectionRow - 1; } else if (table.dragingToColumn > table.maxSelectionColumn) { // 3 x1 = table.maxSelectionColumn + 1; y1 = table.minSelectionRow; x2 = table.dragingToColumn; y2 = table.maxSelectionRow; } // copy the cells boolean succ = relativeCopy.doDragCopy( table.minSelectionColumn - 1, table.minSelectionRow - 1, table.maxSelectionColumn - 1, table.maxSelectionRow - 1, x1 - 1, y1 - 1, x2 - 1, y2 - 1); if (succ) { app.storeUndoInfo(); } // extend the selection to include the drag copy selection table.setSelection( Math.min(x1, table.minSelectionColumn) - 1, Math.min(y1, table.minSelectionRow) - 1, Math.max(x2, table.maxSelectionColumn) - 1, Math.max(y2, table.maxSelectionRow) - 1); // reset flags and cursor table.isOverDot = false; table.isDragingDot = false; table.dragingToRow = -1; table.dragingToColumn = -1; // TODO//setTableCursor(); // prevent UI manager from changing selection eConsumed = true; table.repaint(); } } // Alt click: copy definition to input field if (!table.isEditing() && e.isAltKeyDown() && app.showAlgebraInput()) { int row = p.getY(); // table.rowAtPoint(e.getPoint()); int col = p.getX(); // table.columnAtPoint(e.getPoint()); GeoElement geo = (GeoElement) model.getValueAt(row - 1, col - 1); if (geo != null) { // F3 key: copy definition to input bar app.getGlobalKeyDispatcher().handleFunctionKeyForAlgebraInput(3, geo); return; } } // handle right click if (rightClick) { if (!((AppW) kernel.getApplication()).letShowPopupMenu()) return; // change selection if right click is outside current selection if (p.getY() < table.minSelectionRow || p.getY() > table.maxSelectionRow || p.getX() < table.minSelectionColumn || p.getX() > table.maxSelectionColumn) { // switch to cell selection mode if (table.getSelectionType() != MyTable.CELL_SELECT) { table.setSelectionType(MyTable.CELL_SELECT); } // now change the selection if (p.getX() > 0 && p.getY() > 0) table.changeSelection(p.getY() - 1, p.getX() - 1, false, false); } // create and show context menu /*TODO SpreadsheetContextMenu popupMenu = new SpreadsheetContextMenu( table, e.isShiftDown()); popupMenu.show(e.getComponent(), e.getX(), e.getY());*/ } if (eConsumed) return; // MyTable's default listeners follow, they should be simulated in Web e.g. here // change selection if right click is outside current selection if (p.getY() != table.leadSelectionRow + 1 || p.getX() != table.leadSelectionColumn + 1) { // switch to cell selection mode if (p.getY() > 0 && p.getX() > 0) { if (table.getSelectionType() != MyTable.CELL_SELECT) { table.setSelectionType(MyTable.CELL_SELECT); } // now change the selection table.changeSelection(p.getY() - 1, p.getX() - 1, false, true); table.repaint(); } } }