001package org.nasdanika.html.model.app.graph.emf;
002
003import org.eclipse.emf.common.util.URI;
004import org.nasdanika.common.Context;
005import org.nasdanika.common.ProgressMonitor;
006import org.nasdanika.graph.emf.EObjectNode;
007import org.nasdanika.graph.processor.NodeProcessorConfig;
008import org.nasdanika.html.model.app.Label;
009import org.nasdanika.html.model.app.graph.WidgetFactory;
010
011/**
012 * Base interface for {@link EObjectNodeProcessor} mix-ins to support multiple inheritance
013 * without duplication.
014 */
015public interface EObjectNodeProcessorMixIn<T> {
016        
017        /**
018         * Configures a label for a given source object. This method allows multiple widget factories 
019         * collaborate on label/action configuration. E.g. the primary WidgetFactory may delegate to "facet" factories.  
020         * @param source
021         * @param label
022         * @param progressMonitor
023         */
024        default void configureLabel(Object source, Label label, ProgressMonitor progressMonitor) {
025                
026        }
027        
028        NodeProcessorConfig<WidgetFactory, WidgetFactory> getConfig();
029        
030        Context getContext();
031        
032        public EObjectNode getNode();
033        
034        public T getTarget();
035
036        public URI getUri();
037        
038}