List of usage examples for org.apache.poi.ss.util CellRangeUtil intersect
public static int intersect(CellRangeAddress crA, CellRangeAddress crB)
From source file:com.vaadin.addon.spreadsheet.action.DeleteTableAction.java
License:Open Source License
@Override public boolean isApplicableForSelection(Spreadsheet spreadsheet, SelectionChangeEvent event) { if (!spreadsheet.getActiveSheet().getProtect() && (event.getIndividualSelectedCells().size() == 0)) { if (event.getCellRangeAddresses().size() == 1) { List<CellRangeAddress> cras = event.getCellRangeAddresses(); CellRangeAddress cra = cras.get(0); List<SpreadsheetTable> tablesForActiveSheet = spreadsheet.getTablesForActiveSheet(); for (SpreadsheetTable table : tablesForActiveSheet) { if (CellRangeUtil.intersect(cra, table.getFullTableRegion()) != CellRangeUtil.NO_INTERSECTION) { setCaption("Delete Table " + table.getFullTableRegion().formatAsString()); tableToDelete = table; return true; }// w ww. ja va 2s .c o m } } else { CellReference selectedCellReference = event.getSelectedCellReference(); List<SpreadsheetTable> tablesForActiveSheet = spreadsheet.getTablesForActiveSheet(); for (SpreadsheetTable table : tablesForActiveSheet) { if (table.getFullTableRegion().isInRange(selectedCellReference.getRow(), selectedCellReference.getCol())) { setCaption("Delete Table " + table.getFullTableRegion().formatAsString()); tableToDelete = table; return true; } } } } tableToDelete = null; return false; }
From source file:com.vaadin.addon.spreadsheet.action.InsertTableAction.java
License:Open Source License
@Override public boolean isApplicableForSelection(Spreadsheet spreadsheet, SelectionChangeEvent event) { if (!spreadsheet.getActiveSheet().getProtect() && event.getIndividualSelectedCells().size() == 0 && event.getCellRangeAddresses().size() == 1) { List<CellRangeAddress> cras = event.getCellRangeAddresses(); CellRangeAddress cra = cras.get(0); List<SpreadsheetTable> tablesForActiveSheet = spreadsheet.getTablesForActiveSheet(); // check that the table doesn't contain a table that intersects with // the current selection for (SpreadsheetTable table : tablesForActiveSheet) { if (CellRangeUtil.intersect(cra, table.getFullTableRegion()) != CellRangeUtil.NO_INTERSECTION) { return false; }/*from w ww . j a va 2s. c o m*/ } if (cra.getFirstRow() != cra.getLastRow()) { setCaption("Create Table on " + cra.formatAsString()); return true; } } return false; }
From source file:com.vaadin.addon.spreadsheet.Spreadsheet.java
License:Open Source License
/** * Merges the given cells. See/*from ww w . ja v a2 s . com*/ * {@link Sheet#addMergedRegion(CellRangeAddress)}. * <p> * If another existing merged region is completely inside the given range, * it is removed. If another existing region either encloses or overlaps the * given range, an error is thrown. See * {@link CellRangeUtil#intersect(CellRangeAddress, CellRangeAddress)}. * <p> * Note: POI doesn't seem to update the cells that are "removed" due to the * merge - the values for those cells still exist and continue being used in * possible formulas. If you need to make sure those values are removed, * just delete the cells before creating the merged region. * <p> * If the added region affects the currently selected cell, a new * {@link SelectionChangeEvent} is fired. * * @param region * The range of cells to merge * @throws IllegalArgumentException * If the given region overlaps with or encloses another * existing region within the sheet. */ public void addMergedRegion(CellRangeAddress region) throws IllegalArgumentException { final Sheet sheet = getActiveSheet(); // need to check if there are merged regions already inside the given // range, otherwise very bad inconsistencies appear. int index = 0; while (index < sheet.getNumMergedRegions()) { CellRangeAddress existingRegion = sheet.getMergedRegion(index); int intersect = CellRangeUtil.intersect(region, existingRegion); if (intersect == CellRangeUtil.INSIDE) { deleteMergedRegion(index); } else if (intersect == CellRangeUtil.OVERLAP || intersect == CellRangeUtil.ENCLOSES) { throw new IllegalArgumentException("An existing region " + existingRegion + " " + (intersect == CellRangeUtil.OVERLAP ? "overlaps " : "encloses ") + "the given region " + region); } else { index++; } } createMergedRegionIntoSheet(region); selectionManager.mergedRegionAdded(region); }