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}