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