private static void selectionRegionChanged( JGrid grid, SelectionRegion selectionRegion, boolean add) { if (!add) { grid.getSelectionModel().clearSelection(); } List<Cell> selectedCells = new ArrayList<Cell>(); for (int i = selectionRegion.getFirstRow(); i <= selectionRegion.getLastRow(); i++) { for (int j = selectionRegion.getFirstColumn(); j <= selectionRegion.getLastColumn(); j++) { boolean isSpan = grid.getSpanModel().isCellSpan(i, j); // if (!isSpan) { Cell cell = new Cell(i, j); // System.out.println("cell=" + cell); selectedCells.add(cell); // } else { // CellSpan cellSpan = grid.getSpanModel().getSpanOver(i, j); // if ((cellSpan.getRow() == i) && (cellSpan.getGroupColumn() == j)) // { // Cell cell = new Cell(i, j); // System.out.println("cell=" + cell); // selectedCells.add(cell); // } // } } } grid.getSelectionModel().addSelectionCells(selectedCells); }
public void actionPerformed(ActionEvent event) { JGrid grid = (JGrid) event.getSource(); if (!grid.hasFocus()) { CellEditor cellEditor = grid.getCurrentCellEditor(); if ((cellEditor != null) && !cellEditor.stopCellEditing()) { return; } grid.requestFocus(); } SelectionModel selectionModel = grid.getSelectionModel(); Cell selectedCell = selectionModel.getSelectedCell(); int row = selectedCell.getRow(); int column = selectedCell.getColumn(); grid.editCellAt(row, column, null); Component editorComponent = grid.getEditorComponent(); if (editorComponent != null) { editorComponent.requestFocus(); } }
public void actionPerformed(ActionEvent event) { JGrid grid = (JGrid) event.getSource(); if (grid.isEditing() && !grid.getCurrentCellEditor().stopCellEditing()) { return; } SelectionModel selectionModel = grid.getSelectionModel(); List<Cell> selectedCells = selectionModel.getSelectedCells(); int selectedCount = selectedCells.size(); if (selectedCount == 0) { return; } Cell firstSelectedCell = selectionModel.getSelectedCell(); Cell lastSelectedCell = selectionModel.getLastSelectedCell(); int row = lastSelectedCell.getRow(); int column = lastSelectedCell.getColumn(); if (shiftPressed) { if (shiftRegion == null) { shiftRegion = new SelectionRegion(); shiftRegion.setFirstRow(row); shiftRegion.setFirstColumn(column); shiftRegion.setLastRow(row); shiftRegion.setLastColumn(column); } boolean nextSelection = true; if ((dx == 1) && (column < grid.getColumnCount() - 1)) { column++; } else if ((dx == -1) && (column > 0)) { column--; } else if ((dy == 1) && (row < grid.getRowCount() - 1)) { row++; } else if ((dy == -1) && (row > 0)) { row--; } else { nextSelection = false; } if (nextSelection) { GridSelectionAlgorithm selectionAlgorithm = new GridSelectionAlgorithm(grid); selectionAlgorithm.update( row, column, firstSelectedCell.getRow(), firstSelectedCell.getColumn(), lastSelectedCell.getRow(), lastSelectedCell.getColumn(), shiftRegion); selectionRegionChanged(grid, shiftRegion, false); // because the selectionModel is cleared and made from scratch // keep a reference to first and last selected cells selectionModel.setFirstCell(firstSelectedCell); selectionModel.setLastCell(new Cell(row, column)); } } else { shiftRegion = null; SpanModel spanModel = grid.getSpanModel(); if (spanModel.isCellSpan(row, column)) { CellSpan span = spanModel.getSpanOver(row, column); row = span.getRow(); column = span.getColumn(); if ((dx > 0) && (span.getColumnCount() > 1)) { column = span.getLastColumn(); } if ((dy > 0) && (span.getRowCount() > 1)) { row = span.getLastRow(); } } row = clipToRange(row + dy, 0, grid.getRowCount()); column = clipToRange(column + dx, 0, grid.getColumnCount()); selectionModel.clearSelection(); if (!grid.isCellSpan(row, column)) { selectionModel.addSelectionCell(new Cell(row, column)); } else { CellSpan span = spanModel.getSpanOver(row, column); List<Cell> cells = new ArrayList<Cell>(); for (int i = 0; i < span.getRowCount(); i++) { for (int j = 0; j < span.getColumnCount(); j++) { cells.add(new Cell(span.getRow() + i, span.getColumn() + j)); } } selectionModel.addSelectionCells(cells); } } }