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}