001package org.nasdanika.html.model.bootstrap.gen; 002 003import java.util.List; 004 005import org.eclipse.emf.common.util.EList; 006import org.nasdanika.common.CollectionCompoundConsumerFactory; 007import org.nasdanika.common.ConsumerFactory; 008import org.nasdanika.common.Context; 009import org.nasdanika.common.Function; 010import org.nasdanika.common.ProgressMonitor; 011import org.nasdanika.emf.EObjectAdaptable; 012import org.nasdanika.html.HTMLElement; 013import org.nasdanika.html.bootstrap.RowContainer; 014import org.nasdanika.html.bootstrap.RowContainer.Row; 015import org.nasdanika.html.model.bootstrap.TableCell; 016import org.nasdanika.html.model.bootstrap.TableRow; 017 018/** 019 * Adds a row to the consumed {@link RowContainer} 020 * @author Pavel 021 * 022 */ 023public class TableRowConsumerFactoryAdapter extends BootstrapElementConsumerFactoryAdapter<org.nasdanika.html.model.bootstrap.TableRow, org.nasdanika.html.bootstrap.RowContainer<?,?>> { 024 025 public TableRowConsumerFactoryAdapter(org.nasdanika.html.model.bootstrap.TableRow tableRow) { 026 super(tableRow); 027 } 028 029 @Override 030 protected Function<HTMLElement<?>, HTMLElement<?>> createConfigureFunction(Context context) throws Exception { 031 EList<TableCell> cells = getTarget().getCells(); 032 @SuppressWarnings("rawtypes") 033 List<ConsumerFactory<HTMLElement>> cellConsumers = EObjectAdaptable.adaptToConsumerFactoryNonNull(cells, org.nasdanika.html.HTMLElement.class); 034 CollectionCompoundConsumerFactory<HTMLElement<?>> rowsConsumerFactory = new CollectionCompoundConsumerFactory<>("Creating cells", cellConsumers); 035 036 return getWrapper(context) 037 .then(createTableRowFunction(context)) 038 .then(toHTMLElement(context)) 039 .then(super.createConfigureFunction(context)) 040 .then(rowsConsumerFactory.asFunctionFactory().create(context)); 041 } 042 043 /** 044 * Takes {@link RowContainer}, creates a row, configures and returns for passing to cell consumers. 045 * @param context 046 * @return Row instance to pass to cell consumers. 047 */ 048 protected Function<org.nasdanika.html.bootstrap.RowContainer<?,?>, org.nasdanika.html.bootstrap.RowContainer.Row> createTableRowFunction(Context context) { 049 return new Function<org.nasdanika.html.bootstrap.RowContainer<?,?>, org.nasdanika.html.bootstrap.RowContainer.Row>() { 050 051 @Override 052 public double size() { 053 return 1; 054 } 055 056 @Override 057 public String name() { 058 return "Table row"; 059 } 060 061 @Override 062 public org.nasdanika.html.bootstrap.RowContainer.Row execute(org.nasdanika.html.bootstrap.RowContainer<?,?> rowContainer, ProgressMonitor progressMonitor) throws Exception { 063 TableRow semanticElement = getTarget(); 064 Row ret = rowContainer.row(); 065 ret.color(semanticElement.getColor()); 066 ret.backgroundColor(semanticElement.getBackground()); 067 return ret; 068 } 069 070 }; 071 } 072 073}