@Override protected IMemberBoundNode createNode(TableSyntaxNode tableSyntaxNode, OpenL openl, OpenMethodHeader header, XlsModuleOpenClass module) { return new SpreadsheetBoundNode(tableSyntaxNode, openl, header, module); } }
public Spreadsheet getSpreadsheet() { return (Spreadsheet) getMethod(); }
@Override public IMemberBoundNode preBind(TableSyntaxNode tableSyntaxNode, OpenL openl, IBindingContext bindingContext, XlsModuleOpenClass module) throws Exception { SpreadsheetBoundNode sprBoundNode = (SpreadsheetBoundNode) super.preBind(tableSyntaxNode, openl, bindingContext, module); sprBoundNode.preBind(bindingContext); return sprBoundNode; }
public void preBind(IBindingContext bindingContext) throws SyntaxNodeException { if (!bindingContext.isExecutionMode()) { getTableSyntaxNode().setMetaInfoReader(new SpreadsheetMetaInfoReader(this)); } TableSyntaxNode tableSyntaxNode = getTableSyntaxNode(); validateTableBody(tableSyntaxNode, bindingContext); IOpenMethodHeader header = getHeader(); this.bindingContext = bindingContext; componentsBuilder = new SpreadsheetComponentsBuilder(tableSyntaxNode, bindingContext); componentsBuilder.buildHeaders(header.getType()); structureBuilder = new SpreadsheetStructureBuilder(componentsBuilder, header); String headerType = header.getName() + "Type"; OpenL openL = bindingContext.getOpenL(); spreadsheetOpenClass = new SpreadsheetOpenClass(headerType, openL); Boolean autoType = tableSyntaxNode.getTableProperties().getAutoType(); structureBuilder.addCellFields(spreadsheetOpenClass, autoType); }
boolean isCustomSpreadsheetType = SpreadsheetResult.class.equals(getType() .getInstanceClass()) && (!(getType() instanceof CustomSpreadsheetResultOpenClass)) && OpenLSystemProperties .isCustomSpreadsheetType(bindingContext.getExternalParams()); Spreadsheet spreadsheet = new Spreadsheet(getHeader(), this, isCustomSpreadsheetType); spreadsheet.setSpreadsheetType(spreadsheetOpenClass); String message = String.format("Can't define type %s", type != null ? type.getName() : spreadsheet.getName()); SyntaxNodeException exception = SyntaxNodeExceptionUtils.createError(message, e, getTableSyntaxNode()); getTableSyntaxNode().addError(exception); bindingContext.addError(exception);
public void finalizeBind(IBindingContext bindingContext) throws Exception { super.finalizeBind(bindingContext); ILogicalTable tableBody = getTableSyntaxNode().getTableBody(); getTableSyntaxNode().getSubTables().put(IXlsTableNames.VIEW_BUSINESS, tableBody); cells = structureBuilder.getCells(); Spreadsheet spreadsheet = (Spreadsheet) getMethod(); spreadsheet.setCells(cells); spreadsheet.setResultBuilder(componentsBuilder.buildResultBuilder(spreadsheet)); }
private void validateTableBody(TableSyntaxNode tableSyntaxNode, IBindingContext bindingContext) throws SyntaxNodeException { ILogicalTable tableBody = tableSyntaxNode.getTableBody(); if (tableBody == null) { throw SyntaxNodeExceptionUtils.createError("Table has no body! Try to merge header cell horizontally to identify table.", getTableSyntaxNode()); } int height = tableBody.getHeight(); int width = tableBody.getWidth(); if (height < 2 || width < 2) { String message = "Spreadsheet has empty body. Spreadsheet table should has at least 2x3 cells."; BindHelper.processWarn(message, tableSyntaxNode, bindingContext); } }
@Override public CellMetaInfo getBodyMetaInfo(int row, int col) { SpreadsheetCell[][] cells = getBoundNode().getCells(); ICell firstCell = cells[0][0].getSourceCell(); int r = row - firstCell.getAbsoluteRow();