001package org.nasdanika.html.model.html.gen;
002
003import org.eclipse.emf.common.notify.AdapterFactory;
004import org.nasdanika.common.Context;
005import org.nasdanika.common.Supplier;
006import org.nasdanika.common.SupplierFactory;
007
008public abstract class HtmlElementSupplierFactoryAdapter<M extends org.nasdanika.html.model.html.HtmlElement, T extends org.nasdanika.html.HTMLElement<?>> extends HtmlElementAdapter<M,T> implements SupplierFactory<T> {
009        
010        protected HtmlElementSupplierFactoryAdapter(M htmlElement, AdapterFactory adapterFactory) {
011                super(htmlElement, adapterFactory);
012        }
013        
014        @Override
015        public boolean isAdapterForType(Object type) {
016                return type == SupplierFactory.class;
017        }
018                
019        /**
020         * Creates element from content.
021         * @param context
022         * @return
023         */
024        protected abstract Supplier<T> createHTMLElementSupplier(Context context);
025        
026        @Override
027        public Supplier<T> create(Context context){
028                SupplierFactory<T> elementSupplierFactory = this::createHTMLElementSupplier;
029                return elementSupplierFactory.then(this::createConfigureFunction).create(context);
030        }       
031        
032}