001package org.nasdanika.html.ecore;
002
003import java.util.function.BiFunction;
004import java.util.function.Predicate;
005
006import org.eclipse.emf.ecore.EClass;
007import org.eclipse.emf.ecore.EModelElement;
008import org.eclipse.emf.ecore.ENamedElement;
009import org.eclipse.emf.ecore.EPackage;
010import org.nasdanika.common.Context;
011import org.nasdanika.common.ProgressMonitor;
012import org.nasdanika.html.model.app.Action;
013import org.nasdanika.ncore.util.NcoreUtil;
014
015public class ENamedElementActionSupplier<T extends ENamedElement> extends EModelElementActionSupplier<T> {
016
017        public ENamedElementActionSupplier(
018                        T value, 
019                        Context context, 
020                        java.util.function.Function<EPackage,String> ePackagePathComputer,
021                        Predicate<EModelElement> elementPredicate,
022                        BiFunction<ENamedElement, String, String> labelProvider) {
023                super(value, context, ePackagePathComputer, elementPredicate, labelProvider);
024        }
025        
026        @Override
027        public Action execute(EClass contextEClass, ProgressMonitor progressMonitor) {
028                Action action = super.execute(contextEClass, progressMonitor);
029                action.setText(labelProvider.apply(eObject, getDefaultLabel(progressMonitor)));
030                return action;
031        }
032        
033        protected String getDefaultLabel(ProgressMonitor progressMonitor) {
034                return NcoreUtil.getNasdanikaAnnotationDetail(eObject, "label", eObject.getName());
035        }
036        
037        @Override
038        public String name() {
039                return super.name() + " " + eObject.getName();
040        }
041        
042
043}