001package org.nasdanika.html.ecore; 002 003import java.util.Collection; 004import java.util.function.BiFunction; 005import java.util.function.Predicate; 006import java.util.stream.Collectors; 007 008import org.eclipse.emf.ecore.EClass; 009import org.eclipse.emf.ecore.EDataType; 010import org.eclipse.emf.ecore.EModelElement; 011import org.eclipse.emf.ecore.ENamedElement; 012import org.eclipse.emf.ecore.EPackage; 013import org.nasdanika.common.Context; 014import org.nasdanika.common.ProgressMonitor; 015import org.nasdanika.html.Fragment; 016import org.nasdanika.html.HTMLFactory; 017import org.nasdanika.html.Tag; 018import org.nasdanika.html.TagName; 019import org.nasdanika.html.model.app.Action; 020 021public class EDataTypeActionSupplier extends EClassifierActionSupplier<EDataType> { 022 023 public EDataTypeActionSupplier( 024 EDataType value, 025 Context context, 026 java.util.function.Function<EPackage,String> ePackagePathComputer, 027 java.util.function.Function<String, String> javadocResolver, 028 java.util.function.Function<String, Object> ePackageResolver, 029 Predicate<EModelElement> elementPredicate, 030 BiFunction<ENamedElement, String, String> labelProvider) { 031 super(value, context, ePackagePathComputer, javadocResolver, ePackageResolver, elementPredicate, labelProvider); 032 } 033 034 @Override 035 public Action execute(EClass contextEClass, ProgressMonitor progressMonitor) { 036 Action action = super.execute(contextEClass, progressMonitor); 037 038 // Uses 039 Collection<EClass> uses = getUses().stream().sorted((a,b) -> a.getName().compareTo(b.getName())).collect(Collectors.toList()); 040 if (!uses.isEmpty()) { 041 HTMLFactory htmlFactory = context.get(HTMLFactory.class); 042 Fragment gstf = htmlFactory.fragment(TagName.h3.create("Uses")); 043 044 Tag list = TagName.ul.create(); 045 gstf.content(list); 046 047 for (EClass use: uses) { 048 list.content(TagName.li.create(link(use, eObject))); 049 } 050 addContent(action, gstf.toString()); 051 } 052 053 return action; 054 } 055 056}