001package org.nasdanika.html.model.bootstrap.gen; 002 003import org.nasdanika.common.Context; 004import org.nasdanika.common.Function; 005import org.nasdanika.common.ProgressMonitor; 006import org.nasdanika.html.HTMLElement; 007import org.nasdanika.html.bootstrap.RowContainer; 008import org.nasdanika.html.model.bootstrap.TableCell; 009 010/** 011 * Adds a cell to the consumed row. 012 * @author Pavel 013 * 014 */ 015public class TableCellConsumerFactoryAdapter extends BootstrapElementConsumerFactoryAdapter<org.nasdanika.html.model.bootstrap.TableCell, org.nasdanika.html.bootstrap.RowContainer.Row> { 016 017 public TableCellConsumerFactoryAdapter(org.nasdanika.html.model.bootstrap.TableCell tableCell) { 018 super(tableCell); 019 } 020 021 @Override 022 protected Function<HTMLElement<?>, HTMLElement<?>> createConfigureFunction(Context context) throws Exception { 023 return getWrapper(context) 024 .then(createTableCellFunction(context)) 025 .then(toHTMLElement(context)) 026 .then(super.createConfigureFunction(context)); 027 } 028 029 /** 030 * Takes {@link RowContainer}, creates a row, configures and returns for passing to cell consumers. 031 * @param context 032 * @return Row instance to pass to cell consumers. 033 */ 034 protected Function<org.nasdanika.html.bootstrap.RowContainer.Row, org.nasdanika.html.bootstrap.RowContainer.Row.Cell> createTableCellFunction(Context context) { 035 return new Function<org.nasdanika.html.bootstrap.RowContainer.Row, org.nasdanika.html.bootstrap.RowContainer.Row.Cell>() { 036 037 @Override 038 public double size() { 039 return 1; 040 } 041 042 @Override 043 public String name() { 044 return "Table cell"; 045 } 046 047 @Override 048 public org.nasdanika.html.bootstrap.RowContainer.Row.Cell execute(org.nasdanika.html.bootstrap.RowContainer.Row row, ProgressMonitor progressMonitor) throws Exception { 049 TableCell semanticElement = getTarget(); 050 org.nasdanika.html.bootstrap.RowContainer.Row.Cell ret = semanticElement.isHeader() ? row.header() : row.cell(); 051 int colSpan = semanticElement.getColSpan(); 052 if (colSpan > 0) { 053 ret.toHTMLElement().colspan(colSpan); 054 } 055 int rowSpan = semanticElement.getRowSpan(); 056 if (rowSpan > 0) { 057 ret.toHTMLElement().rowspan(rowSpan); 058 } 059 ret.color(semanticElement.getColor()); 060 ret.backgroundColor(semanticElement.getColor()); 061 return ret; 062 } 063 064 }; 065 } 066 067}