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}