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}