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.eclipse.emf.ecore.EStructuralFeature; 011import org.nasdanika.common.Context; 012import org.nasdanika.common.ProgressMonitor; 013import org.nasdanika.html.bootstrap.Table; 014import org.nasdanika.html.model.app.Action; 015 016public class EStructuralFeatureActionSupplier<T extends EStructuralFeature> extends ETypedElementActionSupplier<T> implements EcoreActionSupplier { 017 018 public EStructuralFeatureActionSupplier( 019 T value, 020 Context context, 021 java.util.function.Function<EPackage,String> ePackagePathComputer, 022 Predicate<EModelElement> elementPredicate, 023 BiFunction<ENamedElement, String, String> labelProvider) { 024 super(value, context, ePackagePathComputer, elementPredicate, labelProvider); 025 } 026 027 @Override 028 public Action execute(EClass contextEClass, ProgressMonitor progressMonitor) { 029 Action action = super.execute(contextEClass, progressMonitor); 030 031 EClass eContainingClass = eObject.getEContainingClass(); 032 action.setId(encodeEPackage( 033 eContainingClass.getEPackage()) 034 + "-" 035 + eContainingClass.getName() 036 + "-" 037 + eObject.eClass().getName() 038 + "-" 039 + eObject.getName()); 040 041 action.setName(eObject.eClass().getName() + "-" + eObject.getName()); 042 return action; 043 } 044 045 @Override 046 protected Table propertiesTable(EClass contextEClass, ProgressMonitor monitor) { 047 Table table = super.propertiesTable(contextEClass, monitor); 048 addRow(table, "Changeable").add(eObject.isChangeable()); 049 addRow(table, "Derived").add(eObject.isDerived()); 050 if (contextEClass != null) { 051 addRow(table, "Declaring class").add(link(eObject.getEContainingClass(), contextEClass)); 052 } 053 054 return table; 055 } 056 057 058}