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