001package org.nasdanika.html.model.bootstrap.gen;
002
003import org.nasdanika.common.ConsumerFactory;
004import org.nasdanika.common.Context;
005import org.nasdanika.common.Function;
006import org.nasdanika.common.ProgressMonitor;
007import org.nasdanika.emf.EObjectAdaptable;
008import org.nasdanika.html.HTMLElement;
009import org.nasdanika.html.model.bootstrap.Appearance;
010import org.nasdanika.html.model.html.gen.HtmlElementConsumerFactoryAdapter;
011
012public class BootstrapElementConsumerFactoryAdapter<M extends org.nasdanika.html.model.bootstrap.BootstrapElement, T extends org.nasdanika.html.bootstrap.BootstrapElement<?,?>> extends HtmlElementConsumerFactoryAdapter<M, org.nasdanika.html.HTMLElement<?>> {
013        
014        public BootstrapElementConsumerFactoryAdapter(M bootstrapElement) {
015                super(bootstrapElement);
016        }
017
018        @Override
019        protected Function<HTMLElement<?>, HTMLElement<?>> createConfigureFunction(Context context) throws Exception {
020                Appearance appearance = getTarget().getAppearance();
021                Function<HTMLElement<?>, HTMLElement<?>> configureFunction = super.createConfigureFunction(context);
022                if (appearance == null) {
023                        return configureFunction;
024                }
025                @SuppressWarnings({ "rawtypes", "unchecked" })
026                ConsumerFactory<HTMLElement<?>> appearanceConsumerFactory = (ConsumerFactory) EObjectAdaptable.adaptToConsumerFactoryNonNull(appearance, org.nasdanika.html.HTMLElement.class);
027                return configureFunction.then(appearanceConsumerFactory.asFunctionFactory().create(context));
028        }
029        
030        /**
031         * Retrieves wrapping bootstrap element.
032         * @param context
033         * @return
034         */
035        protected Function<org.nasdanika.html.HTMLElement<?>, T> getWrapper(Context context) {
036                return new Function<org.nasdanika.html.HTMLElement<?>, T>() {
037        
038                        @Override
039                        public double size() {
040                                return 1;
041                        }
042        
043                        @Override
044                        public String name() {
045                                return "Retrieving wrapping bootstrap element";
046                        }
047        
048                        @SuppressWarnings("unchecked")
049                        @Override
050                        public T execute(HTMLElement<?> htmlElement, ProgressMonitor progressMonitor) throws Exception {
051                                return (T) htmlElement.getData(org.nasdanika.html.bootstrap.BootstrapElement.class);
052                        }
053                        
054                };
055        }
056        
057        /**
058         * Helper function for calling BootstrapElement.toHTMLElement();
059         * @param context
060         * @return
061         */
062        protected Function<org.nasdanika.html.bootstrap.BootstrapElement<?, ?>, org.nasdanika.html.HTMLElement<?>> toHTMLElement(Context context) {
063                return new Function<org.nasdanika.html.bootstrap.BootstrapElement<?, ?>, org.nasdanika.html.HTMLElement<?>>() {
064        
065                        @Override
066                        public double size() {
067                                return 1;
068                        }
069        
070                        @Override
071                        public String name() {
072                                return "To HTML elment";
073                        }
074        
075                        @Override
076                        public HTMLElement<?> execute(org.nasdanika.html.bootstrap.BootstrapElement<?, ?> bootstrapElement, ProgressMonitor progressMonitor) throws Exception {
077                                return bootstrapElement.toHTMLElement();
078                        }
079                        
080                };
081        }
082
083}