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}