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