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}