private static List<IUndoableGridTableAction> clearCells(int startColumn, int nCols, int startRow, int nRows, IGrid grid, MetaInfoWriter metaInfoWriter) { List<IUndoableGridTableAction> clearActions = new ArrayList<>(); for (int i = startColumn; i < startColumn + nCols; i++) { for (int j = startRow; j < startRow + nRows; j++) { if (!grid.isPartOfTheMergedRegion(i, j) || (grid.isTopLeftCellInMergedRegion(i, j))){ clearActions.add(new UndoableClearAction(i, j, metaInfoWriter)); } } } return clearActions; }
private static List<IUndoableGridTableAction> emptyCells(int colFrom, int rowFrom, int nCols, int nRows, IGrid grid, MetaInfoWriter metaInfoWriter) { List<IUndoableGridTableAction> actions = new ArrayList<>(); for (int i = nCols - 1; i >= 0; i--) { for (int j = nRows - 1; j >= 0; j--) { int cFrom = colFrom + i; int rFrom = rowFrom + j; if (grid.isTopLeftCellInMergedRegion(cFrom, rFrom)) { ICell cell = grid.getCell(cFrom, rFrom); if (cell.getHeight() > nRows || cell.getWidth() > nCols) { // Don't clear merged cells which are bigger than the cleaned region. continue; } } else if (grid.isPartOfTheMergedRegion(cFrom, rFrom)) { // Don't clear middle of the merged cells. continue; } actions.add(new UndoableSetValueAction(cFrom, rFrom, null, metaInfoWriter)); } } return actions; }
private static AUndoableCellAction shiftCell(int colFrom, int rowFrom, int colTo, int rowTo, IGrid grid, MetaInfoWriter metaInfoWriter) { if (!grid.isPartOfTheMergedRegion(colFrom, rowFrom) || grid.isTopLeftCellInMergedRegion(colFrom, rowFrom)) { // non top left cell of merged region have to be skipped return new UndoableShiftValueAction(colFrom, rowFrom, colTo, rowTo, metaInfoWriter); } return new SetBorderStyleAction(colTo, rowTo, grid.getCell(colFrom, rowFrom).getStyle(), false, metaInfoWriter); }
for (int row = region.getTop(); row <= region.getBottom(); row++) { if (!grid.isPartOfTheMergedRegion(column, row) || (grid.isTopLeftCellInMergedRegion(column, row) && IGridRegion.Tool .width(grid.getRegionStartingAt(column, row)) <= nCols)) {
for (int column = region.getLeft(); column <= region.getRight(); column++) { if (!grid.isPartOfTheMergedRegion(column, row) || (grid.isTopLeftCellInMergedRegion(column, row) && IGridRegion.Tool .height(grid.getRegionStartingAt(column, row)) <= nRows)) {