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