/** * * @param tables Tables to be composed. * @param vertical see {@link #vertical} * */ public CompositeGrid(IGridTable[] tables, boolean vertical) { gridTables = tables; this.vertical = vertical; init(); }
private void init() { initWidthAndHeight(); initMappedRegions(); initMergedRegions(); }
public ICell getCell(int column, int row) { if (!vertical) { // Merge header for horizontal table parts Transform t = transform(0, 0); if (t == null){ return null; IGridRegion reg = getRegionContaining(0, 0); IGridRegion region = null; if (reg != null){ region = new GridRegion(reg.getTop(), reg.getLeft(), reg.getBottom(), reg.getLeft() + getWidth() - 1); }else{ region = new GridRegion(row, column, row, column + getWidth() - 1); Transform t1 = transform(0, delegate.getHeight());//Properties parsing and merge if (t1 != null){ ICell delegate1 = t1.grid().getCell(t1.getCol(), t1.getRow()); if (row < delegate.getHeight() + delegate1.getHeight() && PropertiesHelper.PROPERTIES_HEADER.equals(delegate1.getStringValue())){ Transform t2 = transform(delegate1.getWidth(), row); if (t2 != null){ ICell delegate2 = t2.grid().getCell(t2.getCol(), t2.getRow()); Transform t3 = transform(delegate1.getWidth() + delegate2.getWidth(), row); if (t3 != null){ ICell delegate3 = t3.grid().getCell(t3.getCol(), t3.getRow()); if (column >= delegate1.getWidth() + delegate2.getWidth()){ IGridRegion reg = getRegionContaining(delegate1.getWidth() + delegate2.getWidth(), row); IGridRegion region = null; if (reg != null){ region = new GridRegion(reg.getTop(), reg.getLeft(), reg.getBottom(),
CompositeGrid grid = new CompositeGrid(tables, vertical); IGridTable table = new GridTable(0, 0, grid.getHeight() - 1, grid.getWidth() - 1, grid);
private IGridRegion findInCompositeGrid(CompositeGrid compositeGrid, XlsUrlParser p1, IGridRegion region) { int i = 0; for (IGridTable gridTable : compositeGrid.getGridTables()) { if (gridTable.getGrid() instanceof CompositeGrid) { IGridRegion region2 = findInCompositeGrid((CompositeGrid) gridTable.getGrid(), p1, region); if (region2 != null){ IGridRegion region3 = compositeGrid.getMappedRegion(i); int top = region.getTop() - region2.getTop() + region3.getTop(); int bottom = region.getBottom() - region2.getTop() + region3.getTop(); if (XlsUrlUtils.intersects(p1, gridTable.getUriParser())) { IGridRegion region2 = gridTable.getRegion(); IGridRegion region3 = compositeGrid.getMappedRegion(i); IGridRegion tmp = region; if (region.getBottom() - region.getTop() == 0 && region.getRight() - region.getLeft() == 0){//if one cell find merged region
private boolean findInCompositeGrid(CompositeGrid compositeGrid, XlsUrlParser p1) { for (IGridTable gridTable : compositeGrid.getGridTables()) { if (gridTable.getGrid() instanceof CompositeGrid) { if (findInCompositeGrid((CompositeGrid) gridTable.getGrid(), p1)) { return true; } } else { if (XlsUrlUtils.intersects(p1, gridTable.getUriParser())) { return true; } } } return false; }
HashSet<IGrid> gridSet = getGridSet();
public List<IOpenLTable> getAdvancedSearchResults(Object searchResult) { List<IOpenLTable> searchResults = new ArrayList<IOpenLTable>(); if (searchResult instanceof OpenLAdvancedSearchResult) { TableAndRows[] tr = ((OpenLAdvancedSearchResult) searchResult).getFoundTableAndRows(); OpenLAdvancedSearchResultViewer searchViewer = new OpenLAdvancedSearchResultViewer(); for (int i = 0; i < tr.length; i++) { ISearchTableRow[] rows = tr[i].getRows(); if (rows.length > 0) { TableSyntaxNode tsn = tr[i].getTsn(); String tableUri = tsn.getUri(); CompositeGrid cg = searchViewer.makeGrid(rows); IGridTable gridTable = cg != null ? cg.asGridTable() : null; OpenLTable newTable = new OpenLTable(); newTable.setGridTable(gridTable); newTable.setUri(tableUri); newTable.setProperties(tsn.getTableProperties()); searchResults.add(newTable); } } } return searchResults; }
IGrid grid = new CompositeGrid(new IGridTable[] { virtualGridTable, originalTable.getSource() }, true);
private IGridRegion findInCompositeGrid(CompositeGrid compositeGrid, XlsUrlParser p1, IGridRegion region) { int i = 0; for (IGridTable gridTable : compositeGrid.getGridTables()) { if (gridTable.getGrid() instanceof CompositeGrid) { IGridRegion region2 = findInCompositeGrid((CompositeGrid) gridTable.getGrid(), p1, region); if (region2 != null){ IGridRegion region3 = compositeGrid.getMappedRegion(i); int top = region.getTop() - region2.getTop() + region3.getTop(); int bottom = region.getBottom() - region2.getTop() + region3.getTop(); if (XlsUrlUtils.intersects(p1, gridTable.getUriParser())) { IGridRegion region2 = gridTable.getRegion(); IGridRegion region3 = compositeGrid.getMappedRegion(i); IGridRegion tmp = region; if (region.getBottom() - region.getTop() == 0 && region.getRight() - region.getLeft() == 0){//if one cell find merged region
private boolean findInCompositeGrid(CompositeGrid compositeGrid, XlsUrlParser p1) { for (IGridTable gridTable : compositeGrid.getGridTables()) { if (gridTable.getGrid() instanceof CompositeGrid) { if (findInCompositeGrid((CompositeGrid) gridTable.getGrid(), p1)) { return true; } } else { if (XlsUrlUtils.intersects(p1, gridTable.getUriParser())) { return true; } } } return false; }