boolean containsCell(int column, int row) { if (!grid.isEmpty(column, row)) { return true;// not empty cell } if (grid.isPartOfTheMergedRegion(column, row)) { IGridRegion region = grid.getRegionContaining(column, row); if (!grid.isEmpty(region.getLeft(), region.getTop())) { return true;// part of not empty merged cell } } return false; }
@Override public String toString() { return grid.getCell(x, y).getUri(); }
public int getColumnWidth(int col) { return delegate.getColumnWidth(col); }
public IGridTable[] split() { int nrows = grid.getMaxRowIndex() + 1; for (int row = grid.getMinRowIndex(); row < nrows; row++) { int ncells = grid.getMaxColumnIndex(row) + 1; if (ncells == 0) continue; for (int col = grid.getMinColumnIndex(row); col < ncells; col++) { // check if this cell was used if (cellIsUsed(col, row)) { continue; } // skip empty cell if (grid.isEmpty(col, row)) { continue; } defineTableBoundaries(col, row, col); } } return tables.toArray(new IGridTable[0]); }
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 column = startColumn - nCols; column < startColumn; column++) { 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)) {
public IGridRegion getRegionContaining(int column, int row) { return delegate.getRegionContaining(column, row); }
MetaInfoWriter metaInfoWriter) { ArrayList<IUndoableGridTableAction> resizeActions = new ArrayList<>(); for (int i = 0; i < grid.getNumberOfMergedRegions(); i++) { IGridRegion existingMergedRegion = grid.getMergedRegion(i); if (isRegionMustBeResized(existingMergedRegion, firstRowOrColumn, numberOfRowsOrColumns, isColumns, regionOfTable)) { ICellStyle oldCellStyle = grid.getCell(existingMergedRegion.getLeft(),existingMergedRegion.getBottom()).getStyle(); grid.getCell(existingMergedRegion.getLeft(),existingMergedRegion.getBottom() + 1).getStyle(); resizeActions.add(new SetBorderStyleAction(existingMergedRegion.getLeft(), existingMergedRegion.getBottom() + j, oldCellStyle,
private static IUndoableGridTableAction resizePropertiesHeader(IGridRegion tableRegion, IGrid grid, MetaInfoWriter metaInfoWriter) { int leftCell = tableRegion.getLeft(); int topCell = tableRegion.getTop(); int firstPropertyRow = IGridRegion.Tool.height(grid.getCell(leftCell, topCell).getAbsoluteRegion()); int propsCount = grid.getCell(leftCell, topCell + firstPropertyRow).getHeight(); if (propsCount == 1) { IGridRegion propHeaderRegion = grid.getRegionContaining(leftCell, topCell + firstPropertyRow); if (propHeaderRegion == null) { propHeaderRegion = new GridRegion(topCell + firstPropertyRow, leftCell, topCell + firstPropertyRow, leftCell); } return new UndoableResizeMergedRegionAction(propHeaderRegion, 1, INSERT, ROWS); } else { return new UndoableCompositeAction(resizeMergedRegions(grid, firstPropertyRow, 1, INSERT, ROWS, tableRegion, metaInfoWriter)); } }
for (int i = 0; i < grid.getNumberOfMergedRegions(); i++) { IGridRegion mergedRegion = grid.getMergedRegion(i);
public String getRangeUri(int colStart, int rowStart, int colEnd, int rowEnd) { return delegate.getRangeUri(colStart, rowStart, colEnd, rowEnd); }
public int getMaxColumnIndex(int row) { return delegate.getMaxColumnIndex(row); }
public IGridRegion getMergedRegion(int i) { return delegate.getMergedRegion(i); }
public int getMaxRowIndex() { return delegate.getMaxRowIndex(); }
public int getMinRowIndex() { return delegate.getMinRowIndex(); }
public int getNumberOfMergedRegions() { return delegate.getNumberOfMergedRegions(); }
public IGridRegion getRegionStartingAt(int colFrom, int rowFrom) { return delegate.getRegionStartingAt(colFrom, rowFrom); }
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; }
for (int row = startRow - nRows; row < startRow; row++) { 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)) {
public IGridFilter getFilter() { ProjectModel model = WebStudioUtils.getProjectModel(); XlsUrlParser p1 = new XlsUrlParser(); p1.parse(uri); IGridRegion region = IGridRegion.Tool.makeRegion(p1.getRange()); if (table.getGridTable().getGrid() instanceof CompositeGrid) { CompositeGrid compositeGrid = (CompositeGrid) table.getGridTable().getGrid(); IGridRegion r = findInCompositeGrid(compositeGrid, p1, region); if (r != null){ region = r; } }else{ if (region.getBottom() - region.getTop() == 0 && region.getRight() - region.getLeft() == 0){ //is one cell find merged region IGridRegion margedRegion = table.getGridTable().getGrid().getRegionContaining(region.getLeft(), region.getTop()); if (margedRegion != null){ region = margedRegion; } } } IGridSelector regionSelector = new RegionGridSelector(region, true); IColorFilter colorFilter = model.getFilterHolder().makeFilter(); IGridFilter filter = new ColorGridFilter(regionSelector, colorFilter); return filter; }