001package org.nasdanika.html.model.bootstrap.gen;
002
003import org.nasdanika.common.ConsumerFactory;
004import org.nasdanika.common.Context;
005import org.nasdanika.common.FunctionFactory;
006import org.nasdanika.common.ProgressMonitor;
007import org.nasdanika.common.Supplier;
008import org.nasdanika.common.SupplierFactory;
009import org.nasdanika.html.bootstrap.BootstrapFactory;
010
011public class TableSupplierFactoryAdapter extends BootstrapElementSupplierFactoryAdapter<org.nasdanika.html.model.bootstrap.Table, org.nasdanika.html.bootstrap.Table> {
012        
013        public TableSupplierFactoryAdapter(org.nasdanika.html.model.bootstrap.Table table) {
014                super(table);
015        }
016
017        /**
018         * Creates a table, configuration shall be performed in {@link TableCellConsumerFactoryAdapter}.
019         * @param context
020         * @return
021         */
022        protected Supplier<org.nasdanika.html.HTMLElement<?>> createTableSupplier(Context context) {
023                return new Supplier<org.nasdanika.html.HTMLElement<?>>() {
024        
025                        @Override
026                        public double size() {
027                                return 1;
028                        }
029        
030                        @Override
031                        public String name() {
032                                return "Bootstrap table";
033                        }
034        
035                        @Override
036                        public org.nasdanika.html.HTMLElement<?> execute(ProgressMonitor progressMonitor) throws Exception {
037                                return context.get(BootstrapFactory.class, BootstrapFactory.INSTANCE).table().toHTMLElement();
038                        }
039                        
040                };
041        }
042        
043        @Override
044        protected Supplier<org.nasdanika.html.bootstrap.Table> createBootstrapElementSupplier(Context context) throws Exception {
045                
046                SupplierFactory<org.nasdanika.html.HTMLElement<?>> tableSupplierFactory = this::createTableSupplier;
047                ConsumerFactory<org.nasdanika.html.HTMLElement<?>> tableConsumerFactory = new TableConsumerFactoryAdapter(getTarget());
048                FunctionFactory<org.nasdanika.html.HTMLElement<?>,org.nasdanika.html.bootstrap.Table> unWrapperFactory = this::getWrapper;
049                
050                return tableSupplierFactory.then(tableConsumerFactory.asFunctionFactory()).then(unWrapperFactory).create(context);
051        }
052
053}