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;
013
014public class ENamedElementActionSupplier<T extends ENamedElement> extends EModelElementActionSupplier<T> {
015
016        public ENamedElementActionSupplier(
017                        T value, 
018                        Context context, 
019                        java.util.function.Function<EPackage,String> ePackagePathComputer,
020                        Predicate<EModelElement> elementPredicate,
021                        BiFunction<ENamedElement, String, String> labelProvider) {
022                super(value, context, ePackagePathComputer, elementPredicate, labelProvider);
023        }
024        
025        @Override
026        public Action execute(EClass contextEClass, ProgressMonitor progressMonitor) {
027                Action action = super.execute(contextEClass, progressMonitor);
028                action.setText(labelProvider.apply(eObject, getDefaultLabel(progressMonitor)));
029                return action;
030        }
031        
032        protected String getDefaultLabel(ProgressMonitor progressMonitor) {
033                return eObject.getName();
034        }
035        
036        @Override
037        public String name() {
038                return super.name() + " " + eObject.getName();
039        }
040        
041
042}