
org.nasdanika.html.model.html.gen.HtmlElementAdapter Maven / Gradle / Ivy
package org.nasdanika.html.model.html.gen;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.nasdanika.common.BiSupplier;
import org.nasdanika.common.Context;
import org.nasdanika.common.Function;
import org.nasdanika.common.FunctionFactory;
import org.nasdanika.common.ListCompoundSupplierFactory;
import org.nasdanika.common.MapCompoundSupplierFactory;
import org.nasdanika.common.ProgressMonitor;
import org.nasdanika.emf.ComposeableAdapterFactory;
import org.nasdanika.emf.EObjectAdaptable;
import org.nasdanika.html.Container;
import org.nasdanika.html.model.html.HtmlPackage;
/**
* Base class for HTML Element adapters providing common functionality
* @author Pavel
*
* @param
* @param
*/
public abstract class HtmlElementAdapter> extends AdapterImpl {
protected AdapterFactory adapterFactory;
protected AdapterFactory getRootAdapterFactory() {
return adapterFactory instanceof ComposeableAdapterFactory ? ((ComposeableAdapterFactory) adapterFactory).getRootAdapterFactory() : adapterFactory;
}
protected HtmlElementAdapter(M htmlElement, AdapterFactory adapterFactory) {
setTarget(htmlElement);
this.adapterFactory = adapterFactory;
}
protected Adapter getRegisteredAdapter(EObject eObject, Object type) {
Adapter result = EcoreUtil.getExistingAdapter(eObject, type);
if (result != null) {
return result;
}
AdapterFactory factory = getRootAdapterFactory();
return factory == null ? null : factory.adaptNew(eObject, type);
}
/**
* Creates a function which configures the element and returns it.
* This implementation applies attributes and adds content. Override to implement additional configuration.
* You may chain configuration functions with .then
* @param context
* @return
*/
protected Function createConfigureFunction(Context context) {
MapCompoundSupplierFactory attributesFactory = new MapCompoundSupplierFactory<>("Attributes");
for (Entry ae: getTarget().getAttributes()) {
EObject value = ae.getValue();
attributesFactory.put(ae.getKey(), EObjectAdaptable.adaptToSupplierFactoryNonNull(value, Object.class, getRootAdapterFactory()));
}
ListCompoundSupplierFactory
© 2015 - 2025 Weber Informatics LLC | Privacy Policy